51汇编-时器T0模式2进行定时以及计数器示例
当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲
;-----------------
;Title:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲
;Authors:DDH-qiu
;Date:2022-4-5
;Abstract:定时器T0模式2进行定时以及计数器的使用
;-----------------
ORG 0000H ;伪指令下一条指令的起始地址0000H
LJMP START ;LJMP长跳转到START标号
ORG 0080H ;伪指令下一条指令的起始地址为0080H
START:MOV TMOD,#06H ;START标号,设置定时器(0000 0110)选择定时器0工作方式为计数器,工作模式2
MOV TH0,#0FFH ;定时器初始化TL0高8位
MOV TL0,#0FFH ;定时器初始化TH0低8位(工作模式2要使THi=TLi)
SETB TR0 ;将TR0置1,启动计数器
LOOP1:JBC TF0,PTF01 ;判断定时器T0溢出标志位,JBC判位变量并清0转移指令
;判断TF0如果TF0等于1,就跳转(并且清零TF0),如果等于0就顺序执行
SJMP LOOP1 ;SJMP相对转移(短转移)指令,转移到LOOP1标号(实现计数等待)
PTF01:CLR TR0 ;PTF01标号,CLR(清零)将TR0标志位清零,停止计数功能
MOV TMOD,#02H ;将定时器T0设置为定时工作方式,工作模式2
MOV TH0,#06H ;定时器初始化高8位
MOV TL0,#06H ;定时器初始化低8位
CLR P1.0 ;将P1.0位清零(置为低电平)
SETB TR0 ;将TR0位置1,启动定时
LOOP2:JBC TF0,PTF02 ;LOOP2标号,判断定时器T0溢出标志位,JBC判位变量并清0转移指令
;判断TF0,如果TF0等于1,就跳转到PTF02(并清零TF0),如果等于0就顺序执行
SJMP LOOP2 ;SJMP相对转移(短转移)指令,转移到LOOP2标号中(实现定时等待)
PTF02:SETB P1.0 ;将P1.0置1(置为高电平)
CLR TR0 ;清零TR0,停止定时器T0定时
SJMP START ;相对转移(短跳转)跳转到START标号重复执行计数一次定时500us的功能
END