📄 ct0hslcd1.src
字号:
ORG 0020H
SEL_0 SMB 0
SEL_1 SMB 1
SEL_14 SMB 14
SEL_15 SMB 15
PUSHSB PUSH SB
POPSB POP SB
ZERO2EA LD EA,#00H
INCSEA ADS EA,#01H
DECSEA DECS EA
EA2T_MUTE LD T_MUTE,EA
T_MUTE2EA LD EA,T_MUTE
EA2TX_CMD LD TX_CMD,EA
T_FUNCTO2EA LD EA,T_FUNCTO2
EA2T_FUNCTO2 LD T_FUNCTO2,EA
SKEAEQHL CPSE EA,HL
SET1TX TCALL ST1TX
SET5TX TCALL ST5TX
SET10TX TCALL ST10TX
SET15TX TCALL ST15TX
SETCTX TCALL STCTX
STOP_TX TCALL STP_TX
STOP_RING TCALL RING_STOP
TIMRDEC TCALL TMRSDEC
ACTI_MODE TCALL MODE_ACTIVE
RT_RF_MODE TCALL MODE_RT_RF
R_RF_MODE TCALL MODE_R_RF
INAC_MODE TCALL MODE_INACTIVE
CLKDATA TCALL SPI
LODCODE TCALL LCODE
SELBANK TCALL SEL_BANK
KEYSCAN TCALL KEY_SCAN
KEYTONE TCALL G_KEYTN
LCDREDRAW TCALL UPDATE_CH
PRINT_MSG TCALL DIS_MESS
ORG 0080H ; NOT RELOCATABLE !!!
;REFREG: DB 1784*4,(1784*4)/256 ; FRENCH REF. @6250Hz w/11.15MHz
REFREG: DB 2048*4,(2048*4)/256 ; USA REF. @5000Hz w/10.24MHz
; HANDSET PLL TABLE (SAME AS THAT IN MOTOROLA MC13109 DATA BOOK)
; PLL TABLE CAN BE CHANGED IN ORDER TO REARRANGE THE CHANNEL SEQUENCE
;PLLTXRX: DB 6610,6610/256,5922,5922/256 ; CH0 41.3125
; DB 6612,6612/256,5924,5924/256 ; CH1 41.3250
; DB 6618,6618/256,5930,5930/256 ; CH4 43.3625
; DB 6628,6628/256,5940,5940/256 ; CH9 41.4250
; DB 6632,6632/256,5944,5944/256 ; CH11 41.4500
; DB 6614,6614/256,5926,5926/256 ; CH2 41.3375
; DB 6616,6616/256,5928,5928/256 ; CH3 41.3500
; DB 6622,6622/256,5934,5934/256 ; CH6 41.3875
; DB 6634,6634/256,5946,5946/256 ; CH12 41.4625
; DB 6638,6638/256,5950,5950/256 ; CH14 41.4875
; DB 6620,6620/256,5932,5932/256 ; CH5 41.3750
; DB 6624,6624/256,5936,5936/256 ; CH7 41.4000
; DB 6626,6626/256,5938,5938/256 ; CH8 41.4125
; DB 6630,6630/256,5942,5942/256 ; CH10 41.4375
; DB 6636,6636/256,5948,5948/256 ; CH13 41.4750
PLLTXRX: DB 9934,9934/256,7183,7183/256 ; CH1 49.670
DB 9969,9969/256,7187,7187/256 ; CH2 49.845
DB 9972,9972/256,7195,7195/256 ; CH3 49.860
DB 9954,9954/256,7203,7203/256 ; CH4 49.770
DB 9975,9975/256,7207,7207/256 ; CH5 49.875
DB 9966,9966/256,7215,7215/256 ; CH6 49.830
DB 9978,9978/256,7227,7227/256 ; CH7 49.890
DB 9986,9986/256,7235,7235/256 ; CH8 49.930
DB 9998,9998/256,7247,7247/256 ; CH9 49.990
DB 9994,9994/256,7255,7255/256 ; CH10 49.970
TN_BATT: DB 0A8H,00H ; 80ms ON
TN_ERR: DB 9EH,11H ; 60ms ON, 34ms OFF
DB 9EH,11H ; 60ms ON, 34ms OFF
DB 9EH,11H ; 60ms ON, 34ms OFF
DB 9EH,00H ; 60ms ON
TN_CONF: DB 94H,0AH,94H,00H ; 40ms ON, 20ms OFF, 40ms ON
KCODE: DB KEY1 ; KEY 1
DB KEY2 ; KEY 2
DB KEY3 ; KEY 3
DB KEY4 ; KEY 4
DB KEY5 ; KEY 5
DB KEY6 ; KEY 6
DB KEY7 ; KEY 7
DB KEY8 ; KEY 8
DB KEY9 ; KEY 9
DB KEYSTAR ; KEY *
DB KEY0 ; KEY 0
DB KEYHASH ; KEY #
DB PAUSE ; PAUSE/REDIAL
DB DELETE ; clear/delete
DB FLASH ; FLASH / flash/new
DB MUTE ; edit/mute/save
DB BKWARD ; BACKWARD / <</vol-
DB FRWARD ; FORWARD / >>/vol+
DB TALK ; TALK
DB MENU ; MENU / menu/okay
DB CHANL ; CHANNEL / channel/quit
DB TONE ; TONE
DB TONE ; TONE
DB TONE ; TONE
DB TONE ; TONE
DB TONE ; TONE
DB TONE ; TONE
DB TONE ; TONE
LCODE: LDC EA,@EA
RET
; CHECK IF IT IS TRANSMITTING DATA ============================================
;ISTRANSMIT: BTST F_TXMODE
; SRET
; RET
; CLEAR DIGIT BUFFER
CLR_DIGBUF:
REF PUSHSB
REF SEL_1
LD EA,#0FFH
LD DIGIT_BUF,EA
REF POPSB
RET
; ENTER CHARGE DETECTION ROUTINE ==============================================
; CHGENTDET: CHARGE MODE ENTERING DETECTION (DEBOUNCED)
; RETURN IF CHARGE MODE IS ENTERED
; RETURN SKIP IF CHARGE MODE IS NOT DETECTED
; TMRSDEC ROUTINE MUST BE CALLED IN ALL LOOPS IN ORDER TO KEEP CHGENTDET WORKS
; e.g.
; CALL CHGENTDET
; JPS CHG_MODE
; GO ON NEXT PROCESS
; :
;
; INPUT : NONE
; OUTPUT: NONE
; A IS CHANGED AT RETURN
CHGENTDET: LD A,CHGCNT
ADS A,#0BH ; ENTER CHARGE MODE WHEN CHGCNT=5
SRET
RET
; QUIT CHARGE DETECTION ROUTINE ===============================================
; CHGQUIDET: CHARGE MODE QUITING DETECTION (DEBOUNCED)
; RETURN SKIP IF CHARGE MODE IS QUITED
; RETURN IF CHARGE MODE IS NOT QUITED
; TMRSDEC ROUTINE MUST BE CALLED IN ALL LOOPS IN ORDER TO KEEP CHGQUIDET WORKS
; e.g.
; CALL CHGQUIDET
; JPS CHG_QUIT
; GO ON NEXT PROCESS
; :
;
; INPUT : NONE
; OUTPUT: NONE
; A IS CHANGED AT RETURN
CHGQUIDET: LD A,CHGCNT
DECS A ; QUIT CHARGE MODE WHEN CHGCNT=0
RET
SRET
; SETUP TRANSMISSION DATA PARAMETERS ==========================================
; ST_1TX: ISSUE COMMAND TO TRANSMIT 1 DATA PACKET ONLY, e.g. "REF SET1TX"
; ST_5TX: ISSUE COMMAND TO TRANSMIT 5 DATA PACKETS, e.g. "REF SET5TX"
; ST_10TX: ISSUE COMMAND TO TRANSMIT 10 DATA PACKETS, e.g. "REF SET10TX"
; ST_15TX: ISSUE COMMAND TO TRANSMIT 15 DATA PACKETS, e.g. "REF SET15TX"
; ST_CTX: ISSUE COMMAND TO TRANSMIT DATA PACKET CONTINUOUSLY, e.g. "REF SETCTX"
; INPUT : NONE
; OUTPUT: F_TXREP,F_START1,F_TXIDNOW,F_TXMODE,F_ENDTX,TX_CNT
; NO REGISTER IS CHANGED AT RETURN
STCTX: PUSH EA
BITS F_TXREP ; SETUP TX PACKET REPEATLY
LD A,#0FH
JR SETCCTX
ST15TX: PUSH EA
LD A,#1H ; SETUP TX 15 PACKETS
JR SETTX
ST10TX: PUSH EA
LD A,#6H ; SETUP TX 10 PACKETS
JR SETTX
ST5TX: PUSH EA
LD A,#0BH ; SETUP TX 5 PACKETS
JR SETTX
ST1TX: PUSH EA
LD A,#0FH ; SETUP TX 1 PACKET
SETTX: BITR F_TXREP
SETCCTX: LD TX_CNT,A ; LOAD PACKET COUNTER
BTSF F_TKMODE
CALLS MUTETX ; MUTE TX AUDIO IF IN TALK MODE
BITS F_START1 ; SEND DUMMY BITS FIRST
BITS F_TXIDNOW ; SEND I.D. BEFORE COMMAND
BITS F_TXMODE ; TRANSMISSION IN PROGRESS NOW!
BITR F_ENDTX
REF PUSHSB
REF SEL_15
LD EA,#01111111B ; P3=OUTPUT, P3.1=TXDATA=OUTPUT
LD PMG2,EA
REF POPSB
JPS RELD_ID
; STOP DATA TRANSMISSION ======================================================
; STP_TX: STOP TX DATA PACKET JOB IMMEDIATELY BY RESETING ALL CONTROL PARAMETERS
; e.g.
; REF STOP_TX
; INPUT : NONE
; OUTPUT: F_TXMODE,F_ENDTX,T_MUTE,F_RELMUTE
; NO REGISTER IS CHANGED AT RETURN
STP_TX: PUSH EA ; <-----------------------------------+
REF PUSHSB
REF SEL_15
LD EA,#01111101B ; P3=OUTPUT, EXCEPT P3.1=TXDATA=INPUT
LD PMG2,EA
REF POPSB
BITR F_TXMODE ; DATA PORT WILL BE RESUME NORMINAL |
BITR F_ENDTX ; CLEAR END OF TRANSMISSION FLAG |
BITS F_RELMUTE ; SET MUTE RELEASE FLAG |
LD EA,#7 ; |
BTSF F_TKMODE ; |
REF EA2T_MUTE ; EXTEND 42ms MUTE TIME AFTER TX DATA |
RELD_ID: REF PUSHSB ; <--------------------------------+ |
REF SEL_0 ; | |
LD EA,UID_H ; BSC0,1,2,3 <-- UID | |
REF SEL_15 ; | |
LD BSC2,EA ; | |
REF SEL_0 ; | |
LD EA,UID_L ; | |
REF SEL_15 ; | |
LD BSC0,EA ; | |
REF POPSB ; <--------------------------------+ |
POP EA ; <-----------------------------------+
RET
; WAIT UNTIL TRANSMISSION OVER ================================================
; WAITXOVR: LOCAL WAIT UNTIL DATA PACKET TRANSMISSION IS FINISHED, TMRSDEC IS
; CALLED SO THAT SYSTEM TIME IS KEPT RUNNING DURING WAIT PERIOD.
; INPUT : NONE
; OUTPUT: F_ENDTX=1
; NO REGISTER IS CHANGED AT RETURN
WAITXOVR: REF TIMRDEC ; KEEP SYSTEM TIME RUNNING
BTST F_ENDTX ; CHECK IF TRANSMISSION OVER
JR WAITXOVR
RET
; KEY PRESS DETECTION =========================================================
; KEY_SCAN: KEY MATRIX SCAN ROUTINE, KEY PRESS DEBOUNCE IS DONE, KEY RELEASE DEBOUNCE IS
; DONE IN TMRSDEC ROUTINE. WHEN A VALID KEY IS DETECTED, KEYCODE IS SAVED AT
; KEYCODE LOCATION AND RETURN SKIP TO MAIN PROGRAM. OTHERWISE, RETURN.
; e.g.
; REF KEYSCAN ; CALL KEY_SCAN
; JPS NO_KEY_PRESS
; LD HL,#TALK
; CPSE EA,HL
; JPS GO_NEXT_COMPARE
; PROCESS TALK KEY EVENT
; :
; INPUT : NONE
; OUTPUT: EA,KEYCODE,KSEQ
; EA WILL BE CHANGED AT RETURN
KEY_SCAN: BTST F_WAITFLAG
JPS KSCN3
LD EA,T_LKCNT ; CHECK IF KEY IS PRESSED FOR 2sec
REF DECSEA
JR KSCN11
LD EA,KEYCODE ; YES, CHANGE KEYCODE
ADS EA,#18 ; 1Dh->2Fh, 1Eh->30h
LD KEYCODE,EA
JR KSCN12
KSCN11: CALLS READ_KIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -