
定时100ms的计数值 =100ms/2μs =50000
设T1工作于方式1(16位计数器)
计数初值 =2^16 -50000=65536=15536=3CB0H
MOV TMOD,#10H T1工作方式1、定时模式
MOV TH1,#3CH 写入计数初值高8位
MOV TL1,#B0H 写入计数初春和值低8位行森模
SETB TR1 启动T1,开档缓始计时
SETB ET1 允许T中断
SETB EACPU开中断
SJMP $等待T1计时溢出中断
DELAY:MOV R3,#100 2
DLY0:
MOV R2,#249 2*100
DLY1:
DJNZ R2,DLY1 249*2*100
MOV R2,#248 2*100
DLY2:
DJNZ R2,DLY2 248*2*100
DJNZ R3,DLY0 2*100
RET2
以上假设12M晶振,陵嫌滚延时者举共2+(249*2+2+248*2)*100+2=100004微尺余妙=100.004毫秒
设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考。其它汇编可以类似编程。SSSS:MOV R0,#99本指令是单罩举周期指令,用时1us
KKKK0:DJNZ R0,KKKKK2us
MOV R1,#1251us
LLLL0:DJNZ R1,LLLLL2us
NOP1us
NOP1us
NOP1us
NOP1us
LLLLL:SJMP LLLL02us
NOP1us
NOP1us
NOP1us
NOP1us
NOP1us
KKKKK:SJMP KKKK02us
NOP1us
NOP1us
NOP1us
NOP1us
NOP1us
RET2us
这段程序延时时间是
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)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)