我想问一下单片机问题
来源:百度知道 编辑:UC知道 时间:2024/06/01 04:53:53
我是一个单片机初学者,想请大家帮我解决一个问题:为什么刚开始编程的时候,要用MAIN:SETB P1.0;呢?
MAIN: SETB P1.0 ;(1)
LCALL DELAY ;(2)
CLR P1.0 ;(3)
LCALL DELAY ;(4)
AJMP MAIN ;(5)
;以下子程序
DELAY: MOV R7,#250 ;(6)
D1: MOV R6,#250 ;(7)
D2: DJNZ R6,D2 ;(8)
DJNZ R7,D1 ;(9)
RET ;(10)
END ;(11)
MAIN: SETB P1.0 ;(1)
LCALL DELAY ;(2)
CLR P1.0 ;(3)
LCALL DELAY ;(4)
AJMP MAIN ;(5)
;以下子程序
DELAY: MOV R7,#250 ;(6)
D1: MOV R6,#250 ;(7)
D2: DJNZ R6,D2 ;(8)
DJNZ R7,D1 ;(9)
RET ;(10)
END ;(11)
这是为了下面的AJMP MAIN准备的。
跳转前,P1。0为0
为了实现P1。0的闪烁。必须在CLR P1。0前SETB P1。0
而且我认为。你用一个CPL P1。0更好。
MAIN: CPL P1。O
LCALL DELAY
JMP MAIN
DELAY:。。。。。。。。。。。。。
不就是输出一个方波的程序吗.
0234101
像你那样写应该不行吧...
MAIN: SETB P1.0
LCALL DELAY
CLR P1.0
LCALL DELAY
AJMP MAIN
在这里面,由于后面有AJMP MAIN,所以程序中一定要有MAIN这个标号,不然程序编译会出错的..也达不到循环的目的,程序很快就执行完了,看不到什么效果...
就像我们老师说的,单片机的工作就是无限循环加中断..
置1以后才不会误读如数据。
这个也问,你还是多看看吧