1、设置定时器的操作模式
默认为13位定时器模式,将11H(M1/M0)写入TMOD寄存器分割定时器模式,T0和T1都设置为16位定时器模式
MOV TMOD,#11H
2、设置定时器初始值(50ms)
石英晶振频率为12MHz,机器周期为1微秒(另外若晶振频率为4MHz其机器周期为3微秒),将定时器设置为该模式后,能够计数的总时长为2的16次(TH0 8位+TL0 8位=16位),即65536微秒=65.536ms,现在为定时器定时50ms=50000微秒,只需为定时器设置初始值
MOV TH0,#HIGH(15536)
MOV TL0,#LOW(15536)
3、为定时器加入关闭和开启操作
定时器计满后需要关闭,关闭后开启定时器正式重新开始定时,这部分应一直重复
TIMERLOOP:CLR TR0
MOV TH0,#HIGH(15536)
MOV TL0,#LOW(15536)
SETB TR0
4、等待定时器计满后执行下一步
定时器计满TF0为1,未计满为0,定时器计满前让程序重复执行同一行代码
REQUEST:JNB TF0,$
GOON:CLR TF0
JMP TIMERLOOP
5、实现功能
加入单灯左移
START:MOV TMOD,#11H ;设置定时器模式
MOV A,#0FEH
TIMERLOOP:MOV P3,A ;循环开始
CLR TR0 ;关闭Timer0
MOV TH0,#HIGH(15536) ;设置初始值,15536高8位
MOV TL0,#LOW(15536) ;设置初始值,15536低8位
SETB TR0 ;启动Timer0
REQUEST:JNB TF0,$ ;等待定时器中断标志
ROLLLEFT:RL A
CLR TF0 ;清空定时器中断标志
JMP TIMERLOOP ;重新循环
END
附: