c2051汇编语言让单灯闪烁,C51汇编语言

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

硬件电路:AT89C2051为原型的STC系列微控制芯片,6MHz晶振(STC可以省略), P1口分别接8个LED的阴极,同时串入220欧的限流电阻,阳极接电源+5V。按键接P3.2口,利用外部中断来判断按键。

实现简单功能:点亮的LED可以从左到右再从右到左不断循环,按键用来调节速度。

问题:

1、用了太多的存储空间,整段程序框架能否进一步优化,比如运用进栈、出栈指令,或别的写法。

2、最不满意地方在于给定时器赋初值,中断程序与主干程序都用了一样的指令,这部分是否存在更好的写法。

3、在6MHz晶振下,定时器最大定时为131072微秒,保持原有功能不变,如何修改程序实现更长时间的速度调节。

4、这个简单功能如果用C会比汇编更高效、更节省存储么。

5、会有视觉暂留效果么,如果有在哪个时间点出现。

ORG 000H

SJMP 030H

ORG 003H

SJMP BTN

ORG 030H

MOV TMOD,#01H

MOV IE,#81H

T: MOV R2,#00H

MOV R4,#0EH

J: MOV DPTR,#500H

MOV TL0,30H

MOV TH0,31H

MOV A,R2

MOVC A,@A+DPTR

INC R2

MOV P1,A

JNB TF0,$

CLR TF0

DJNZ R4,J

SJMP T

BTN: CLR TR0

MOV DPTR,#400H

MOV A,R3

MOVC A,@A+DPTR

MOV TL0,A

MOV 30H,A

INC R3

MOV A,R3

MOVC A,@A+DPTR

MOV TH0,A

MOV 31H,A

INC R3

JNB P3.2,$

CJNE A,#02H,I

MOV R3,#00H

I: SETB TR0

RETI

ORG 400H

;TL0TL0

DW 0CFEH ;1ms

DW 18FCH ;2ms

DW 24FAH ;3ms

DW 3CF6H ;5ms

DW 60F0H ;8ms

DW 9CE6H ;13ms

DW 0FCD6H ;21ms

DW 98BDH ;34ms

DW 9494H ;55ms

DW 0D08AH ;60ms

DW 0C81H ;65ms

DW 4877H ;70ms

DW 846DH ;75ms

DW 0C063H ;80ms

DW 3850H ;90ms

DW 0B03CH ;100ms

DW 641FH ;115ms

DW 1802H ;130ms

ORG 500H

DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH

END

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值