程序如下:
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
這段程序就是讓P2.0閃呀閃,很簡單
我用的是STC 12C5A60S2,寫入程序以后,一切正常,P2.0確實閃呀閃的
可是斷掉電,然后重新啟動,P2.0就變成昏暗的常亮了。這是怎么回事呢~?
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跳轉......,但這樣就不是你想要的結果了。
啊,果然,我只加了下面一小段,這個問題就解決了~! T^T
ORG 0000H
LJMP START
ORG 0003H
多謝版主大人的幫助~!
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |