📄 333l.asm
字号:
;filename: B-333L
;ver: 01
;mcu: 89c52
;freq: 12MHz
;desige: xiaoxilong
;date: 2004.02.06
;**************************************
SPK BIT P1.7
SWITCH BIT P3.4
LED1 EQU 20H
LED2 EQU 21H
SYS EQU 22H
;0确定系统是否复位,由T2控制
;1确定DISP指示灯的状态,由T2控制
DBUF1 EQU 23H
DBUF2 EQU 24H
KEY4 EQU 25H
KEY5 EQU 26H
KEY6 EQU 27H
DISP EQU 28H
DEL_LED EQU 29H
PUL EQU 2AH ;T0 PULSE OUT USE
CHANG EQU 2BH
BOXING EQU 2CH
FREQ EQU 2DH
ZHUT EQU 2EH
MIN EQU 30H
SEC1 EQU 31H
SEC2 EQU 32H
SEC3 EQU 33H
SEC4 EQU 34H
SEC5 EQU 35H
SEC6 EQU 36H
CON1 EQU 37H
CON2 EQU 38H
SEC30 EQU 39H
SEC40 EQU 3AH
;**************************************
ORG 0000H
LJMP RESET
ORG 000BH
LJMP T0INT
ORG 001BH
LJMP T1INT
ORG 002BH
LJMP T2INT
;********************************************************************
; 数码管显示(时间)
;********************************************************************
DISPLAY:
MOV R6,#20
DISP1:
MOV R0,#20H
CLR P2.0
MOV P0,@R0
CALL DELAY
SETB P2.0
DISP2:
INC R0
CLR P2.1
MOV P0,@R0
CALL DELAY
SETB P2.1
DJNZ R6,DISP1
RET
;======================================1MS(LED DISPLAY USE)
DELAY:
MOV R7,#50
D1:
NOP
NOP
DJNZ R7,D1
RET
;********************************************************************
; KEY SCAN HERE
;********************************************************************
KEYSCAN:
MOV P1,#0FFH
JNB P1.0,OPK1
JNB P1.1,OPK2
JNB P1.2,OPK3
JNB P1.3,OPK4
JNB P1.4,OPK5
JNB P1.5,OPK6
RETKEY:
RET
;======================================
OPK1:
JNB SWITCH,RETKEY
CALL DISPLAY
JNB P1.0,PK1
JMP RETKEY
OPK2:
JNB SWITCH,RETKEY
CALL DISPLAY
JNB P1.1,PK2
JMP RETKEY
OPK3:
CALL DISPLAY
JNB P1.2,PK3
JMP RETKEY
OPK4:
CALL DISPLAY
JNB P1.3,PK4
JMP RETKEY
OPK5:
CALL DISPLAY
JNB P1.4,PK5
JMP RETKEY
OPK6:
CALL DISPLAY
JNB P1.5,PK6
JMP RETKEY
;======================================
PK1:
CALL SPK_DEL1
JMP K1
PK2:
CALL SPK_DEL1
JMP K2
PK3:
JMP K3
PK4:
JMP K4
PK5:
JMP K5
PK6:
JMP K6
;====================================== 时间减
K1:
MOV A,MIN
CJNE A,#01,DECTIME
MOV MIN,#99
CALL ADJMIN
RET
DECTIME:
DEC MIN
CALL ADJMIN
RET
;======================================时间加
K2:
MOV A,MIN
CJNE A,#99,INCTIME
MOV MIN,#01
CALL ADJMIN
RET
INCTIME:
INC MIN
CALL ADJMIN
RET
;====================================== P1
K3:
CALL DISPLAY
JNB P1.2,K3
CALL SPK_DEL1
MOV KEY4,#0FFH
MOV KEY5,#0FFH
MOV KEY6,#0FFH
MOV DBUF1,#11111110B
MOV DBUF2,#0FFH
MOV MIN,#15 ;15 MIN
MOV LED1,#01111101B ;1 十位数
MOV LED2,#00110001B ;5 个位数
RET
;====================================== P2
K4:
CALL DISPLAY
JNB P1.3,K4
MOV KEY5,#0FFH
MOV KEY6,#0FFH
MOV MIN,#90 ;90 MIN
MOV LED1,#00001001B ;9 十位数
MOV LED2,#00010100B ;0 个位数
MOV A,KEY4
CJNE A,#0FFH,START_K4
JMP P2_1
START_K4:
JB KEY4.1,P2_2
JB KEY4.2,P2_3
JB KEY4.3,P2_1
RET
P2_1:
CALL SPK_DEL1
MOV KEY4,#11111110B
MOV DBUF1,#11111101B
MOV DBUF2,#0FFH
RET
P2_2:
CALL SPK_DEL2
MOV KEY4,#11111100B
MOV DBUF1,#11111011B
MOV DBUF2,#0FFH
RET
P2_3:
CALL SPK_DEL3
MOV KEY4,#11111000B
MOV DBUF1,#11110111B
MOV DBUF2,#0FFH
RET
;====================================== P3
K5:
CALL DISPLAY
JNB P1.4,K5
MOV KEY4,#0FFH
MOV KEY6,#0FFH
MOV MIN,#20 ;20 MIN
MOV LED1,#00010011B
MOV LED2,#00010100B
MOV A,KEY5
CJNE A,#0FFH,START_K5
JMP P3_1
START_K5:
JB KEY5.1,P3_2
JB KEY5.2,P3_3
JB KEY5.3,P3_1
RET
P3_1:
CALL SPK_DEL1
MOV KEY5,#11111110B
MOV DBUF1,#11101111B
MOV DBUF2,#0FFH
RET
P3_2:
CALL SPK_DEL2
MOV KEY5,#11111100B
MOV DBUF1,#11011111B
MOV DBUF2,#0FFH
RET
P3_3:
CALL SPK_DEL3
MOV KEY5,#11111000B
MOV DBUF1,#10111111B
MOV DBUF2,#0FFH
RET
RET
;====================================== P4
K6:
CALL DISPLAY
JNB P1.5,K6
MOV KEY4,#0FFH
MOV KEY5,#0FFH
MOV MIN,#20 ;20 MIN
MOV LED1,#00010011B
MOV LED2,#00010100B
MOV A,KEY6
CJNE A,#0FFH,START_K6
JMP P4_1
START_K6:
JB KEY6.1,P4_2
JB KEY6.2,P4_3
JB KEY6.3,P4_4
JB KEY6.4,P4_1
RET
P4_1:
CALL SPK_DEL1
MOV KEY6,#11111110B
MOV DBUF1,#01111111B
MOV DBUF2,#0FFH
RET
P4_2:
CALL SPK_DEL2
MOV KEY6,#11111100B
MOV DBUF1,#0FFH
MOV DBUF2,#11111110B
RET
P4_3:
CALL SPK_DEL3
MOV KEY6,#11111000B
MOV DBUF1,#0FFH
MOV DBUF2,#11111101B
RET
P4_4:
CALL SPK_DEL4
MOV KEY6,#11110000B
MOV DBUF1,#0FFH
MOV DBUF2,#11111011B
RET
;======================================蜂鸣器叫一声
SPEAK:
SPK_DEL1:
CLR SPK
CALL SPK_RET
SETB SPK
RET
;====================================== 蜂鸣器叫2声
SPK_DEL2:
CALL SPEAK
CALL SPK_RET
CALL SPEAK
RET
;====================================== 蜂鸣器叫3声
SPK_DEL3:
CALL SPEAK
CALL SPK_RET
CALL SPEAK
CALL SPK_RET
CALL SPEAK
RET
;====================================== 蜂鸣器叫4声
SPK_DEL4:
CALL SPK_DEL1
CALL SPK_RET
CALL SPK_DEL1
CALL SPK_RET
CALL SPK_DEL1
CALL SPK_RET
CALL SPK_DEL1
RET
;************************************** 蜂鸣器叫声间隔时间
SPK_RET:
MOV R4,#20
SPK_RET0:
CALL DISPLAY
DJNZ R4,SPK_RET0
RET
;******************************************************************
; TIMER ADJUSTT
;******************************************************************
ADJMIN:
MOV A,MIN
MOV B,#10
DIV AB
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV LED1,A
MOV A,B
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV LED2,A
RET
TAB1:
DB 021H,07DH,013H,019H,04DH
DB 089H,081H,03DH,001H,009H
TAB2:
DB 014H,0D7H,098H,091H,053H
DB 031H,030H,097H,010H,011H
;********************************************************************
; 波形输出控制
;********************************************************************
T0INT:
PUSH ACC
PUSH PSW
JNB DBUF1.0,P1_OUT
JNB DBUF1.1,P2_OUT1A ;P2的第1种状态
JNB DBUF1.2,P2_OUT2A
JNB DBUF1.3,P2_OUT3A
JNB DBUF1.4,P3_OUT1A
JNB DBUF1.5,P3_OUT2A
JNB DBUF1.6,P3_OUT3A
JNB DBUF1.7,P4_OUT1A
JNB DBUF2.0,P4_OUT2A
JNB DBUF2.1,P4_OUT3A
JNB DBUF2.2,P2_OUT3A
JMP RETT0
P2_OUT1A:
JMP P2_OUT1
P2_OUT2A:
JMP P2_OUT2
P2_OUT3A:
JMP P2_OUT3
P3_OUT1A:
JMP P3_OUT1
P3_OUT2A:
JMP P3_OUT2
P3_OUT3A:
JMP P3_OUT3
P4_OUT1A:
JMP P4_OUT1
P4_OUT2A:
JMP P4_OUT2
P4_OUT3A:
JMP P4_OUT3
;P4_OUT4A:
;JMP P4_OUT4
;************************************** P1 状态
P1_OUT:
JNB ZHUT.0,P1_SEL1
JNB ZHUT.1,P1_SEL2
JNB ZHUT.2,P1_SEL3
JNB ZHUT.3,P1_SEL4
JNB ZHUT.4,P1_SEL1
JNB ZHUT.5,P1_SEL2
JNB ZHUT.6,P1_SEL3
JNB ZHUT.7,P1_SEL4
JMP RETT0
;======================================
P1_SEL1:
JNB FREQ.0,PULSE1A
JNB FREQ.1,PULSE2A
JNB FREQ.2,PULSE1A
JNB FREQ.3,PULSE2A
JNB FREQ.4,PULSE1A
JNB FREQ.5,PULSE2A
JNB FREQ.6,PULSE1A
JNB FREQ.7,PULSE4A
JMP RETT0
;======================================
P1_SEL2:
JNB FREQ.0,PULSE1A
JNB FREQ.1,PULSE4A
JNB FREQ.2,PULSE2A
JNB FREQ.3,PULSE5A
JNB FREQ.4,PULSE7A
JNB FREQ.5,PULSE3A
JNB FREQ.6,PULSE1A
JNB FREQ.7,PULSE4A
JMP RETT0
PULSE1A:
JMP PULSE1
PULSE2A:
JMP PULSE2
PULSE3A:
JMP PULSE3
PULSE4A:
JMP PULSE4
PULSE5A:
JMP PULSE5
PULSE6A:
JMP PULSE6
PULSE7A:
JMP PULSE7
;======================================
P1_SEL3:
JNB FREQ.0,PULSE4A
JNB FREQ.1,PULSE6A
JNB FREQ.2,PULSE2A
JNB FREQ.3,PULSE1A
JNB FREQ.4,PULSE7A
JNB FREQ.5,PULSE6A
JNB FREQ.6,PULSE5A
JNB FREQ.7,PULSE4A
JMP RETT0
;======================================
P1_SEL4:
JNB FREQ.0,PULSE7A
JNB FREQ.1,PULSE6A
JNB FREQ.2,PULSE2A
JNB FREQ.3,PULSE5A
JNB FREQ.4,PULSE3A
JNB FREQ.5,PULSE2A
JNB FREQ.6,PULSE1A
JNB FREQ.7,PULSE4A
JMP RETT0
;************************************** P2第1 种 状态
P2_OUT1:
JNB ZHUT.0,P21_SEL1
JNB ZHUT.1,P21_SEL2
JNB ZHUT.2,P21_SEL3
JNB ZHUT.3,P21_SEL4
JNB ZHUT.4,P21_SEL1
JNB ZHUT.5,P21_SEL2
JNB ZHUT.6,P21_SEL3
JNB ZHUT.7,P21_SEL4
JMP RETT0
;======================================
P21_SEL1:
JNB FREQ.0,PULSE7B
JNB FREQ.1,PULSE6B
JNB FREQ.2,PULSE4B
JNB FREQ.3,PULSE5B
JNB FREQ.4,PULSE1B
JNB FREQ.5,PULSE2B
JNB FREQ.6,PULSE3B
JNB FREQ.7,PULSE4B
JMP RETT0
;======================================
P21_SEL2:
JNB FREQ.0,PULSE6B
JNB FREQ.1,PULSE4B
JNB FREQ.2,PULSE5B
JNB FREQ.3,PULSE7B
JNB FREQ.4,PULSE2B
JNB FREQ.5,PULSE3B
JNB FREQ.6,PULSE1B
JNB FREQ.7,PULSE4B
JMP RETT0
PULSE1B:
JMP PULSE1
PULSE2B:
JMP PULSE2
PULSE3B:
JMP PULSE3
PULSE4B:
JMP PULSE4
PULSE5B:
JMP PULSE5
PULSE6B:
JMP PULSE6
PULSE7B:
JMP PULSE7
;======================================
P21_SEL3:
JNB FREQ.0,PULSE5B
JNB FREQ.1,PULSE6B
JNB FREQ.2,PULSE2B
JNB FREQ.3,PULSE1B
JNB FREQ.4,PULSE3B
JNB FREQ.5,PULSE6B
JNB FREQ.6,PULSE3B
JNB FREQ.7,PULSE4B
JMP RETT0
;======================================
P21_SEL4:
JNB FREQ.0,PULSE3B
JNB FREQ.1,PULSE6B
JNB FREQ.2,PULSE3B
JNB FREQ.3,PULSE5B
JNB FREQ.4,PULSE7B
JNB FREQ.5,PULSE2B
JNB FREQ.6,PULSE5B
JNB FREQ.7,PULSE4B
JMP RETT0
;************************************** P2第2 种 状态
P2_OUT2:
JNB ZHUT.0,P22_SEL1
JNB ZHUT.1,P22_SEL2
JNB ZHUT.2,P22_SEL3
JNB ZHUT.3,P22_SEL4
JNB ZHUT.4,P22_SEL1
JNB ZHUT.5,P22_SEL2
JNB ZHUT.6,P22_SEL3
JNB ZHUT.7,P22_SEL4
JMP RETT0
;======================================
P22_SEL1:
JNB FREQ.0,PULSE6C
JNB FREQ.1,PULSE5C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -