求帮修改8051汇编跑马灯程序:

求帮修改8051汇编跑马灯程序:,第1张

org 0000h ;程序从0000开始运行

Ljmp main

org 0030h

main: ;主程序循环点亮

mov p1,#0FFh

lcall delay ;延时一段时间

loop1: mov a,#0feh ;每次只亮一个灯。

loop: mov p1,a ;输出到p1

lcall delay ; 延时调DELAY时间延时

RL A ;此3句用来点亮P12

mov p1,a ;输出到p1

lcall DELAY1 ;延时一段时间

RL A ;此四句用来点亮P14因为左移两个

mov p1,a ;输出到p1

lcall DELAY1 ;延时一段时间调DELAY1时间延时

LJMP loop1 ;加这个就循环啦

DELAY1:MOV R4,#25 ;延时子程序,12M晶振延时1001秒此7句为1S延时子程序供主程序调用

L3: MOV R2 ,#200

L1: MOV R3 ,#248

L2: DJNZ R3 ,L2

DJNZ R2 ,L1

DJNZ R4 ,L3

RET

delay: mov r5,#20 ;延时子程序1闪烁灯调用此7句为延时子程序供主程序调用

d1:mov r6,#20

d2: mov r7,#250

djnz r7,$

djnz r6,d2

djnz r5,d1

ret

end

软件延时程序就是利用执行每一条指令时所用的时间来进行延时的。

一般采用循环结构,达到多次反复执行某一段指令的目的,来增加延时的时间,可以通过对循环次数的控制,来达到控制延时时间长短的目的。

为了延长延时时间,一般要采用多重循环,即由外循环内部又含有内循环。

延时时间=(内循环时间)×外循环次数。

例如:设计一个延时1ms的延时子程序ys1ms,设单片机8051的时钟频率为12MHZ。

则单片机8051一个机器周期=12T=12/f=12/12MHZ=1微秒

程序和延时时间计算如下:

ys1ms: MOV R7,#4 ; 单周期1uS ( 晶振为12MHz)

DEL1: MOV R6,#123 ; 单周期1uS

DEL2: DJNZ R6,DEL2 ; 双周期2uS123=246uS

DJNZ R7,DEL1 ; 双周期(2us+246+1)4=996uS

NOP ; 单周期1uS

RET; 双周期2uS

延时时间t=1uS +(1us+246uS+2uS)×4+1uS+2uS=1000uS=1ms

其中 (1us+246uS+2uS)=249uS 为内循环时间 4为外循环次数

第一个1uS 是第一条指令的执行时间

1uS+2uS 是 最后二条指令 NOP RET指令的执行时间。

哈哈 给俺加分吧

以上就是关于求帮修改8051汇编跑马灯程序:全部的内容,包括:求帮修改8051汇编跑马灯程序:、设单片机8051的时钟频率为MHZ,试编写Ms的软件延时程序。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10129838.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存