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

📄 tf9925h.src

📁 2.4GH 无绳电话源代码(三星MCU), 8825 P
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;***************************************
; Skip to next channel routine (by 7)
; 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      ; EA >= 41 ?
        LD      EA,WX
        ADS     EA,#1                   ; Yes, EA = (EA-41)+1
        RET
	;
;***********************************************************
; RSSI check routine
; o/p : carry set - channel free, carry clr. - channel busy
; reg.: EA - channel busy count
;       HL - RSSI check loop time
;***********************************************************
RSSI_CHECK:
	LD      HL,#ND_CHK_TIME-1
	LD      EA,#00000000B
RSSI_CHK_LP:
	INCS	A
;       BTST    SIGOUTPORT.SIGOUT       ; logic low - channel idle
        BTSF    SIGOUTPORT.SIGOUT
        LD      EA,#0
RSSI_CHK_LP1:
	DECS    L
	JR      RSSI_CHK_LP
	LD	HL,#(ND_CHK_TIME+1)/2	; busy count >= 8 ?
	RCF
	SBC	EA,HL
        NOP
	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
;****************************************************************************
CHK_RXD:
	BTST	RXFGH.DATA_RCVD
        RET
	BITR	RXFGH.DATA_RCVD
CHK_RXDID:
	LD	HL,#RXD_BUF		; check security code match ?
	LD	EA,SECODEL
	SMB	1
	CPSE	EA,@HL
	JPS	CHKRXD_END
	INCS	HL
	INCS	HL
	SMB	0
	LD	EA,SECODEH
	SMB	1
	CPSE	EA,@HL
	JR	CHKRXD_END
	INCS	HL
	INCS	HL
	SMB	1
	LD	EA,@HL       		; get received data
	SMB	0
CHKRXD_QUIT:
        SRET
        ;
CHKRXD_END:
	SMB	0
	RET
	;
;**************************************
; Send command routine
; i/p : none
; o/p : enable transmit data
;**************************************
SENDCMD:
	;
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 frame preceded with 1 sync bit gap
; i/p : (TXCODE_BUF) - txcode
;*****************************************************
SEND_SYNC_CMD:
	;
SEND_SYNC_CMD1:
	JPS     SENDCMD1
	;
;**************************************
; Set send code continously routine
; i/p : A - transmit code
;**************************************
SEND_C_CODE:
	BITR	TXFG.TXEN		; stop transmit code
	LD	TXCODE_BUF,EA		; tx code
        BITS    TXFGH.TX_START
	BITS	TXFGH.TX_CONT		; enable continously send
	BITS    TXFG.S_PREAMBLE
	BITS	TXFGH.S_DUMMY
	BITS    TXFG.TXEN		; enable data transmit
	RET
	;
;*******************************
; Send command N times routine
; i/p : C - number of times
;*******************************
SEND_NCMD:
        LD      SCAN_CNT,A
        CALL    MUTE_COMBO
	;
SEND_NCMD1:
        BITS    TXFGH.TX_START
	BITS    TXFG.S_PREAMBLE
	BITS	TXFGH.S_DUMMY
        BITR    TXFGH.TX_CONT
	BITS    TXFG.TXEN		; enable data transmit
	;
WAIT_SEND:
        CALL    TIMERDEC
        CALLS   BEEP_CHK
	BTSF    TXFG.TXEN
	JR      WAIT_SEND
        INCS    SCAN_CNT
	JPS     SEND_NCMD1
	RET
	;
;***********************************
; Send command for mutiple times
; i/p : A - send code times
; ram : SCAN_CNT - send code count
;***********************************
WAIT_SND_OVR:
        LD      SCAN_CNT,A
WAIT_SND1:
        BITS    TXFGH.TX_START
        BITS    TXFG.S_PREAMBLE
        BITS    TXFGH.S_DUMMY           ; send dummy stop bits
        BITR    TXFGH.TX_CONT
        BITS    TXFG.TXEN
