📄 2802d510.src
字号:
; ****************************************************************
; * GALAXY Co.,LTD ZHOU HAI ZHONG 20.JUL.2000 *
; * *
; * KS57C5208 2802BASIC PROGRAM *
; * *
; * The last version modify by Qin Pin Jian Jul/02/2002 *
; * *
; * Mode:3002/2802 *
; * *
; ****************************************************************
;CHIP c:\skstudio\INCLUDE\DEF\s3c7528.DEF
chip C:\skStudio\include\def\57c5208.def
; Eeprom USE 24AA02
; this file checksum is 5071, is a updated version for
; m key auto select line and dial , 2001.8,by jin'gang.
; and updated init reset off_hook would auto select line
; and speak the vollum max but hook off is ave
; 2001.11 by jin'gang.
; Qin Pin Jian modify :1. Hold line2 ,line1 ringing cannot offhook
; 2. in hand free status lin2 volume differ
; line1
; modify ok at: Jul/5/2002 pm.
;==================KEYPAD I/O PORTS DEFINE========================
R0 EQU P7.3 ;KS4 QUASI-INTERRUPT INPUTS WITH
R1 EQU P7.2 ;KS5 FALLING EDGE DETECTION
R2 EQU P7.1 ;KS6
R3 EQU P7.0 ;KS7
C0 EQU P2.0
C1 EQU P2.1 ; ++++++++++++++++++++++++++++++
C2 EQU P2.2 ; ST---C0 LINE1 RING DET
C3 EQU P2.3 ; ST---C1 LINE1 HOLD1 DET
C4 EQU P3.0 ; ST---C2 LINE1 INUSE DET
C5 EQU P3.1 ;
C6 EQU P3.2 ; ST---C4 LINE2 RING DET
C7 EQU P3.3 ; ST---C5 LINE2 HOLD2 DET
C8 EQU P8.0 ; ST---C6 LINE2 INUSE DET
C9 EQU P8.1 ;+++++++++++++++++++++++++++++++
;---------------------------KEYPAD--RANK--DIAGRAM----------------------------------------
; C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
;R0 LINE1 LINE2 SPK CONF MUTE HOLD RD/PA STORE FLASH VOL
;R1 1 2 3 4 5 6 7 8 9 0
;R2 * # M1 M2 M3 M4 M5 M6 M7 M8
;R3 M9 M10 M11 M12 M13 M14 M15 MSG UP DOWN
;-----------------------------------------------------------------------
;===================SCAN===STATES==================================
ST EQU P1.1
;=================CONTROLLER==I/O==PORTS===========================
VOL_A EQU P9.0 ;000 001 010 011 100 101 110 111
VOL_B EQU P9.1 ;
VOL_C EQU P9.2 ;CONTROLLER VOLUME IN 100 (MIDST)
SDA EQU P8.2 ;I/O PORT
SCK EQU P8.3 ;USE EEPROM 24AA16
MUTE EQU P5.0
RMUTE EQU P5.1
DP EQU P5.2
HFO EQU P5.3
KT EQU P4.0
HOLD1 EQU P4.1
HOLD2 EQU P4.2
pulldown equ p4.3
CONF EQU P4.3 ;RELEASE HOLD LED
RLY1 EQU p6.1 ; P6.0
RLY2 EQU p6.3 ; P6.2
RLY_1 EQU p6.0 ; P6.1 ;RESET RLY1
RLY_2 EQU p6.2 ; P6.3 ;RESET RLY2
HOOK_DET EQU P1.0
WAKE EQU P1.2 ;INT2 AT ONHOOK STATE WAKE
T_P_DET EQU P1.3 ;HIGH LEVER--P LOW LEVER--T
;=====================RAM===DEFINITION=================================
ONHOOK_STATE EQU 20H.0 ;WORK STOP FLAG BIT 1--WORK 0--ONHOOK
KEY_OFF EQU 20H.1
RING1_FG EQU 20H.2
HOLD1_FG EQU 20H.3
SCAN_WORD EQU 21H ;KEY_PAD R_SCAN(P7.3 P7.2 P7.1 P7.0)
I_DIALCOUNT EQU 22H ;KEY INPUT COUNT(1--9.0.*.#.FLASH.PAUSE)
KEY_VALUE EQU 24H ;KEY CODE REGISTER
KEY_COUNT EQU 26H ;ONE TIMES SCAN_KEY KEY CLOSE NUMBER
INUSE1_FG EQU 27H.0
RING2_FG EQU 27H.1
HOLD2_FG EQU 27H.2
INUSE2_FG EQU 27H.3
INUSE_1 EQU 28H.0 ;HOLD1 OR INUSE1_FG=INUSE_1
INUSE_2 EQU 28H.1 ;HOLD2 OR INUSE2_FG=INUSE_2
RMUTETIME EQU 28H.2 ;INTT1 INTERRUPT FLAG
DIALTIME EQU 28H.3
DIAL_VALUE EQU 29H
BIT EQU 2AH.0
LINE1_BIT EQU 2AH.1
MEMORY_FG EQU 2AH.2
nousedail_fg equ 2ah.3
p_buff equ 2bh.0
off_hook_fg equ 2bh.1
no_line_fg equ 2bh.2
last_p1 equ 2bh.3
bitcount equ 2ch
sel_line_fg equ 2eh.0
spk_key_fg equ 2eh.1
LINE2ADD EQU 2EH.2
O_DIALCOUNT EQU 30H
HFO_FG EQU 32H.0
STORE_FG EQU 32H.1
CONF_FG EQU 32H.2
ACK_FG EQU 32H.3
DATD_L EQU 33H
DATD_H EQU 34H
M_FG EQU 35H.0
OVERFLOW EQU 35H.1 ;UP 32DIGITAL FLAG
M_DIAL_FG EQU 35H.2 ;
adjourn_fg equ 35h.3
IN_POINT EQU 36H
OUT_POINT EQU 38H
FLUSHCNT EQU 3AH
eepromh EQU 3BH.0
flashf EQU 3BH.1
flashr EQU 3BH.2
fuck_chen_gx equ 3BH.3 ;debug add !!!!
I_DIALBUF EQU 40H ;KEY CODE BUFFER START ADDRESS TO 60H
DATA_BUFF EQU 70H
;=======================================================================
ORG 0000H
VENT0 0,0,RESET ;JUMP TO RESET ADDRESS
ORG 0002H
VENT1 0,0,INTB ;JUMP TO INTB ADDRESS
VENT2 0,0,INT0 ;HOOK DET
ORG 000AH
VENT5 0,0,INTT0 ;JUMP TO INTT0 ADDRESS
VENT6 0,0,INTT1 ;JUMP TO INTT1 ADDRESS
RESET
DI
BITR EMB
LD EA,#01000000B
LD PMG2,EA ;SET DP(P5.2) TO HIGHT LEVER
BITS DP
RAMCLR SMB 0 ;CLEAR RAM(020H-0FFH)---BANK0
LD HL,#20H
LD A,#0H
RAMCLR0 LD @HL,A
INCS HL
JPS RAMCLR0
BITS EMB
SMB 1 ;CLEAR RAM(100H-1FFH)---BANK1
LD HL,#00H
LD A,#0H
RAMCL1 LD @HL,A
INCS HL
JPS RAMCL1
SMB 2 ;CLEAR RAM(200H-2FFH)---BANK2
LD HL,#00H
LD A,#0H
RAMCLR2 LD @HL,A
INCS HL
JPS RAMCLR2
BITR EMB
LD EA,#00000111B
LD PMG1,EA ;SET P3,P2.3 TO INPUT MODE
BITS P2.0
BITS P2.1
BITS P2.2
ld ea,#0ffh
ld pmg2,ea
LD EA,#00H
LD PMG3,EA ;SET P6.P7 PORTS TO INPUT MODE
LD EA,#01110000B
LD PMG4,EA ;SET P8 TO INPUT MODE P9 TO OUTPUT
LD EA,#00H
LD PNE1,EA ;RESET VALUE 0 0--PUSH-PULL OUTPUT
;1--N-CHANNEL OPEN-DRAIN OUTPUT
ld ea,#08h
LD PUMOD1,EA ;DISABLE ALL PULL-UP RESISTOR
;P5.P4.P3.P2.P1.3-P1.0
ld a,#0100B
LD PUMOD2,A ;P6.P7.P8.P9
LD IMOD2,A ;INTERRUPT REQUEST AT P1.2
;TRIGGERED BY FALLING EDGE
LD A,#2H
LD IMOD0,A ;EXTERNAL BY FALLING/RISING EDGE
;(IMOD1-INT1 NOT USE)
LD EA,#00H
LD SP,EA ;RESET SP CLEAR (SP)
BITR IS0
BITR IS1 ;ENABLE ALL INTERRUPTS
LD IPR,A ;RESET VALUE IS LOGIC ZERO
;IPR.2-0 000/NORMAL 001/INTB.INT4
;010/INT0 011/INT1 101/INTT0 110/INTT1
LD CLMOD,A ;SELECTION CLOCK FREQUENCY=Fx/4=3.58M/4
LD A,#0011B ;ENABLE NORMAL CPU OPERATING MODE &
LD PCON,A ;SELECTION CUP CLOCK FREQUENCY=fx/4
LD A,#0111B
LD BMOD,A
LD EA,#00H
LD WMOD,EA ;DISABLE BUZ OUTPUT.DISABLE WATCH TIMER ; TO 0.5 SECONDS
;AND CLEAR FREQUENCY DIVIDING CIRCUIT
;SET IRQW TO 0.5 SECONDS
LD DTMR,EA ;DTMR.7-4 0000 FUNCTION KEY D
;0001/1,0010/2,0011/3,0100/4
;0101/5,0110/6,0111/7,1000/8
;1001/9,1010/0,1011/*,1100/#
;1101/A,1110/B,1111/C
;DTMR.0----0/1 DISABLE/ENABLE DTMF
BITS IE0 ;ENABLE INT0 INTERRUPT (P1.0--HOOKDET)
BITR IRQ0
BITR IE1 ;DISABLE INT1 INTERRUPT (P1.1--ST) BITR IRQ0
BITR IRQ1
BITS IE2 ;ENABLE (INT2)/KS0-KS7 INTERRUPT
BITR IRQ2 ;IRQ2 FLAG MUST BE CLEAR BY SOFTWARE
BITR IE4 ;DISABLE INT4 INTERRUPT (P1.3--T/PDET)
BITR IRQ4
BITR IEB ;DISABLE INTB INTERRUPT
BITR IRQB
BITS IET0 ;ENABLE INTT0 INTERRUPT
BITR IRQT0
BITS IET1 ;ENABLE INTT1 INTERRUPT
BITR IRQT1
BITR IEW ;DISABLE INTW INTERRUPT
BITR IRQW ;IRQW FLAG MUST BE CLEAR BY SOFTWARE
LD EA,#01110000B
LD TMOD0,EA ;TMOD0.6-.4 ---SELECT CLOCK P4-28
BITR TOE1 ;DISABLE TIME/COUNT1 OUTPUT TO TCLO1
BITR TOE0 ;..................0...........TCLO0
BITR BOE ;DISABLE BASIC TIME OUTUP AT THE BTCO
LD TMOD1,EA
BITS WDTCF ;CLEARS THE WATCHDOG TIMER COUNTER
LD EA,#5AH
LD WDMOD,EA ;DISABLE WATCHDOG TIMER FUNCTION
BITR P9.0 ;RESET VOLUME
BITR P9.1 ;HI_VOLUME
BITS P9.2
BTSF P1.0
LD EA,#00H
LD PMG2,EA
BITS RMUTE
BITS LINE1_BIT
bits last_p1
bits sel_line_fg
BITS flashf
bits flashr
bits eepromh
ld wx,#00h
call READ_BYTE
LD A,DATD_L
DECS A
JR READFLASH
JR READFLASH3
READFLASH ADS A,#4H
JR READFLASH1
READFLASH3 LD A,#6H
JR READFLASH2
READFLASH1 LD A,DATD_L
READFLASH2 DECS A
ld FLUSHCNT,a ;initial flash value
CALL BSTOP
bitr eepromh
EI
btsf p1.0
jps go_stop
call int0
bitr irq4
bits ie4
;jps in_stop
jps main
go_stop btsf p1.3
jps next2
bits spk_key_fg
ld ea,#03h
ld key_value,ea
bitr irq4
bits ie4
bitr mute
bitr hfo
jps main
;===========================================================================
MAIN: ;BTSF IRQ2
CALL INT2
LD A,KEY_COUNT
CPSE A,#1H
JPS NEXT
CALL KEY_FUNCTION
LD A,#0001B
LD IMOD2,A ;KS4-KS7(P7) FALLING EDGE SELECT
call onhook_scan
btst onhook_state
jps next1
call p6_mode
jps dddd
dddd LD EA,#0F8H
LD PUMOD1,EA ;ENABLE P2 P3 P4 P5 PULL-UP RESISTORS
;DISABLE P1 PULL_UP RESISTOR
LD EA,#0FFH
LD PMG1,EA ;ENABLE P2,P3 TO OUTPUT MODE
LD PMG2,EA ;ENABLE P4,P5 TO OUTPUT MODE
LD EA,#01111111B
LD PMG4,EA ;ENABLE P8,P9 TO OUTPUT MODE
LD A,#0H
LD P2,A ;P2,P3, OUTPUT LOW LEAVE
LD P3,A
LD P8,A ;P8 OUTUP LOW LEAVE
BITR IRQ2
BTSF STORE_FG
JPS NEXT
LD EA,IN_POINT
LD WX,EA
LD EA,OUT_POINT
CPSE EA,WX
CALL DIALER
;//// qpj debug add jul/4
btst spk_key_fg
jps next
bitr spk_key_fg
; bits fuck_chen_gx ;7/5 add qpj
jps noreset_int1 ;main
;//// qpj debug add jul/4
NEXT BITS RMUTE
btsf nousedail_fg
jps next1
BTSF IRQ2 ;AWARD ON/OFF STOP 0--OFF/1--ON
JPS MAIN
CALL ONHOOK_SCAN
next1:
;pm.pm. qpj
BTSF ONHOOK_STATE ;1--OFFHOOK 0--ONKOOK
JPS IN_STOP1
next2:
;qpj
btsf hfo
jps in_stop_fuck ;pm.pm. qpj
call p9_mode
BITR P9.0
BITR P9.1 ;HI_VOLUME
bits p9.2 ;BITS P9.2
LD A,#0001B
LD IMOD2,A ;KS4-KS7(P7) FALLING EDGE SELECT
LD EA,#00H
LD PMG3,EA ;P7 INPUT MODE /P6 inPUT MODE
LD A,#2H ;#0eh
LD PUMOD2,A ;ENABLE P7 ,dis P8 P9 PULL-UP RESISTORS
LD EA,#08H ;30h
LD PUMOD1,EA ;ENABLE P2 P3 PULL-UP RESISTORS
;DISABLE P1 p4 p5 PULL_UP RESISTOR
LD EA,#0FFH
LD PMG1,EA ;ENABLE P2,P3 TO OUTPUT MODE
LD PMG2,EA ;ENABLE P4,P5 TO OUTPUT MODE
LD EA,#01111111B
LD PMG4,EA ;ENABLE P8,P9 TO OUTPUT MODE
LD A,#0H
LD P2,A ;P2,P3, OUTPUT LOW LEAVE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -