请将下面的51单片机程序按照要求修改

请将下面的51单片机程序按照要求修改,第1张

;显示 Good

    ORG    0000H

    JMP    MAIN

    ORG    0080H

MAIN: 

    MOV   P0, #3DH   ;显示G

    CLR   P20   ;选中第一个数码管

    LCALL DELAY  ;调用延时

    SETB  P20   ;关显示

   

    MOV   P0, #5CH   ;显示o

    CLR   P21   ;选中第二个数码管

    LCALL DELAY

    SETB  P21   ;关显示

    MOV   P0, #5CH   ;显示o

    CLR   P22   ;选中第三个数码管

    LCALL DELAY

    SETB  P22   ;关显示

    MOV   P0, #5EH   ;显示d

    CLR   P23   ;选中第四个数码管

    LCALL DELAY

    SETB  P23   ;关显示

    AJMP   MAIN   ;重新开始

DELAY:   ;延时子程序

    MOV   R7, #20H

D1: MOV   R6, #30H

D2: DJNZ  R6, D2

    DJNZ  R7, D1

    RET

   

END

;----------------------------------------

;显示 HELLO

    ORG    0000H

    JMP    MAIN

    ORG    0080H

MAIN:

    MOV   P2, #0FFH

   

    MOV   P0, #76H   ;显示H

    CLR   P20   ;选中第一个数码管

    LCALL DELAY  ;调用延时

    SETB  P20   ;关显示

   

    MOV   P0, #79H   ;显示E

    CLR   P21   ;选中第二个数码管

    LCALL DELAY

    SETB  P21   ;关显示

    MOV   P0, #38H   ;显示L

    CLR   P22   ;选中第三个数码管

    LCALL DELAY

    SETB  P22   ;关显示

    MOV   P0, #38H   ;显示L

    CLR   P23   ;选中第四个数码管

    LCALL DELAY

    SETB  P23   ;关显示

    MOV   P0, #3FH   ;显示O

    CLR   P24   ;选中第五个数码管

    LCALL DELAY

    SETB  P24   ;关显示

DELAY:   ;延时子程序

    MOV   R7, #20H

D1: MOV   R6, #30H

D2: DJNZ  R6, D2

    DJNZ  R7, D1

    RET

   

END

这个是没办法改的,改动特别大。两种芯片虽然从某种层次上来说,是大部分相同的。但是也可以说是截然不同的,因为其架构不一样,一个是51,一个是AVR,最具体的体现是,寄存器、 *** 作、和指令集都不一样。

我懂了,经过我的仿真,当程序第一次进入DELAYTIME时,执行到R0=03,R0=00,R2=F0时,T0中断到了,这时中断程序调用了DELAYTIME,当执行完中断服务程序,这是R0变成了0,返回到之前的延时函数,此时R0=0,R1=0,R2=0,所以你的延时程序就变成了256256256=16秒了,所以成了你说的15秒后才执行完。 所以以后写中断程序注意断点的保护,把中断程序里有修改掉的寄存器先压栈保护,结束之前d出来,这样就没事了。还有你在中断程序结束前没重新开启T0。还有在你的程序最好多点注释,这样看着不吃力。

以上就是关于请将下面的51单片机程序按照要求修改全部的内容,包括:请将下面的51单片机程序按照要求修改、51单片机程序怎么改成ATmega16的、请高手帮忙,51单片机执行定时器0的中断程序后,需要大约15秒才能返回主程序断点处继续运行 太奇怪了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10212846.html

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

发表评论

登录后才能评论

评论列表(0条)

保存