1
我最近開始使用18 PIC 4500,並且我第一次嘗試在彙編中對其進行編程,以使它在循環中閃爍一個LED。但是,我沒有太多的使用這種語言進行編程的經驗,所以不得不依賴其他代碼片段來讓我開始。我的代碼如下:用18PIC4550使用匯編代碼閃爍LED
#include<p18f4550.inc>
CONFIG WDT = OFF
CONFIG MCLRE = ON
CONFIG DEBUG = ON
CONFIG LVP = OFF
CONFIG FOSC = INTOSCIO_EC
ORG 0
Delay1 res 2
Delay2 res 2
Start:
CLRF PORTB
CLRF TRISB
CLRF Delay1
CLRF Delay2
MainLoop:
BSF PORTB,1
GOTO DelayA
DelayA:
DECFSZ Delay1,1
GOTO DelayA
BCF PORTB,1
GOTO DelayB
DelayB:
DECFSZ Delay2,1
GOTO DelayB
GOTO MainLoop
end
我不明白爲什麼它不工作,但認爲它可能有一些做的指令週期速度,我相信這是1兆赫,造成延誤要過短。
任何幫助非常感謝!
爲什麼調試開啓? – Iancovici
在DelayA,你首先調用DECFSZ,然後無條件地(!)跳轉到延遲A.我期望一個條件跳轉。另外請注意,在循環之前,您必須初始化某種循環變量,否則下一次調用將根本不會循環(因爲變量已經爲零),否則會導致下溢,然後循環直到它再次爲零。我可能完全錯誤,因爲我不知道PIC組裝。順便說一句:DelayA和DelayB是不對稱的也有點奇怪。 – doomster
@doomster您不必初始化循環變量,您可以在這些微控制器中實現永久循環 – Iancovici