一.點亮LED燈
簡單的對P1口進行操作就可以了
代碼:
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
MOV P1,#0FEH ;點亮LED1
AJMP MAIN
END
二.延時控制流水燈
延時程式生成:
設定好單片機系統頻率和定時長度
注意使用STC-Y1指令集,否則延時不準确

代碼:
******************************************************************************
* 檔案名:延時控制流水燈
* 描 述:
* 作 者:思索與貓
* 日 期: 19/6/26
* 備 注:
*
******************************************************************************
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
MOV P1,#0FEH ;點亮LED1
ACALL DELAY1000MS
MOV P1,#0FFH ;熄滅LED1
ACALL DELAY1000MS
AJMP MAIN
DELAY1000MS: ;@11.0592MHz
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#8
MOV 31H,#1
MOV 32H,#236
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
END
三.定時器控制流水燈
定時器設定
定時器程式生成:
設定好單片機系統頻率和定時長度
注意使用12T模式,否則延時不準确
代碼:
******************************************************************************
* 檔案名:定時器控制流水燈
* 描 述:
* 作 者:思索與貓
* 日 期: 19/6/26
* 備 注:
*
******************************************************************************
ORG 0000H
AJMP MAIN
ORG 000BH ;定時器0中斷位址
AJMP TIMER0
ORG 0100H
LED: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH ;根據流水燈需求自行編輯
MAIN:
ACALL TIMER0INIT
MOV R6,#0 ;8個燈,執行8次
MOV R7,#20 ;20*5 =100ms
LOOP:
MOV DPTR,#LED ;使用查表,将LED裡的值指派給A
MOV A,R6
MOVC A,@A+DPTR
MOV P1,A ;将A指派給P1
AJMP LOOP
;定時器初始化程式
TIMER0INIT: ;[email protected]
MOV TMOD,#001H
MOV TL0,#000H ;裝載定時器初值
MOV TH0,#0EEH ;裝載定時器初值
CLR TF0
SETB TR0
SETB ET0
SETB EA
RET
;定時器中斷程式
TIMER0:
MOV TL0,#000H ;裝載定時器初值
MOV TH0,#0EEH ;裝載定時器初值
DJNZ R7,RE ;功能:100ms延時
MOV R7,#20
INC R6 ;加一
CJNE R6,#8,RE ;功能:與8相比較,若不等,傳回中斷;相等,執行下一條語句
MOV R6,#0
RE: RETI
END