怎么编写单片机晶振为6MHz,编写100ms延时程序?
设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考。
其它汇编可以类似编程。
SSSS:MOV R0,#99;本指令是单周期指令,用时1usKKKK0:DJNZ R0,KKKKK;2usMOV R1,#125;1usLLLL0:DJNZ R1,LLLLL;2usNOP;1usNOP;1usNOP;1usNOP;1usLLLLL:SJMP LLLL0;2usNOP;1usNOP;1usNOP;1usNOP;1usNOP;1usKKKKK:SJMP KKKK0;2usNOP;1usNOP;1usNOP;1usNOP;1usNOP;1usRET;2us这段程序延时时间是1+99*[2+1+125*(2+1+1+1+1+2)+1+1+1+1+1+2]+1+1+1+1+2=100000us=100ms可以适当调整循环常数99、125以求减小NOP(空操作指令),使程序更加精练。
dshxxf程序不错,但延时时间是50301us,计算如下1+100*(1+2*250+3)
单片机系统晶振为6MHz,编写一个0.8秒的延时程序,采用定时器0,...
DELAY1MS: MOV R6,#47HDL0:MOV R5,#02HDJNZ R5,$DJNZ R6,DL0RETvoid delay1ms(void) {unsig