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

📄 tf9925b.src

📁 2.4GH 无绳电话源代码(三星MCU), 8825 P
💻 SRC
📖 第 1 页 / 共 5 页
字号:
        RRC     A
        XCH     A,W
        ;
        XCH     A,X
        RRC     A
        XCH     A,X
        RET
        ;
;**************************************
; Send command routine
; i/p : EA - command code
; o/p : enable transmit data
;**************************************
SENDCMD:
        REF     SMB1
	LD	TXCODE_BUF,EA		; tx code
	;
SENDCMD2:
        REF     SMB0
	LD	EA,#3
        LD      TXDATA_PTR,EA
	;
SENDCMD1:
        BITS    TXFGH.TX_START
	BITS	TXFG.S_PREAMBLE
	BITS	TXFGH.S_DUMMY
	BITR	TXFGH.TX_CONT
	BITS	TXFG.TXEN		; enable data transmit
	RET
	;
;******************************
; Send command N times routine
; i/p : YZ - number of times		
;	EA - tx code			
;******************************
SEND_NCMD:
        REF     SMB1
	LD	TXCODE_BUF,EA
        ;
SEND_NCMD1:
        CALLS   SENDCMD2                ; enable data transmit
	;
WAIT_SEND_END:
        REF     TIMERDEC                ; === 00/09/06
	;
	BTSF	TXFG.TXEN		; wait until finish sending before
	JR	WAIT_SEND_END		; send next frame
	;
        INCS    SCAN_CNT
	JPS	SEND_NCMD1
	RET
	;
;*****************************************************
; Send command frame preceded with 1 sync bit gap
; i/p :	EA - txcode			
;*****************************************************
SEND_SYNC_CMD:
        REF     SMB1
	LD	TXCODE_BUF,EA		; tx code
	;
        REF     SMB0
        LD      EA,#3
        LD      TXDATA_PTR,EA
	;
SEND_SYNC_CMD1:
        JPS     SENDCMD1                ; tx frame gap = 1 sync bit
	;
;**************************************
; Set send code continously routine
; i/p : EA - transmit code
;**************************************
SEND_C_CODE:
        REF     SMB1
	LD	TXCODE_BUF,EA		; tx code
	;
        REF     SMB0
        REF     STOP_TX
	LD	EA,#3
        LD      TXDATA_PTR,EA
	;
        BITS    TXFGH.TX_START
	BITS	TXFG.S_PREAMBLE
	BITS	TXFGH.TX_CONT		; enable continously send
	BITS	TXFGH.S_DUMMY
	BITS	TXFG.TXEN		; enable data transmit
	RET
	;
;*****************************************
; Resend data routine ( @45ms )
; i/p : TXCODE_BUF - tx command
;     : RETRY - set if enable retry send
; o/p :				
;*****************************************
RESEND_CHK:
	BTST	TIME_FLAG.TIMER2FG	; 45ms arrive ?
        RET
	BITR	TIME_FLAG.TIMER2FG
	;
;*****************************************************************************
; Auto disconnect check (30 sec)
; note: send out range command for every 3 sec. during out of range
;     : release line when channel noise has been continously exist for 30 sec.
; ram : OUTRNG_CNT  - out of range command send count (@45ms)
;     : CUTLINE_CNT - auto cut line counter (@3sec)
; flag: CH_NOISE    - set if channel noise is detected		
;*****************************************************************************
AUTOCUT_CHK:
	BTST	MODEFG.TALK_MODE
        RET
	BTSF	MODEFG.CHGCH_MODE
        RET
	;
        BTSF    SIGOUTPORT.SIGOUT                
	JR	AUTOCUT1
	BITR	STSFG1.CH_NOISE
	RET
	;
AUTOCUT1:
        BTSF    STSFG1.CH_NOISE         ; channel noise detected
        JR      AUTOCUT4
        BITS    STSFG1.CH_NOISE
	JPS	AUTOCUT2
        ;
AUTOCUT4:
	LD	EA,OUTRNG_CNT
        REF     EAEQZERO
	JR	AUTOCUT6
	LD	OUTRNG_CNT,EA
        RET
	;
AUTOCUT6:
	BITR	TXFG.TXEN		; 2000-04-27
	LD	EA,#OUTRNG_CMD		; send out of range command
        REF     SMB1
	LD	TXCODE_BUF,EA
        REF     SMB0
	;
	SRB	2
	LD	YZ,#20+1-1
	LD	EA,#3
        LD      TXDATA_PTR,EA
	CALLS	SEND_SYNC_CMD1
	;
        LD      EA,CUTLINE_CNT          ; @3sec.
        REF     INCSEA
        LD      CUTLINE_CNT,EA
        ADS     EA,#0F6H
	JR	AUTOCUT3
        JPS     TALKOFF_JOB             ; 30 sec. (10 out range tone)
	;
