汇编八、汇编控制静态数码管显示数字

1、实现目标

通过汇编语言,实现单个静态数码管依次循环显示0~9。

2、数码管

2.1、数码管外观

2.2、数码管工作原理

(1)数码管的亮灭是由内部LED的亮灭实现的。

(2)一位数码管内部有八颗LED灯,利用内部的LED灯的亮和灭让数码管显示不同的数字。

3、原理图及连接

(1)P0端口连接静态数码管(JP3)

(2)IO口对应数码段。

P0.0对应aP0.1对应b

P0.2对应c

P0.3对应d

P0.4对应eP0.5对应fP0.6对应gP0.7对应dp

(3)数码管为共阳数码管。

(4)P0端口的对应IO输出低电平,对应数码段被点亮,输出高电平,数码管熄灭。

4、示例程序

4.1、DB定义字节伪指令

(1)格式:

        标号:

                DB X1,X2,…,Xn

(2)标号可有可无,Xi是单字节数据,它可为十进制数或十六进制数,可以为一个表达式,也可以是在单引号中的字符,表示ASCII码的字符,两个数据之间用逗号“,”分开。

(3)DB指令通知汇编程序从当前ROM地址开始,保留存储单元,并存入DB后面的数据。

例如下面的代码。

ORG 1000H
DB 0xAA
SDATA(标号):

        DB 25,25H

经汇编后,从地址1000H处的存储器的内容如下:

(1000H)=0xAA
(1001H)=19H=25(十进制)
(1002H)=25H

4.2、程序

;P0口接LED数码管
;-------------------------------------
    ORG 0000H    ;ORG为程序段说明伪指令,它向汇编程序说明该程序段的起始地址,所以可以当中断向量地址用	
	LJMP L_Main  ;跳转到L_Main标号处
L_Main:
	;your code
	MOV DPTR,#T_table  ;T_table所在地址赋值给DPTR
	MOV R0,  #0x00     ;把立即数赋值给寄存器R0 
L_loop:
	MOV A, R0
	MOVC A,@A+DPTR    ;基地变址寻址
	MOV P0,A         
	LCALL F_Delay1S  ;调用子程序,函数_延时1秒
	
	INC R0
	CJNE R0,#10,L_loop ;如果R0不等于10就跳转到L_1oop
	MOV R0,#0x00       ;R0等于10了就清零
	LJMP L_loop      ;跳转到标号L_loop处
	SJMP $           ;在当前位置死循环
;---------------------------------------
F_Delay1S:                 ;1S = 2us*500000	(50*100*100)
	MOV R7,#50             ;立即数50赋值给寄存器R7
L_loop2:
	MOV R6,#100            ;立即数100赋值给寄存器R6
L_loop1:
  	MOV R5,#100            ;立即数100赋值给R5寄存器
	DJNZ R5,$	           ;R5寄存器值减1,不是零就跳转到当前位置,即减到零才跳出循环
	DJNZ R6,L_loop1        ;相当于了100*100了
	DJNZ R7,L_loop2        ;相当于50*100*100了
	RET

;---------------------------------------
T_table:
	;声明并初始化数据。
	;声明数据的本质就是:在内存中占用一块空间 ;
	;初始化数据的本质就是:给这个空间赋予一个值 。
	DB	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90  
	END


  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码织梦师小猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值