熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2023-2-19 11:00
正文摘要:程序如下:問題:當(dāng)我用多個(gè)_nop_()做延時(shí),LED2燈就會亮(我用LED檢測應(yīng)答,如果單片機(jī)沒收到應(yīng)簽就亮起),數(shù)碼管顯示正常。如果延時(shí)用for語句,for內(nèi)就一個(gè)_nop_(),LED2燈就不會亮,數(shù)碼管也正常。不知為什么, ... |
lkc8210 發(fā)表于 2023-2-19 21:04 ![]() |
以下仿真用12Mhz開始時(shí)間:75.25us![]() 運(yùn)行For之后:78.75us, 耗時(shí):3.5us ![]() 運(yùn)行nop之后:79.92us, 耗時(shí):1.17us ![]() 用nop延時(shí)的時(shí)間太短 不足以讓1637返回Ack(拉低電平) 但1637收到命令和數(shù)據(jù) 所以也可以正常顯示 |
void I2C_delay(void) //延時(shí)4us 在11059200時(shí)鐘下一個(gè)nop為1us { uint8 i; //不用for語句用_nop();LED2會亮起,說明檢測應(yīng)答有誤 //_nop_(); //_nop_(); //_nop_(); //_nop_(); for(i=0;i<3;i++){ _nop_(); } 把for(i=0;i<1;i++)中的 i<1,改為 i<3, 循環(huán)4次,應(yīng)該可以. 并不是一個(gè)_nop_()不行,而是單片機(jī)就算響應(yīng)了,數(shù)碼管來不及響應(yīng)就過了,試試看吧 |
都是在同一個(gè)芯片上運(yùn)行的 |
STC15F2K60S2是1T單片機(jī),一個(gè)_nop_()延時(shí)時(shí)間在12MHz晶振12T單片機(jī)是1us,換了運(yùn)行環(huán)境就大相徑庭了。 |
Powered by 單片機(jī)教程網(wǎng)