一.点亮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