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/08/02 05:40:08
![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](/uploads/image/z/8240520-48-0.jpg?t=51%E5%8D%95%E7%89%87%E6%9C%BA%E4%B8%ADR0%2CR1%2CR2.%E9%83%BD%E8%A1%A8%E7%A4%BA%E7%9A%84%E6%98%AF%E4%BB%80%E4%B9%88%2C%E5%BE%88%E5%A4%9A%E6%97%B6%E5%80%99%E7%9C%8B%E4%B8%8D%E6%87%82.%E6%AF%94%E5%A6%82%E8%AF%B4ORG+0+START%3ACLR+P1.0+LCALL+DELAY+SETB+P1.0+%3B%E4%BD%BFP1.0%E5%8F%98%E4%B8%BA1.LCALL+DELAY+LJMP+START+%3B%E8%BD%AC%E5%85%A5%E4%B8%BB%E7%A8%8B%E5%BA%8FDELAY%3AMOV+R5%2C%2320+%3B%E5%BB%B6%E6%97%B6%E5%AD%90%E7%A8%8B%E5%BA%8F%2C%E5%BB%B6%E6%97%B60.2%E7%A7%92+D1%3AMOV+R6%2C%2320+D2%3AMOV+R7%2C%23248)
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
这是子程序返回指令,懂了吗?
其实这个延时程序不是精确延时的,如果要精确延时就用定时器中断了.