C51单片机实验——脉冲计数显示(proteus+asm)

前言

  • 脉冲信号输入进2级74LS14整形
    T1接收脉冲信号并计数,显示在LED
  • 外部中断0控制计数器的启动/停止
    外部中断1控制计数器的清零复位
  • P1.0控制LED的段选口使能信号
    P1.1控制LED的位选口使能信号

Proteus电路图

在这里插入图片描述

asm代码

ORG		0000H
LJMP	INIT
ORG		0003H				//外部中断0
LJMP	INT0SUB				
ORG		0013H				//外部中断1
LJMP	INT1SUB

ORG		0100H
INIT:	CLR		P1.0		//控制端复位
		CLR		P1.1
		MOV		DPTR,#TABLE	//指向表头
		MOV		R0,#03H		//循环次数
		MOV		R1,#7FH		//位选信号
		MOV		TMOD,#50H	//工作模式
		MOV		TL1,#00H	//初始化
		SETB	EA			//启动总中断
		SETB	EX0			//启动外部中断0
		SETB	EX1			//启动外部中断1
		SETB	TR1			//启动计数器1
			
TRANS:	SETB	TR1			//启动计数器1
		MOV		A,TL1		//16进制转10进制
		MOV		B,#10
		DIV		AB
		MOV		40H,B		//个位
		MOV		B,#10
		DIV		AB
		MOV		41H,B		//十位
		MOV		42H,A		//百位		

MAIN:	MOV		A,R1		//位选信号
		MOV		P0,A		//输出位信号
		SETB	P1.1		//上升沿
		CLR		P1.1
		MOV		A,40H		//段选信号
		MOVC	A,@A+DPTR
		MOV		P0,A		//输出段信号
		SETB	P1.0		//上升沿
		CLR		P1.0
		
		MOV		40H,41H		//改变段选信号
		MOV		41H,42H
		MOV		A,R1		
		RR		A			//位选右移
		MOV		R1,A
		LCALL	DELAY		//延时1ms
		DJNZ	R0,MAIN		//循环3次
		MOV		R0,#03H		//循环次数复位
		MOV		R1,#7FH		//位选信号复位
		SJMP	TRANS		
		
INT0SUB:CLR		TR1			//启动/停止
		RETI

INT1SUB:MOV		TL1,#00H	//清0
		RETI

TABLE:	DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH	//段选表
	
DELAY:	MOV		30H,#2		//延时1ms
		MOV		31H,#234
NEXT:	DJNZ	31H,NEXT
		DJNZ	30H,NEXT
		RET

END

注:本例程只编写了TL1值的显示,上限255
(显示TH1或其他位的值同理,增加段选信号存放区域即可)

效果图

在这里插入图片描述

  • 10
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值