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編輯過]
|