标题:
请大佬帮新手的我分析一下这个单片机程序是如何运行的?
[打印本页]
作者:
金子。
时间:
2019-1-20 16:57
标题:
请大佬帮新手的我分析一下这个单片机程序是如何运行的?
这个程序是怎么个运行过程啊,请会的大佬帮忙给分析一下,谢谢了;主要是延时的部分真的没看懂
ORG 0000H
LJMP START
ORG 001BH
LJMP YSZD
SETB IT1
SETB ET1
SETB EA
SETB TR1
LCALL TIME500MS
TIME500MS: PUSH 03H
MOV R3,#61D
K005: SETB P1.5
CLR P1.5
CJNE R3,#00H,K005
POP 03H
RET
YSZD: CJNE R3,#00H,ASD1 ;延时
AJMP ASD2
ASD1: DEC R3
ASD2: RETI
END
作者:
bucker
时间:
2019-1-22 02:30
首条指令LJMP START,可是标号START都不存在,无法分析过程。至于延时部分,有两个小延时程序,入口分别是TIME500MS:和YSZD:。TIME500MS是个比较清晰的子程序,过程中还反复向P1.5输出脉冲,延时靠的是运行指令消耗时间,但是看起来CJNE R3,#00H,K005之前缺乏 DEC R3操作,R3不变,是个死循环,即使有 DEC R3,延时时间也不到500mS。YSZD:看起来像中断服务程序,也存在问题,无论R3等于几,程序只运行一次就RETI了,不知是否能达到所需的目的。
作者:
ahshmj
时间:
2019-1-22 06:19
这个程序错误太多,根本不能运行。第五行到第十行永远运行不到。第二行无处跳转,定时器设置不对,中断没有重装初值……等等。
作者:
街角の风铃
时间:
2019-1-22 10:16
这个程序从上面一条一条执行,先跳转到START,这是对中断相关的配置,再执行K005,就是对配置相应IO引脚,并输出低电平,延时函数就是:先比较R3寄存器和00H的大小,如果大,执行ASD1,使R3寄存器值减一。
当R3减到和00H相等时,执行ASD2.中断返回
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1