📄 led-dimmer.asm
字号:
;========= AT89S51 @ 16MHz ===========
;=========2007.07.15==========
TIM_0_COUNT EQU 30H
KEY_DATA EQU 31H
ORG 0000H
JMP START
ORG 0BH
JMP TIM0
ORG 1BH
JMP TIM1
ORG 40H
START: MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R0,#30H
RAM_CLR: MOV @R0,#00H
MOV A,R0
INC R0
CJNE A,#3FH,RAM_CLR
MOV TMOD,#00010010B
MOV IE,#10001010B
MOV TH1,#0CBH
MOV TL1,#0EAH
;==========
MOV TH0,#0CBH ;255
MOV TL0,#0CBH
; MOV TCON,#0FFH
SETB TR0
SETB TR1
;**************************************
LOOP: MOV A,KEY_DATA
CJNE A,#100,KEY_0_INC
JMP KEY_0_DOWN
KEY_0_INC: JB P0.0,KEY_0_DOWN
CALL DELAY_10MS
;JNB P0.0,$
INC KEY_DATA
;========================
KEY_0_DOWN:CJNE A,#0,KEY_1_DEC
JMP KEY_EXIT
KEY_1_DEC: JB P0.1,KEY_EXIT
CALL DELAY_10MS
; JNB P0.1,$
DEC KEY_DATA
KEY_EXIT: JMP LOOP
;====================================
TIM1: PUSh ACC
PUSH PSW
MOV TH0,#0CBH ;255
MOV TL0,#0CBH
MOV TH1,#0CBH
MOV TL1,#0EAH
MOV P2,#0FFH
MOV TIM_0_COUNT,KEY_DATA
POP PSW
POP ACC
RETI
;====================================
TIM0: PUSH ACC
PUSH PSW
INC TIM_0_COUNT
MOV A,TIM_0_COUNT
CJNE A,#256,TIM_0_RETI
MOV P2,#00H
TIM_0_RETI:
POP PSW
POP ACC
RETI
;=================================
DELAY_10MS:MOV R7,#53
D1: MOV R6,#248
DJNZ R6,$ ;10MS
DJNZ R7,D1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -