51单片机定时器(以TIMER0为例)

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

附:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值