返回首页
当前位置: 主页 > 定时器/计数器 >

单片机定时器编程举例——采用定时器/计数器T0对外部脉冲进行计

时间:2009-07-09 20:58来源:未知 作者:牛牛 点击:
采用定时器 / 计数器 T0 对外部脉冲进行计数,每计数 100 个脉冲后, T0 转为定时工作方式。定时 1ms 后,又转为计数方式,如此循环不止。假定 MCS-51 单片机的晶体振荡器的频率为 6MHz ,请使用方式 1 实现,要求编写出程序。 解答:定时器 / 计数器 T0 在
采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。

解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。编写程序如下: 内容来自单片机之家www.dpj100.com

              ORG       0000H 单片机

              LJMP      MAIN

单片机

              ORG       000BH

单片机

              LJMP      IT0P 单片机

MAIN:    MOV      TMOD,#06H  ;定时器/计数器T0为计数方式2 单片机

              MOV      TL0,#156              ;计数100个脉冲的初值赋值

内容来自单片机之家www.dpj100.com

              MOV      TH0,#156

单片机

              SETB      GATE             ;打开计数门 单片机

              SETB      TR0               ;启动T0,开始计数

单片机

              SETB      ET0               ;允许T0中断 单片机

              SETB      EA                 CPU开中断

单片机

              CLR        F0                 ;设置下一轮为定时方式的标志位

内容来自单片机之家www.dpj100.com

WAIT:     AJMP     WAIT 单片机

IT0P:      CLR        EA                 ;关中断

单片机

              JB           F0,COUNT     F0=1,转计数方式设置

单片机

              MOV      TMOD,#00H  ;定时器/计数器T0为定时方式0

内容来自单片机之家www.dpj100.com

              MOV      TH0,#0FEH    ;定时1ms初值赋值

单片机

              MOV      TL0,#0CH

内容来自单片机之家www.dpj100.com

              SETB      EA 内容来自单片机之家www.dpj100.com

              RETI 单片机

COUNT:  MOV      TMOD,#06H 单片机

              MOV      TL0,#156       单片机

              SETB      EA 内容来自单片机之家www.dpj100.com

              RETI 内容来自单片机之家www.dpj100.com

顶一下
(18)
72%
踩一下
(7)
28%
------分隔线----------------------------
推荐内容