C51定时器/计数器编程(51汇编)

**题目一

采用定时器/计数器T0对外部脉冲技术,每计数100个脉冲后,T0转为定时器工作方式。定时1ms后,又转为计数器工作方式,如此循环不止,假设单片机的晶振为6MHz。**

			ORG		0000H
			LJMP	MAIN
			ORG		000BH
			LJMP	IT0P
	MAIN:	MOV		TMOD, #06H		;计数器T0为计数方式2
			MOV		TL0, #156		;计数100个脉冲的初值赋值
			MOV		TH0, #156
			SETB	GATE			;打开计数门
			SETB	TR0				;启动T0,开始计数
			SETB	ET0				;允许T0中断
			SETB	EA				;CPU开中断
			CLR		F0				;设置下一轮定时方式标志位
	WAIT:	AJMP	WAIT
	IT0P:	CLR		EA				;CPU关中断
			JB		F0, COUNT		;F0=1,转计数方式设置
			MOV		TMOD, #00H		;定时器T0为定时方式0
			MOV		TH0, #0FEH		;定时1ms初值赋值
			MOV		TL0, #0CH
			SETB	EA
			RETI
	COUNT:	MOV		TMOD, #06H
			MOV		TL0, #156
			SETB	EA
			RETI
			END

**题目二

编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:1的矩形脉冲。**

			ORG		0000H
			LJMP	MAIN
			ORG		000BH
			LJMP	IT0P
	MAIN:	MOV		TMOD, #02H		;计数器T0为定时方式2
			MOV		TL0, #4AH		;定时364us初值赋值		
			SETB	TR0				;启动T0,开始计数
			SETB	ET0				;允许T0中断
			SETB	EA				;CPU开中断
			SETB	P1.0
	WAIT:	AJMP	WAIT
	IT0P:	CLR		EA
			CLR		P1.0
			MOV		R0, #9
	DLY:	DJNZ	R0,	DLY		;延时36us
			MOV		TL0, #4AH	;定时364us初值赋值
			SETB	P1.0
			SETB 	EA
			RETI
END
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值