AUTOCUT2:
        REF     ZERO2EA                 ; reset noise detect count
	LD	CUTLINE_CNT,EA
AUTOCUT3:
        LD      EA,#66-1                ; reload 3 sec. send out range value (@45ms)
	LD	OUTRNG_CNT,EA
AUTOCUT_QUIT:
	RET
	;
;**********************************************************
; Start connect routine (Page connect / Ring connect)
; - Init. send CONNECT command continuously and
;   set maximum send data timeout for one channel = 3 sec.
; relevant routine : CONNECT_CHK
;		   : TIMERDEC		
;**********************************************************
CONNECT:
	BITR	TXPWRPORT.TX_PWR	; on TX power
        CALLS   TXRX_HIGH_INIT          ; set PLL to high charge pump current
        REF     CURCH2EA
	LD	CONNECT_CH,EA		; start with last channel to connect
        CALLS   PROG_PLL
        LD      EA,#10/2
        REF     WAIT_SETTLE
	;
        CALLS   TXRX_ON_INIT
        LD      EA,#20/2
        REF     WAIT_SETTLE 
        ;
	BITS	LINKFGH.CON_SCAN	; start connect scan
	BITR	LINKFG.CONNECTED
	BITR	LINKFG.CH_SCAN		; disable multi-channel scan
	LD	EA,#BS_CONNECT
	CALLS	SEND_C_CODE             ; send connect command continuosly
        LD      EA,#30         
        CALLS   SET_LPTOC               ; start 3 sec. loop timer
	RET
	;
;********************************
; Set loop timeout count
; i/p : EA - loop time (@100ms)		
;********************************
SET_LPTOC:
	LD	LOOP_CNT,EA
	BITS	TIMERFGH.LPTMR_EN
	RET
	;
;********************
; Change channel job
;********************
CHANNEL_JOB:
	BITS	MODEFG.CHGCH_MODE
	;
        CALLS   MUTE_TXRX
	JPS	CON_RESP2
	;
;***************************************
; Skip to next channel routine (by 13)
; i/p : A - channel no.
; o/p : (A+7)mod(40) - new channel no.
;***************************************
NEXTCHAN:
        ADS     EA,#13
        LD      WX,EA
        DECS    WX
        ADS     EA,#255-MAX_40CHAN
        LD      EA,WX
        REF     INCSEA
        RET
        ;
;**********************************
; Wait settle time expire routine
; i/p : EA - settle time (@1ms)   	
;**********************************
WAIT_NMS:
	LD	TIMER1,EA
WAIT_SETTLE1:
        REF     TIMERDEC
	LD   	EA,TIMER1
        REF     EAEQZERO
	JPS	Q_WAIT_SETTLE
	;
	BTST	TIME_FLAGH.T4MS
	JR	WAIT_SETTLE1
	BITR	TIME_FLAGH.T4MS
	CALL	FSKTMROUT_CHK
	CALL	FSK_DATARX		; detect FSK code for connecting every 4ms
        CALL    DTMF_DATARX
	JPS	WAIT_SETTLE1
        ;
Q_WAIT_SETTLE:
	RET
	;
;***********************************************************
; ND check routine
; o/p : carry set - channel free, carry clr. - channel busy
; reg.: HL - channel busy count
;	EA - ND check loop time		
;***********************************************************
ND_CHECK:
	LD	HL,#ND_CHK_TIME-1	; 15 loops
        REF     ZERO2EA
ND_CHECK_LP:
	INCS	A
        BTSF    SIGOUTPORT.SIGOUT       ; SIGOUT=1=free, 0=busy
        REF     ZERO2EA                 ; clr. channel busy count
ND_CHK_LP1:
	DECS	L
	JR	ND_CHECK_LP		
	LD	HL,#(ND_CHK_TIME+1)/2	; busy count >= 8 ?
	RCF
	SBC	EA,HL
        NOP
	RET
	;
;***************************************************
; Stop tx data transmission
; o/p : TX_DISABLE = 0 ( disable timeout counter )
;	RETRY = 0 ( disable resend data )
;       TXEN = 0 ( disable data sending )
;***************************************************
STP_TX:
        REF     ZERO2EA
	LD	TXFG,EA
	RET
	;
;****************************************************************************
; Check received data ID routine
; o/p : carry clr. -  data received with correct ID and stored in register A
;	carry set  -  data rcvd with incorrect ID or no valid data rcvd
;****************************************************************************
CHECK_RXD:
	BTST	RXFGH.DATA_RCVD
        RET
	BITR	RXFGH.DATA_RCVD
