⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ct0hslcd1.src

📁 用三星MCU实现的完整无绳电话程序,来自三星公司内部资料,供参考.
💻 SRC
📖 第 1 页 / 共 5 页
字号:
                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 + -