WAIT_SND2:
        CALL    TIMERDEC                ; update LED blink
        BTSF    TXFG.TXEN
        JR      WAIT_SND2
        INCS    SCAN_CNT
        JPS     WAIT_SND1
        RET
        ;
;***************************************
; Transmit command for number of times
; i/p : C - number of times
;***************************************
TX_CMD:
        LD      SCAN_CNT,A
        ;
        CALL    MUTE_COMBO
TX_CMD1:
        BITS    TXFGH.TX_START
        BITS    TXFG.S_PREAMBLE
        BITS    TXFGH.S_DUMMY
        BITS    TXFG.TXEN
	;
WT_TXEND:
	BTSF	RXFGH.DATA_RCVD		; if ack data rcvd, quit to check
	JR	STOP_TX
	BTSF    TXFG.TXEN
	JR      WT_TXEND
        INCS    SCAN_CNT
	JPS     TX_CMD1
	RET
	;
STOP_TX:
        LD      EA,#0                   ; 2002-04-15
        LD      TXFG,EA
;       BITR    TXFG.TXEN               ; stop transmit code
;       BITR    TXFG.S_PREAMBLE
;       BITR    TXFGH.S_DUMMY
;       BITR    TXFGH.TX_CONT
	RET
	;
;******************************
; Wait finish data send routine
;******************************
WAIT_SEND_END:
	BTSF    TXFG.TXEN
	JR      WAIT_SEND_END
	RET
	;
;***************************************************
; Set timeout routine (timeout = 270ms x RETRY_CNT)
; i/p : A - RETRY_CNT (@90ms)
;***************************************************
SET_6S_TOC:
	LD      EA,#67                  ; 6 sec.
SET_TOC:
	LD      RETRY_CNT,EA
	LD	EA,#TX_TIMESLOT
	LD      TX_TIMER2,EA
	BITS    TXFG.RETRY
	BITS    TXFG.TX_DISABLE
	RET
	;
;********************************
; Set loop timeout count
; i/p : A - loop time (@100ms)
;********************************
SET_LPTOC:
	LD	LOOP_CNT,EA
	BITS	TIMERFGH.LPTMR_EN
	RET
	;
;**********************************
; Wait settle time expire routine
; i/p : A - settle time value
;**********************************
WAIT_SETTLE:
	LD      TIMER1,EA
WAIT_SETTLE1:
        CALL    TIMERDEC
	LD      EA,TIMER1
	DECS    EA
	JR      WAIT_SETTLE1
WSETTLE_QUIT:
	RET
	;
;*********************
; Wait delay routine
;*********************
WAIT_DELAY:
	LD      TIMER1,EA
WAIT_DELAY1:
	LD      EA,TIMER1
	DECS    EA
	JR      WAIT_DELAY1
	RET
	;
;***************************************************
; Wait hundred msec delay routine ( 100ms - 25.5s )
; i/p : A - delay time ( x 100ms )
;***************************************************
WAIT_100MS:
        CALLS   SET_LPTOC
WAIT_DLY1_LP:
        CALL    TIMERDEC
        CALLS   BEEP_CHK
        CALL    UPD_REAL_TIME
        BTSF    TIMERFGH.LPTMR_EN
        JR      WAIT_DLY1_LP
	RET
	;
;**********************
; Timeout timer check
;**********************
TIMEOUT_CHK:
	;---------------------------------
	; View memory / CID timeout check
	;---------------------------------
	SMB	1
	BTST	VIEW_FLAGH.VIEWTMR_ON	; view timer on ?
        JPS     Q_TOC_CHK
	LD	EA,VIEW_TIMER		; timeout ?
        ADS     EA,#0FFH
        JPS     TIMEOUT_CHK1
	;
        BTST    PROG_FLAG.PROG_RNGER
        JPS     TIMEOUT_CHK3
        ;
        SMB     0
        BTSF    DIAL_FGH.RING_LO
        JPS     Q_TOC_CHK
        BTST    CHK_FLAG.BUZZER_ON
        CALL    DUAL_TONE
        JPS     Q_TOC_CHK
	;