CHK_RXDID:
	LD	HL,#RXD_BUF		; check security code match ?
        REF     SMB1
	LD	EA,SECODEL
        REF     SMB0
	CPSE	EA,@HL
        RET
        REF     SMB1
	LD	EA,SECODEH
        REF     SMB0
        REF     INCS2HL
	CPSE	EA,@HL
CHKRXD_END:
        RET
        ;
        REF     INCS2HL
	LD	EA,@HL       		; get received data
        SRET
	;
;********************************
; Rx data decoding routine (B/U)
; i/p : RXD_BUF,DATA_RCVD
; o/p :
;********************************
RXDATA_CHK:
        REF     CHK_RXD                 ; check security code match or not
	JPS	RXD_CHK_QUIT
	;
	;---------------
	; RXDATA Decode
	;---------------
	LD	WX,EA
	LD	HL,#11100000B		; mask out code header
	AND	EA,HL
        LD      HL,EA
        REF     EAEQZERO
	;
	;----------------------
	; Check code header
	;----------------------
        JPS     RX_ACK_CON              ; connect ACK code ? (ring/page link)
	;
        LD      EA,#CMD_CODE
        REF     CPEAHL                  ; command code ?
	JR	RXDATA_CHK2
	JPS	CMD_DECODE
RXDATA_CHK2:
        LD      EA,#DIAL_CODE
        REF     CPEAHL                  ; dial code ?
        JPS     RXD_CHK_QUIT
        ;
	;----------------
	; Dial code rcvd.
	;----------------
DIAL_DECODE:
        LD      EA,WX
        LD      HL,#0FH
        AND     EA,HL                   ; mask out lower nibbles
	LD	HL,#PAUSE_KEY
        SBS     HL,EA
	JR	DIAL_DECODE1
        RET
        ;
DIAL_DECODE1:
;       BTSF    DIAL_FG.FIRSTKEY 
;       JR      STORE_DIGIT
;       BITS    DIAL_FG.FIRSTKEY
;       CALLS   RESET_DIAL_PAR          ; reset dial pointer, bufferfull flag
STORE_DIGIT:
	LD	REDIAL_BUF,A		; store digit code to dial buffer
        CALLS   RXMUTE_CHK
        LD      EA,#5
        LD      MUTE_TMR,EA
	RET
	;
	;-----------------------
	; read dial mode option
	;-----------------------
READ_TP:
        BITS    TONEPULPORT.TP_SW
        ;
        REF     SMB15
        LD      EA,#01110110B
        LD      PMG1,EA
        REF     SMB0
        BITR    STSFG1.F_TONESOFT          ; read T/P status,
        BITR    STSFG1.F_TONEMODE
        ;
        BTST    TONEPULPORT.TP_SW          ; pulse (L) , tone (H)
        JR      IN_TALK
        BITS    STSFG1.F_TONEMODE
        BITS    STSFG1.F_TONESOFT
IN_TALK:
        REF     SMB15
        LD      EA,#01110111B
        LD      PMG1,EA
        REF     SMB0
        ;
RXD_CHK_QUIT:
	RET
	;
	;--------------------------
	; connect ACK code handler
	;--------------------------
RX_ACK_CON:
	LD	EA,WX
	LD	HL,#ACK
        REF     CPEAHL                  ; connect ack (10H) ?
        RET
        ;
	BITS	LINKFG.CONNECTED	; connect request has been acknowledgedRX_ACK_QUIT:
        CALLS   Q_CONSCAN               ; quit connect scan
	RET
	;
	;-------------------
	; Command code rcvd.
	;-------------------
CMD_DECODE:                		; decode command
	LD	EA,WX
        LD      HL,#0F0H
        AND     EA,HL
        LD      HL,#CMD_CODE
        REF     CPEAHL
        RET
        ;
        LD      EA,WX
	LD	HL,#0FH			
	AND	EA,HL
        REF     EAEQZERO                ; EA <- EA-1
        RET
        ;
        LD      HL,#4
	SBS	HL,EA		
	JR	CMD_DECODE2
        RET
CMD_DECODE2:                            ; EA <= 5
        REF     MUL2EA                  ; ADS     EA,EA
	ADS	EA,#(COMMAND_TBL&0FFH)
	JR	@EA
	;	
COMMAND_TBL:
	JPS	CON_ACK_QUIT		; "61H" -- TALKON
	;
       	JPS     TALKOFF_JOB		; "62H" -- TALKOFF
	;
       	JPS     CHAN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -