51单片机中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说ORG 0 START:CLR P1.0 LCALL DELAY SETB P1.0 ;使P1.0变为1.LCALL DELAY LJMP START ;转入主程序DELAY:MOV R5,#20 ;延时子程序,延时0.2秒 D1:MOV R6,#20 D2:MOV R7,#248
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/08 11:14:53
51单片机中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说ORG 0 START:CLR P1.0 LCALL DELAY SETB P1.0 ;使P1.0变为1.LCALL DELAY LJMP START ;转入主程序DELAY:MOV R5,#20 ;延时子程序,延时0.2秒 D1:MOV R6,#20 D2:MOV R7,#248
51单片机中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说
ORG 0
START:CLR P1.0
LCALL DELAY
SETB P1.0 ;使P1.0变为1.
LCALL DELAY
LJMP START ;转入主程序
DELAY:MOV R5,#20 ;延时子程序,延时0.2秒
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
这里面的R5,F6,R7是寄存器,但是MOV R5,#20; 延时子程序,延时0.2秒 这句话是怎么理解的呢?
我知道R0他们是寄存器,但是我不明白的一点就是这个地方,将20放到R5中,怎么会是延时0.2秒呢?这一点不懂啊,
51单片机中R0,R1,R2.都表示的是什么,很多时候看不懂.比如说ORG 0 START:CLR P1.0 LCALL DELAY SETB P1.0 ;使P1.0变为1.LCALL DELAY LJMP START ;转入主程序DELAY:MOV R5,#20 ;延时子程序,延时0.2秒 D1:MOV R6,#20 D2:MOV R7,#248
这个叫做软件延时程序.由于单片机每执行一条指令都需要时间.上面的程序用文字描述:
DELAY: MOV R5,#20 ;延时子程序,延时0.2秒
这句是将十进制数20这个数传送给寄存器R5.
D1: MOV R6,#20
这句是:D1是标号,将20传给R6
D2: MOV R7,#248
与上相同
DJNZ R7,$
这句是每执行一次R7就减1如果不为0就跳转到这条指令开头,直到减为0.
DJNZ R6,D2
这句是每执行一次R6就减1如果不为0就跳转到D2这个标号,直到减为0.
DJNZ R5,D1
这句是每执行一次R1就减1如果不为0就跳转到D1这个标号,直到减为0.
RET
这是子程序返回指令,懂了吗?
其实这个延时程序不是精确延时的,如果要精确延时就用定时器中断了.