|
發布時間: 2020-7-2 15:51
正文摘要:是這樣的 自己看著視頻學51單片機過程中,延時函數都是用stc-isp得到的,然后這兩天看到紅外通信,需要一邊延時一邊判斷,代碼都是類似如下的形式,想知道都是怎么寫出來的,希望大佬們解答 非常感謝!!!(就是類 ... |
|
1)空操作延時 (12MHz) void delay10us() { _NOP_(); _NOP_(); _NOP_(); _NOP_(); _NOP_(); _NOP_(); } 2)循環延時 (12MHz) Void delay500ms() { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); } 延時總時間=[(k*2+3)*j+3]*i+5 k*2+3=165 us 165*j+3=33333 us 33333*i+5=500000 us=500 ms 3)計時器中斷延時(工作方式2) (12MHz) #include<reg52.h> sbit led=P1^0; unsigned int num=0; void main() { TMOD=0x02; TH0=6; TL0=6; EA=1; ET0=1; TR0=1; while(1) { if(num==4000) { num=0; led=~led; } } } void T0_time() interrupt 1 { num++; } 4)C程序嵌入組合語言延時 #pragma asm …… 組合語言程序段 …… #pragma endasm |
|
sloop: mov cx,0018h;延時程序 LOOP $ dec ax jnz sloop ret |
| 對了 圖是在站內粘貼過來的 http://www.raoushi.com/bbs/dpj-165191-1.html |