📄 led_red_laser_ray.asm
字号:
; THE PRO DESIGNED FOR LIGHT
; VER1.0
; define by YETAO
; e-maiL D026530@126.com
; date 2005/4/6
;*************define equ list***********************
;*************THIS part is define ram*************
MIN EQU 60H
SEC1 EQU 61H
SEC0 EQU 62H
MINH EQU 63H
MINL EQU 64H
SEC1H EQU 65H
SEC1L EQU 66H
SEC0H EQU 67H
SEC0L EQU 68H
LED EQU 69H
ON EQU 20H
ON1 EQU 21H
KEY EQU 22H
KEYBC EQU 23H
VT EQU 24H
VT1 EQU 25H
VTS1 EQU 6AH
VTS0 EQU 6BH
;***********define IO **************************
LED1 BIT P3.0
LED2 BIT P3.1
LED3 BIT P3.2
LED4 BIT P3.3
LED5 BIT P3.4
LED6 BIT P3.5
LED7 BIT P3.6
PUMP BIT P3.7
P1_sel BIT P2.7
P2_SEL BIT P2.6
LASER BIT P2.5
LED_T BIT P2.4
;*************************************************
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
;;==========================
START: NOP
NOP
NOP
NOP
NOP
CLEAR: MOV R7,#78H
MOV R0,#00H
clr0: CLR A
INC R0
MOV @R0,A
DJNZ R7,clr0
mov SP,#70H
mov tmod,#11h ;11
mov tl0,#45h ;1MS
mov th0,#0FCh
mov r1,#100 ;100MS
mov r2,#05h ;500ms倍率
mov r3,#2h ;1s
mov r4,#60 ;1s倍率
mov a,#0
mov p0,#0ffh
mov p1,#11100011B
mov p2,#0ffh
mov p3,#0ffh
MOV MIN,#00
MOV MINH,#0
MOV MINL,#0
MOV LED,#11111111b
MOV VTS1,MINH
MOV VTS0,MINL
SETB EA
SETB ET0
SETB TR0
MAIN: LCALL KEYWORK
NOP
NOP
MOV A,MIN
CJNE A,#00,MAIN
LCALL BUEELL
LCALL DL500MS
LCALL BUEELL
LCALL DL500MS
LCALL BUEELL ;add by yt 2005/1/23
LCALL DL500MS
LCALL BUEELL
LCALL DL500MS
LCALL BUEELL
LJMP START
NOP
NOP
AJMP START
NOP
NOP
LJMP START
;*******************END MAIN*************************
;THE SUB PRO IS DISPLAY
display:MOV DPTR,#TAB
PLAY: JB LED6,L1
SETB LED6
CLR LED7
MOV A,LED
MOV P0,A
RET
L1: JB LED7,L2
SETB LED7
CLR LED1
MOV A,MINH
MOVC A,@A+DPTR
MOV P0,A
RET
L2: JB LED1,L3
SETB LED1
CLR LED2
MOV A,MINL
MOVC A,@A+DPTR
JNB ON1,LOP8
CLR ACC.5
LOP8: MOV P0,A
RET
L3: JB LED2,L4
SETB LED2
CLR LED3
MOV A,SEC1H
MOVC A,@A+DPTR
CLR ACC.5
MOV P0,A
RET
L4: JB LED3,L5
SETB LED3
CLR LED4
MOV A,SEC1L
MOVC A,@A+DPTR
MOV P0,A
RET
L5: JB LED4,L6
SETB LED4
CLR LED5
MOV A,SEC0H
MOVC A,@A+DPTR
CLR ACC.5
MOV P0,A
RET
L6: JB LED5,L7
SETB LED5
CLR LED6
MOV A,SEC0L
MOVC A,@A+DPTR
MOV P0,A
RET
L7: LJMP PLAY
;********************END DISPLAY*********************
TAB: DB 0C0h,0F9H,0A4H,0F0H,99H,92H,82H,0F8H,80H,90H,0FFH
;共阳段码表 "0""1""2" "3""4""5""6""7" "8""9""不亮"
KEYWORK:MOV A,#00111110B
MOV P1,A
NOP
MOV A,P1
CJNE A,#00111110B,K0
MOV A,LED
CJNE A,#11111111B,LOP7
CLR ON
CLR ON1
LOP7: RET
K0: LCALL DL10MS
CJNE A,#00111110B,KA
RET
KA: MOV A,#00111111B ;P1.1
MOV P1,A
NOP
MOV A,P1
K1: CJNE A,#00111101B,K2
LCALL BUEELL
MOV A,MIN
CJNE A,#60,ADD1MIN
RET
ADD1MIN:ADD A,#1
MOV MIN,A
MOV B,#10
DIV AB
MOV MINH,A
MOV MINL,B
LCALL DL500MS
RET
K2: CJNE A,#00111011B,KT
LCALL BUEELL
MOV A,MIN
CJNE A,#0,SUBB1MIN
RET
SUBB1MIN:SUBB A,#1
MOV MIN,A
MOV B,#10
DIV AB
MOV MINH,A
MOV MINL,B
LCALL DL500MS
RET
KT: MOV B,A
MOV A,MIN
CJNE A,#00H,K3
RET
K3: MOV A,B
CJNE A,#01110111B,K40;P1.2
LCALL BUEELL
SETB LASER
LCALL LASERS ;Strenght
CJNE A,#60,ADD1SEC1
RET
K4: CJNE A,#01110111B,K5
LCALL BUEELL
MOV A,SEC1
CJNE A,#1,SUBB1SEC1
RET
SUBB1SEC1:SUBB A,#1
MOV SEC1,A
MOV B,#10
DIV AB
MOV SEC1H,A
MOV SEC1L,B
LCALL DL500MS
RET
K5: CJNE A,#01101111B,K6
LCALL BUEELL
MOV A,SEC0
CJNE A,#99,ADD1SEC0
RET
ADD1SEC0:ADD A,#1
MOV SEC0,A
MOV B,#10
DIV AB
MOV SEC0H,A
MOV SEC0L,B
LCALL DL500MS
RET
K6: CJNE A,#01011111B,KB
LCALL BUEELL
MOV A,SEC0
CJNE A,#1,SUBB1SEC0
RET
SUBB1SEC0:SUBB A,#1
MOV SEC0,A
MOV B,#10
DIV AB
MOV SEC0H,A
MOV SEC0L,B
LCALL DL500MS
RET
KB: MOV A,#10111111B
MOV P3,A
NOP
MOV A,P3
K7: CJNE A,#10111110B,K8
SETB ON
LCALL BUEELL
CLR PUMP
MOV A,LED
CLR ACC.1
SETB ACC.0
MOV LED,A
JB VT,LOP5
SETB VT
AJMP LOP6
LOP5: CLR VT
LOP6: JNB P3.0,$
RET
K8: CJNE A,#10111101B,K9
LCALL BUEELL
SETB PUMP
SETB KVT
CLR VT
MOV A,LED
CLR ACC.0
SETB ACC.1
MOV LED,A
JNB P3.1,$
RET
K9: CJNE A,#10111011B,K10
SETB ON
LCALL BUEELL
SETB US
MOV A,LED
CLR ACC.6
SETB ACC.5
MOV LED,A
JNB P3.2,$
RET
K10: CJNE A,#10110111B,K11
LCALL BUEELL
CLR US
MOV A,LED
CLR ACC.5
SETB ACC.6
MOV LED,A
JNB P3.3,$
RET
K11: CJNE A,#10101111B,K12
SETB ON
LCALL BUEELL
SETB RAY
MOV A,LED
CLR ACC.3
SETB ACC.2
MOV LED,A
JNB P3.4,$
RET
K12: CJNE A,#10011111B,KOUT
LCALL BUEELL
CLR RAY
MOV A,LED
CLR ACC.2
SETB ACC.3
MOV LED,A
JNB P3.5,$
KOUT: RET
;================================
INTT0: push acc
push psw
clr et0
clr tr0
mov tl0,#45h
mov th0,#0FCh
LCALL DISPLAY
JNB ON,INTTOUT
djnz r1,inttout
mov r1,#100
lcall vt307
lcall vt308
DJNZ R2,INTTOUT
MOV R2,#5
CPL ON1
djnz r3,inttout
mov r3,#02h
djnz r4,inttout
mov r4,#60
lcall subb1
mov a,MIN
cjne a,#00h,inttout
mov p1,#11100011B
mov a,11011010b
mov LED,a
clr ON
clr ON1
INTTOUT:pop psw
pop acc
setb tr0
setb et0
reti
;==================================
vt307: jnb VT,vt309out
jnb VT1,vt307out
mov a,VTS1
cjne a,#01h,LOP9
mov VTS0,SEC0
clr VT1
CLR KVT
MOV A,LED
SETB ACC.1
MOV LED,A
ajmp vt307out
LOP9: subb a,#1
mov VTS1,a
VT309OUT:setb KVT
vt307out: ret
vt308: jnb VT,vt308out
jb VT1,vt308out
mov a,VTS0
cjne a,#01h,LOP10
mov VTS1,SEC1
setb VT1
SETB KVT
MOV A,LED
CLR ACC.1
MOV LED,A
ajmp vt307out
LOP10: subb a,#1
mov VTS0,a
vt308out: ret
subb1: mov a,MIN
CJNE A,#0,SUBB11
RET
SUBB11: subb a,#01h
mov MIN,a
mov b,#10
div ab
mov MINH,a
mov MINL,b
ret
;===================================
DL10MS: mov r6,#20
LOP1: mov r7,#250
LOP2: djnz r7,LOP2
djnz r6,LOP1
ret
DL500MS:mov r5,#10
LOP3: lcall DL10MS
djnz r5,LOP3
ret
;================================
bueell: mov r5,#0Ah
lop: clr p1.7
lcall DL10MS
setb p1.7
djnz r5,lop
ret
;====================
LASER:
MOV A,MIN
CJNE A,#0,LASER1
RET
LASER1: JB 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -