English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我要交一份作業,內容是8顆LED燈,照順序閃亮....
第一顆閃一次,第二顆閃兩次,第三顆閃三次,第四顆閃四次,
第五顆閃五次,第六顆閃六次,第七顆閃七次,第八顆閃八次...
而每一次閃動都要有規律.
請問如何用8051寫程式??
而程式內容又是什麼呢??
請哪位大大好心告訴我...程式該怎麼寫...

2006-05-23 07:21:47 · 1 個解答 · 發問者 CHIN-CHIN 1 in 電腦與網際網路 程式設計

1 個解答

;
;走馬燈程式
;
RR1 EQU 1
ORG 0H
START:
MOV R0,#8 ;R0用來控制循環次數(因為有8顆LED所以設8)
MOV R1,#1 ;R1用來控制閃爍次數
MOV A,#11111110B ;累積器紀錄目前哪一顆LED要亮(一開始設為最右邊)
LP1:
PUSH RR1 ;R1暫存器內容壓入堆疊(因為副程式會改變R1的值)
ACALL SHOW ;呼叫控制LED閃爍副程式
POP RR1 ;將堆疊內資料取出存入R1暫存器
INC R1 ;R1內容+1
RL A ;累積器內容向左旋轉
DJNZ R0,LP1 ;R0減1後不為0的話跳回LP1
AJMP START ;跳回START
;把累積器內容送至P1,並依照R1內容決定閃爍幾次
SHOW:
MOV P1,A ;將累積器內容送至P1(決定讓哪一顆LED亮)
ACALL DELAY ;延遲0.3秒
MOV P1,#FFH ;讓全部LED熄滅
ACALL DELAY
DJNZ R1,SHOW
RET
;延遲副程式(0.3s)
DELAY:
MOV R4,#3
DL3:
MOV R6,#200
DL2:
MOV R7,#250
DL1:
DJNZ R7,DL1
DJNZ R6,DL2
DJNZ R4,DL3
RET
END

2006-05-23 17:46:25 補充:
LED以共陽極方式接在P1

2006-05-23 12:48:44 · answer #1 · answered by Egar 5 · 0 0

fedest.com, questions and answers