TIMEOUT_CHK3:
        BTST    VIEW_FLAG.EEP_VIEW      ; viewing memory/CID ?
	JPS	Q_TOC_CHK
        ;
        BTSF    OPER_FG.CID_TO_MEM      ; copy CID to memory ?
        JPS     Q_TOC_CHK
        ;
        BTST    DISP_FLAG.SWITCH_PAGE   ; switch display timer on ?
	JPS	Q_TOC_CHK
        ;
        LD      EA,DISP_TIMER
        DECS    EA
        JPS     Q_TOC_CHK
        ;
        LD      EA,#30-1                ; yes, reload 3 sec. timer count
        LD      DISP_TIMER,EA
        ;
        BTSF    VIEW_FLAGH.PAGE_2       ; viewing 1st page number ?
        JP      VIEW_P1_NUM
        JP      VIEW_P2_NUM
	;
TIMEOUT_CHK1:
	SMB	0
        BTST    MODEFG.TALK_MODE        ; in talk mode, not clear display
        JPS     TIMEOUT_CHK2
        SMB     1
        BTST    VIEW_FLAG.CID_VIEW      ; viewing CID record ?
        JR      VIEW_TIMEOUT            ; quit memory dial mode
	;
        BITR    DISP_FLAGH.OFF_TMRDSP   ; enable call timer display
        CALLS   MEMDIAL_ERR
        JP      WR_2_DIGBUF
        ;
TIMEOUT_CHK2:
        BITR    DIAL_FG.FIRSTKEY        ; clr. modified flag
VIEW_TIMEOUT:
	CALL	DISP_STDBY_CHK		; display standby check
        CALLS   OFF_BACKLED             ; off back led
        ;
        BTSF    MODEFGH.MEM_DIAL        ; quit memory dial at TALK mode if any
        JPS     MEMDIAL_ERR
        ;
        SMB     1
        BTST    PROG_FLAG.PROG_RNGER    ; program ringer ?
        JR      TIMEOUT_CHK4
        SMB     0
        CALLS   BEEP_END                ; stop ring test
        JPS     VIEW_STDBY
        ;
TIMEOUT_CHK4:
        BTSF    VIEW_FLAG.REDIAL_VIEW   ; viewing dialed call ?
        JPS     VIEW_ERROR
        ;
        BTSF    MEM_FLAG.ENT_LOC        ; viewing memory ?
        JPS     VIEW_ERROR
        ;
        BTSF    VIEW_FLAG.EEP_VIEW      ; viewing memory/CID ?
        JPS     VIEW_ERROR
        ;
        BTSF    PROG_FLAG.PROG_MODE      ; program memory,LAC or ringer ?
        JPS     VIEW_ERROR
	;
        BTST    OPER_FG.PREDIAL         ; predial ?
        JR      VIEW_STDBY              ; ringing or keypress in talk mode ?
        ;
VIEW_ERROR:
        CALLS   ERROR_TONE
VIEW_STDBY:
        CALLS   MEMORY_END
	;
Q_TOC_CHK:
	SMB	0
	RET
	;
        ;-----------------------------------------------
        ; quit memory dial mode, display channel number
        ;-----------------------------------------------
MEMDIAL_ERR:                            ; error tone & quit memory dial
        CALLS   ERROR_TONE
MEMDIAL_END:
        CALLS   DISP_CHAN_NUM           ; clr. memo icon display
        JPS     MEMORY_END
	;
;******************************************************************
; Stop view timer, quit view mode, emit error tone, clear display
;******************************************************************
MEMERR_STDBY:
        CALLS   ERROR_TONE              ; error tone
SYSPROG_END:
END_VIEW:
        CALL    DISP_STDBY_CHK		; display standby check
        CALLS   OFF_BACKLED             ; off back led
MEMORY_END:
	SMB	1
	LD	EA,#0
        LD      MEM_FLAG,A              ; exit memory mode

⌨️ 快捷键说明

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