汇编实现数码管加一减一

软件:proteus 8/keil5

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6a2U56ybICYgaW50ZXI=,size_20,color_FFFFFF,t_70,g_se,x_16

P3.1实现加一、P3.3实现减一

		ORG 0000H
		AJMP MAIN
MAIN:	LCALL CSH

MAIN1: 	LCALL KEY                    ;按键处理
		LCALL BCD                    ;30`33H分别保存数码管1~4显示的数字
		LCALL XS                     ;一个数码管工作时
		JMP	MAIN1
		
CSH:	MOV	R7,#125                ;设定初始值为125
		RET
		
KEY:	JB P3.1,KEY2                ;P3.1连接按键低电平有效,高电平则检测P3.3按键状态
		JNB P3.1,$                   ;等待按键松开
		INC R7                        ;数码管显示加1
		CJNE R7,#250,KEY2            ;由于16位寄存器只有DPTR、PC,所以单寄存器存取数时,只
		MOV R7,#250                    ;有256个数的范围波动
		
KEY2:	JB P3.3,KEY3
		JNB P3.3,$
		DEC R7                        ;数码管显示减1
		CJNE R7,#100,KEY3
		MOV R7,#100
		
KEY3:	RET                            ;LCALL与RET相对应

BCD:	MOV	30H,#0                    ;通过DIV指令,将该数个、十、百位存放在33H、32H、31H
		MOV A,R7
		MOV	B,#100
		DIV	AB
		MOV	31H,A
		MOV A,B
		MOV	B,#10
		DIV	AB
		MOV	32H,A
		MOV 33H,B
		RET
		
XS:		MOV	R6,#4                          ;有4个数码管
		MOV R5,#0FEH                        ;设定第一位数码管位选
		MOV	R0,#30H                        
		MOV DPTR,#TAB
	
		
LOOP:	MOV A,@R0
		MOVC A,@A+DPTR
		MOV	P0,A                            ;通过这三个指令,找到千位0所对应的段选
		MOV	P2,R5                            ;送位选
		LCALL DELAY
		MOV P2,#0FFH                            ;消隐
		MOV A,R5
		RL	A
		MOV R5,A                                ;通过A寄存器,将位选左移,变为第二个数码管            
                                                   ;的位选
		INC R0                                
		DJNZ R6,LOOP
		RET

DELAY:	MOV R4,#20
		DJNZ R4,$
		RET
		
TAB:	DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
		END

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️梅花十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值