ARM汇编语言——8段LED数码管显示

本文介绍了一段用于8段LED显示器的汇编程序,该程序通过读取压缩BCD码显示4位十进制数。详细解析了如何从内存中读取数据,并通过位操作选择正确的显示段码,最终将结果显示在共阴极LED显示器上。

要求:0~9这10个数字的8段LED显示代码被定义在一个名为LED_DATA的数据段中,LED_TAB存放在内存中,我们将0
~9显示段码存放在内存中的LED_TAB字段中。要显示的4位十进制数以2字节(16位)组合(压缩)BCD码形式由DisBuf变量指示,现要求显示这4个数字,已知LED显示器的地址为0x80001003(千位)、0x80001002(百位)、0x80001001(十位)、0x80001000(个位)。
汇编程序如下:

			AREA Display,CODE,READONLY
			ENTRY
			CODE32
START		LDR R1,=0X80001000						
			LDR R0,=DisBuf							
			MOV R3,#0								
			MOV R4,#0X0000000F						
			LDR R2,[R0]								
MainLP		AND R2,R2,R4							
			LDR R5,=LED_TAB							
			MOV R4,R4,LSL#4							
			MOV R6,R3,LSL#2							
			MOV R2,R2,LSR R6						 
			ADD R5,R5,R2							
			LDR R6,[R5]								
			STR R6,[R1]								
			ADD R1,R1,#1							
			ADD R3,R3,#1							
			CMP R3,#3								
			BMI MainLP								
			B START									
AREA 		LED_DATA,DATA,READWRITE					
LED_TAB DB	3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 
DisBuf  DCW 0x1234									
			END

其中,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH分别代表8段LED显示的数字0~9。8段LED数码显示管如下所示:
在这里插入图片描述
对于共阴极数码管,只有当引脚a~g为高电平(即为1)时,二极管才能被点亮,而共阳极数码管则恰好相反。此题默认为是共阴极数码管。所以当要显示数字0时,a,b,c,d,e,f段数码管应该被点亮,对应的字节即为0011 1111换算成16进制即为3FH,这里a充当最低位,最高位是小数点位Dp。其他情况同理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值