ORG 1000H
START:MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#82H
SETB TR0
MOV R0,#90H
LOOP: SJMP $
ORG 000BH
AJMP BTR0
ORG 0080H
BTR0: DJNZ R0,NEXT
CPL P2.0
MOV R0,#90H
NEXT: MOV TH0,#3CH
MOV TL0,#0B0H
RETI
END
你这个程序,上面红字段运行不到的。
单片机上电、复位以后自动从code的0000h处开始执行。由于从0003h~009bh,是中断向量的分布段(绝大部分是预留的),所以一般是从0100处开始写初始化程序。又由于0000h~0003h(不含0003h)只有3个字节,所以一般在这里安排一句跳转指令,常用模式:
org 0000h
jmp main
; org 0003h ;若果不用外部中断0,可以不用本句
; jmp ......
org 000bh
而你的程序,org 1000h既不是复位入口地址,也不是中断入口,有没有语句向这里跳转,当让就执行不到了。
也许,由于你的程序没有循环,所以会从0000h一直顺序执行到000bh跳转......,但这样就不是你想要的结果了。
[此贴子已经被作者于2013-4-13 22:25:19编辑过]
|