📄 tf9925h.src
字号:
;***************************************
; 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 + -