51汇编--定时器与计数器

;在同一个应用程序中实现下述功能
;1.用定时器0的方式1定时,P1.7接发光二极管L7,使该发光二极管每秒钟
;闪烁5次,要求采用中断方式。尝试改变闪烁频率,观察闪烁效果。
;2.用定时器1的方式2计数,T1脚接单脉冲发生器输出,用(P1.0~P1.6连
;接7个发光二极管L0~L6)来显示计数值(不使用中断)。

代码

	ORG 0000H
	LJMP MAIN
	ORG 000BH;T0中断入口
	LJMP T0_INT
	ORG 0100H
MAIN:
    CLR A
    MOV TL1, A
    MOV TH1, A
	MOV P1,A
	MOV TMOD,#61H
	MOV TL0,#15536 MOD 256
	MOV TH0,#15536/256
	SETB EA
	SETB ET0
	SETB TR0
	SETB TR1
	MOV R7,#10;存放T0中断次数,改为10便于观察闪烁次数
	MOV R6,TL1
    MOV R0, #10;闪烁5次共10次操作
LOOP:
	CLR C
	MOV A,TL1
	SUBB A,R6;判断计数值是否变化
	JZ LOOP;如果累加器为0则转移,相当于计数值没变
READ:
	MOV A,TL1
    MOV R6, TL1
    CJNE A, TL1,READ;校验两次读到的TL1是否相同
	MOV C,P1.7;保留最高位
	MOV ACC.7,C;将最高位恢复到即将写入的数据
	MOV P1,A
	SJMP LOOP
T0_INT:
A1:	DJNZ R7,BACK
	CPL P1.7
	MOV R7,#10
    DJNZ R0, BACK
    CLR TR0;5次闪烁共10次操作完毕,关闭定时器0
    SJMP A2;返回主程序
BACK: 
    MOV TL0,#15536 MOD 256;给定时器0重装初值
	MOV TH0,#15536/256
A2: RETI
	END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值