AT89C51 汇编语言实现LED间隔1s闪烁(已验证)

AT89C51 汇编语言实现LED间隔1s闪烁(已验证)
keil5编译

;************;
;中断入口程序;
;************;
;
ORG     0000H    ;程序执行开始地址
LJMP    START    ;跳至START执行
ORG     0003H    ;外中断0中断入口地址
RETI             ;中断返回(不开中断)
ORG     000BH    ;定时器T0中断入口地址
RETI             ;中断返回(不开中断)
ORG     0013H    ;外中断1中断入口地址
RETI             ;中断返回(不开中断)
ORG     001BH    ;定时器T1中断入口地址
RETI             ;中断返回(不开中断)
ORG     0023H    ;串行口中断入口地址
RETI             ;中断返回(不开中断)
;
START:      MOV     A,#0FEH    		;让A的内容为11111110
LOOP:       MOV     P1,A           ;让P1口输出ACC的内容
			CPL		A
            CALL    DELAY       ;调用延时子程序
            LJMP    LOOP         ;跳到LOOP处执行
;0.1秒延时子程序(12MHz晶振)===================
DELAY: MOV      R7,#10    ;延时1S子程序
DL1:   MOV      R6,#200
DL2:   MOV      R5,#248
       DJNZ     R5,$
       DJNZ     R6,DL2
       DJNZ     R7,DL1
        RET
		END
  • 13
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是AT89C51汇编语言的数码管动态显示1234的代码: ``` ORG 0H ; 程序起始地址 MOV DPTR, #LUT ; 将查找表地址存入DPTR寄存器 MOV R0, #0H ; 初始化R0寄存器为0 MOV R2, #0H ; 初始化R2寄存器为0 MOV R3, #0H ; 初始化R3寄存器为0 MOV R4, #0H ; 初始化R4寄存器为0 LOOP: MOV A, R0 ; 将R0寄存器的值存入累加器A中 MOVX A, @DPTR ; 将查找表中的值存入累加器A中 MOV P1, A ; 将累加器A中的值存入P1口,控制数码管显示 ACALL DELAY ; 延时 INC DPTR ; DPTR寄存器指向下一个查找表的地址 INC R2 ; R2寄存器自增1 CJNE R2, #4, LOOP ; 如果R2寄存器不等于4,则跳转到LOOP INC R3 ; R3寄存器自增1 MOV R2, #0H ; R2寄存器重新赋值为0 CJNE R3, #4, LOOP ; 如果R3寄存器不等于4,则跳转到LOOP INC R4 ; R4寄存器自增1 MOV R3, #0H ; R3寄存器重新赋值为0 CJNE R4, #4, LOOP ; 如果R4寄存器不等于4,则跳转到LOOP SJMP LOOP ; 跳转到LOOP DELAY: MOV R5, #255 ; 初始化R5寄存器为255 DELAY1: MOV R6, #255 ; 初始化R6寄存器为255 DELAY2: DJNZ R6, DELAY2 ; R6寄存器自减1,如果不为0,则跳转到DELAY2 DJNZ R5, DELAY1 ; R5寄存器自减1,如果不为0,则跳转到DELAY1 RET ; 返回 LUT: DB 3FH ; 数字0的编码 DB 06H ; 数字1的编码 DB 5BH ; 数字2的编码 DB 4FH ; 数字3的编码 DB 66H ; 数字4的编码 DB 6DH ; 数字5的编码 DB 7DH ; 数字6的编码 DB 07H ; 数字7的编码 DB 7FH ; 数字8的编码 DB 6FH ; 数字9的编码 ``` 在以上代码中,我们首先将查找表的地址存入DPTR寄存器中,然后初始化R0、R2、R3和R4寄存器为0。在LOOP标签处,我们首先将R0寄存器的值存入累加器A中,然后将查找表中对应的值存入累加器A中,将累加器A中的值存入P1口,控制数码管显示。然后我们进行一定的延时,再将DPTR寄存器指向下一个查找表的地址。当R2寄存器等于4时,我们将R2寄存器重新赋值为0,并将R3寄存器自增1。当R3寄存器等于4时,我们将R3寄存器重新赋值为0,并将R4寄存器自增1。当R4寄存器等于4时,我们将程序跳转回LOOP标签处。在DELAY标签处,我们通过循环延时的方法实现了程序的延时效果。最后,我们定义了一个查找表,将数字0到9的编码存入其中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值