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	
posted @ 2022-04-05 21:45  DDH-qiu  阅读(1131)  评论(0编辑  收藏  举报