51单片机的应用——利用定时器控制输出对称方波

        单片机晶振为12MHz,编程实现T0模式1下在P1.1处输出周期为td的对称方波。

分析:利用定时器定时溢出控制P1.1输出的反相,达到输出周期方波

          51的TOMD控制着定时器T0的工作,首先设置TMOD中的值

        

         未用到的位默认为0,此处需要用到定时器0模式1,故TMOD=0000 0001B=01H

        定时器的初值决定了它的定时时间,那么定时器的初值应该为多少呢?根据题目要求,要输出的方波周期为td,即td/2使输出翻转一次,故定时时间为td/2,设td=3ms

        模式1下的定时器是16位的,故初值计算如下:

X= 2^{16} - \frac{t_{d}}{_{Tm}}

算得X=0FA24H

        Tm代表机器周期,是状态周期的6倍,时钟周期的12倍,时钟周期是晶振的倒数。

程序逻辑实现(51汇编)

MOV TMOD, #01H    ;初始化TMOD
MOV TH0 , #0FAH   ;初始化T0
MOV TL0 , #24H
SETB TR0          ;启动T0,开始定时

LOOP:JBC TF0,OVFL ;若计满溢出,则置TF=0并跳转至OVFL,否则一直查询
     AJMP LOOP    ;无条件转移

OVFL:MOV TH0,#0FAH;不要忘了重新给T0装填初值
     MOV TL0,#24H
     CPL P1.1     ;取反P1.1,实现输出周期对称波
     AJMP LOOP    

 总结:利用定时器使单片机输出对称方波,可利用定时使输出反转,定时时间控制输出的周期,注意翻转时间是周期的一半。        程序中需要设置TMOD、T0的初值,启动T0与查询结构。        JBC指令在查询对象为1时清0跳转,很适合标志位的查询。

图片来源:百度百科 

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值