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

📄 tf9925b.src

📁 2.4GH 无绳电话源代码(三星MCU), 8825 P
💻 SRC
📖 第 1 页 / 共 5 页
字号:
CH_NOISE	EQU	3		; set if ND is activated
STSFG1H		EQU	57H		; status flag 1
TEST1		EQU	0		; tone/pulse change status (test mode)
TEST2		EQU	1		; tx data status (test mode)
TEST3		EQU	2		; muting control (test mode)
KEYHOLD		EQU	3		; set if key is in hold
;***********************
; RAM declaration
;***********************
;
RDIAL_PTR	EQU	58H		; read dial buffer pointer
WDIAL_PTR	EQU	5AH		; write dial buffer pointer
PULSE_CNT	EQU	5CH		; dial pulse number
TIMER1		EQU	5EH		; 1ms timer register
;
DTMFTMR_CNT     EQU     60H             ; 100ms DTMF data singal
LOFREQ_BUF      EQU     62H             ; low freq. group address buffer
HIFREQ_BUF      EQU     64H             ; high freq. group address buffer
LOFREQ_CNT      EQU     66H             ; low freq. sample address buffer
HIFREQ_CNT      EQU     68H             ; high freq. sample address buffer
LOFEND_BUF      EQU     6AH             ; low freq. group end address buffer
HIFEND_BUF      EQU     6CH             ; high freq. group end address buffer
;
RXD_BUF         EQU     70H             ; (009D) - (00A0) data storage buffer
RXD_BUF1        EQU     72H             ; rf data storage byte 2
RXD_BUF2        EQU     74H             ; rf data storage byte 3
RXD_BUF3        EQU     76H             ; rf data storage byte 4
;
RETRY_CNT       EQU     78H             ; resend data counter
TX_TIMER2       EQU     7AH             ; retramsmit slot timer
SCAN_TBL        EQU     7CH             ; channel scan result table
;
RINGCNTL        EQU     7EH             ; ring state counter (low byte)
RINGCNTH        EQU     80H             ; ring state counter (high byte)
RING_PULSE      EQU     82H             ; ring pulse counter
T20MS_BUF       EQU     84H             ; 20ms time buffer      ; 1 nibble
PAGE_TIMER      EQU     86H             ; page timer
CUTLINE_CNT     EQU     88H             ; auto cut line count (30sec)
TIMER4          EQU     8AH             ; auto cut line timer
SCAN_CNT        EQU     8CH             ; scan rssi channel count
SCAN_STS        EQU     8EH             ; scan channel status table
;
DEBOUN_CNT      EQU     90H             ; cradle debounce counter
OUTRNG_CNT      EQU     92H             ; out of range counter (3sec)
CONNECT_CH      EQU     94H             ; connect channel number buffer
;
;************************************
; Warm boot flag & ram declaration
;************************************
OPTION_FG       EQU     96H             ; mask option flag
RECRAD_FG	EQU	0		; set if require recradle
FLASH_OPT       EQU     1               ; 1:600ms  0:300ms
MKBRK_OPT       EQU     2               ; 1:40/60  0:33/67
MODEL_OPT	EQU	3		; GE/AIWA option (L:GE ; H:AIWA)
;
CIDLED_FG       EQU     97H             ; Caller ID led status
BLK_MSGLED	EQU	0		; set when a message in mail box
BLK_NEWLED	EQU	1		; set when new calls haven't received
;
TXDATA_PTR      EQU     98H             ; send txdata length counter
T10MS_BUF       EQU     9AH             ; 10ms time buffer
T4MS_BUF        EQU     9BH             ; 4ms timer buffer
;
CURCH           EQU     9EH             ; last channel buffer
MAGIC_CODE      EQU     0A0H            ; warm start check code
RANDOM_SECL     EQU     0A2H            ; secode code random generate buffer (low)
RANDOM_SEC0     EQU     0A3H
RANDOM_SECH     EQU     0A4H            ; secode code random generate buffer (high)
RANDOM_SEC1     EQU     0A5H
;
SECLOW_REG      EQU     0A6H            ; security code low byte register
SECHIGH_REG     EQU     0A8H            ; security code low byte register
;
RX_BUFF         EQU     0AAH
TX_BUFF         EQU     0ACH
;
REDIAL_BUF      EQU     0AEH            ; dial buffer (one btyes)
;
CIDERR_TMR      EQU     0B0H            ; CID timeout timer
FREE_CHBUF      EQU     0B2H
;
RECRAD_CNT      EQU     0B4H            ; recradle counter
;
;*******************************
; Ram declaration for CID part
;*******************************
;BANK1
;
DTMFRX_FG	EQU	00H
DTMF_ENABLE     EQU     0               ; enable DTMF detect
CHK_DTMF        EQU     1               ; enable DTMF decoded
FIRST_DTMF      EQU     2               ; first DTMF data singal
DTMFON_START    EQU     3               ; set if DTMF signal period
;
DTMFRX_BUF	EQU	01H		; received DTMF code buffer
;
DTMFON_CNT      EQU     02H             ; DTMF on time counter @10ms
DTMFCNTL        EQU     04H             ; DTMF off time counter (low byte @10ms)
DTMFCNTH        EQU     06H             ; DTMF off time counter (high byte)
TEMP_BUF	EQU	06H
;
FSKRX_FG	EQU	08H
START_BIT	EQU	0		; set if start bit has been detected
FSK_FOUND	EQU	1		; set if start bit has been detected
IN_SYNC		EQU	2		; set if channel seizure is found
IRQ_ACTIVE	EQU	3		; set if a byte FSK code is received
;
CIDRX_FG	EQU	09H
MDMF_TYPE	EQU	0		; set if message header is MDMF format
MDMTYPE_ERR	EQU	1		; set if invalid MDMF message type
DTMF_RCVD       EQU     2               ; set for FSK format,clr for DTMF format
CID_RCVD	EQU	3		; set if whole CID data is received
;
CIDDATA_FG	EQU	0AH		; CID rxdata flag
;FRAME_ERR      EQU     0               ; set if stop bit error
;NO_DATA        EQU     1               ; set if no data is received
DTMF_STATE      EQU     0               ; DTMF state (L:DTMF on,H:DTMF off)
DTMFON_VALID    EQU     1               ; set after a enough DTMF data time 
DTMF_VALID      EQU     2               ; set if DTMF on, clr if DTMF stop
DTMF_STOP       EQU     3               ; end of received DTMF data
;
SYNC_CNT	EQU	0BH		; sync char. (chan. seizure) counter
TMR_840US	EQU	0CH		; 840uS timer		
FSKDLY_CNT	EQU	0DH		; half FSK bit timer
FSKBIT_CNT	EQU	0EH		; received FSK bit counter
FSKEVT_CNT	EQU	0FH		; FSK detect event counter
;
MSGTYPE_BUF	EQU	12H		; message header buffer
BYTE_CNT	EQU	14H		; CID receive byte counter
MDMFLEN_CNT	EQU	16H		; MDMF message "n" length 
CKSUM_CNT	EQU	18H		; FSK rxdata checksum
FSK_BYTE	EQU	1AH		; FSK byte receive buffer
WRBUF_PTR	EQU	1CH		; FSK rx code poiter
FSKCODE_BUF	EQU	1EH		; received FSK code buffer
;
SECODEL		EQU	20H		; secode code low byte buffer
SECODEH		EQU	22H		; secode code high byte buffer
TXCODE_BUF	EQU	24H		; tx code buffer
CID_BUF		EQU	26H		; FSK rx code buffer
DTMFRX_PTR	EQU	26H		; DTMF rx code pointer
DTMF_BUF	EQU	28H		; DTMF rx code buffer
;

	.list on
	
        .ORG    0000H
        VENT0   1,1,RESET               ; EMB <-- 1,ERB <-- 1,branch START
        VENT1   1,1,TBTINT              ; timer int. (int. interval = 2.048ms  )
        VENT2   1,0,RING_INT            ; INT0
        VENT3   0,0,UNUSED              ; INT1
        VENT4   0,0,UNUSED              ; INTS
        VENT5   1,1,TC0INT              ; timer int. (int. interval = 150us)
	;
        .ORG    0010H
RESET:
        NOP
        DI                              ; All interrupt disable
        SRB     0
        SMB     15
        LD      A,#3      		; Enable normal CPU operating mode
        LD      PCON,A    		; and set clock gear = fx/4
	;
        LD      EA,#00H
        LD      SP,EA     		;Init. stack pointer  
        JPS     START
	;
;********************************************************
        ORG     0020H
SMB0            SMB     0
SMB1            SMB     1
SMB15           SMB     15
DECSEA          DECS    EA
ZERO2EA         LD      EA,#00H
INCSEA          ADS     EA,#01H
CPEAHL          CPSE    EA,HL
EAEQZERO        ADS     EA,#0FFH
                ;
LODCODE         TCALL   LCODE
STOP_TX         TCALL   STP_TX
WAIT_SETTLE     TCALL   WAIT_NMS
OFF_TLKLED      TCALL   OFF_TALKLED
TIMERDEC        TCALL   TMRSDEC
CHK_RXD         TCALL   CHECK_RXD
CURCH2EA        LD      EA,CURCH
MUL2EA          ADS     EA,EA
INCS2HL         INCS    HL
                INCS    HL
                ;
;********************************************************
;       .ORG    0080H                   ; constant table
DTMFTMR_TBL:
        DB      41                      ; dialling DTMF signal timer
        DB      67
        DB      30
	;
LOFREQ_TBL:
        DB      F697&0FFH               ; DTMF low group freq. table address
        DB      F770&0FFH
        DB      F852&0FFH
        DB      F941&0FFH
        ;
HIFREQ_TBL:
        DB      F1209&0FFH              ; DTMF high group freq. table address
        DB      F1336&0FFH
        DB      F1477&0FFH
        ;
LOFEND_TBL:
        DB      F770&0FFH               ; DTMF low group freq. end address
        DB      F852&0FFH
        DB      F941&0FFH
        DB      F1209&0FFH
        ;
HIFEND_TBL:
        DB      F1336&0FFH              ; DTMF high group freq. end address
        DB      F1477&0FFH
        DB      DTMF_START&0FFH
        ;
TFKEYTBL:
	DB	00H,01H,02H		; DTMF digit key table
	DB	10H,11H,12H
	DB	20H,21H,22H
	DB	31H,30H,32H
	;
TESTCH_TBL:
        DB      10-1                    ; ch.1 -> 10 -> 20 -> 30 -> 40
        DB      20-1
        DB      30-1
        DB      40-1
	DB	0FFH
	;
;************************
; Get ROM constant table
;************************
LCODE:
	LDC	EA,@EA
	RET
	;
;***********************************************************
; Connect scan check routine (Page connect or Ring connect)
;***********************************************************
CONNECT_CHK:
	BTST	LINKFGH.CON_SCAN	; entry if connect scan
        RET
	BTSF	TIMERFGH.LPTMR_EN	; loop timer expired ?
        RET
	LD	EA,CONNECT_CH
	LD	HL,EA
        REF     CURCH2EA
        REF     CPEAHL
	JPS	CONCHK2
        CALLS   NEXTCHAN                ; connect at next channel
CONCHK1:
	LD	CONNECT_CH,EA
        CALLS   PROG_PLL1
        LD      EA,#30                  ; restart 3 sec. timer
        CALLS   SET_LPTOC        
CONCHK_QUIT:
	RET
	;----------------------
	; Page connect timeout
	;----------------------
CONCHK2:
	BTST	MODEFG.PAGE_MODE	; for page connect, if 2 channel
	JPS	CONCHK1			; connect has been tried,
	CALLS	STOP_PAGE		; quit page mode
        CALLS   Q_CONSCAN               ; quit connect scan
	JPS	BACK_2_STDBY            ; off TX power, stop data sending, enable channel scan
	;
;**********************
; Quit connect scan	
;**********************
Q_CONSCAN:
        BITR    LINKFGH.CON_SCAN        ; quit connect scan mode
	RET
	;
;***************************
; Ring Job routine	
;***************************
RNG_JOB:
	BTSF	MODEFG.TALK_MODE	; standby check only
        RET
        ;
	BTSF	CHK_FLAGH.HW_RESET	; if already H/W reset & wait for security change, skip
        RET
	;
        BTST    RING_FLAG.RING_VALID    ; ringing mode ?
        RET
	;
	;---------------
	; first ring in
	;---------------
	BTST	CHK_FLAGH.FIRST_RING	; first ring in ?
	JPS	RNG_JOB4
	BITR	CHK_FLAGH.FIRST_RING
        ;
        BTSF    MODEFG.PAGE_MODE
	CALLS	STOP_PAGE		; quit page mode
	;
	;----------------------------------------------------------
	; Init. to send CONNECT command continuously to H/S,
	; set maximum send command timeout for one channel = 3 sec.
	;----------------------------------------------------------
        CALLS   CONNECT                 ; init. send BS_CONNECT command
	;
RNG_JOB4:
	BTSF	TXFGH.TX_CID		; CID data enable to send to H/S ?
        RET                             ; Yes,CID data is sending !
	;
	BTST	RING_FLAGH.RING_ON	; valid ring on ?
	JPS	RNG_JOB2
	;----------------
	; ring on start
	;----------------
	BTST    RING_FLAGH.RNGON_START  ; ring on start ?
	JR  	RNG_JOB1
        BITR    RING_FLAGH.RNGON_START
	LD	EA,#5			; init. ring parameter 
	CALLS	BLINK_TKLED            	; blink In-Use led 100ms on/off
	;
	;----------------
	; ring on period
	;----------------
RNG_JOB1:
	;--------------------------------------------------------
	; If linked up, init. to send RINGON command continuously,
	; otherwise skip
	;--------------------------------------------------------
	BTST	LINKFG.CONNECTED
        RET
	;
	;------------------------------
	; Send CID data if data ready
	;------------------------------
        REF     SMB1
        BTSF    CIDRX_FG.DTMF_RCVD
        JPS     SEND_DTMF_CID
        ;
	BTST	CIDRX_FG.CID_RCVD	; CID data ready ?
	JPS	SEND_RINGON
SEND_CID:
	BITR	CIDRX_FG.CID_RCVD
	;
	;-----------------------
	; calc. FSK data length
	;-----------------------
SEND_FSK_CID:
        REF     SMB0
        REF     STOP_TX                 ; stop old continous  command first !
        ;
        REF     SMB1
	LD	EA,#BS_CID		; send FSK format cid command
	LD	TXCODE_BUF,EA
	;
	LD	HL,#CID_BUF+2		; load total length into byte counter
	LD	EA,@HL
	ADS	EA,#6			; include ID,command,type,length,end code
        ;
SEND_CID_CMD:
        REF     SMB0
        LD      TXDATA_PTR,EA
	BITS	TXFGH.TX_CID		; set send CID flag
        JPS     SEND_SYNC_CMD1          ; set 100 preamble bits
	;
	;-------------------
	; Send RINGON code
	;-------------------
SEND_RINGON:
	LD	EA,TXCODE_BUF
        REF     SMB0
	LD	HL,EA
	LD	EA,#RINGON
        REF     CPEAHL
        CALLS   SEND_C_CODE             ; yes, send RINGON command continuosly
        RET
 	;
	;----------------
	; ring off period
	;----------------
RNG_JOB2:
        BTST    RING_FLAG.RING_OFF    ; already ring off ?
        JR      RNG_JOB6
        BITR    RING_FLAG.RING_OFF
        REF     OFF_TLKLED              ; ring pause, stop blink In-Use led
	;----------------------------------------------------------
	; If linked up, init. to send RINGOFF command continuously,
	; otherwise skip
	;----------------------------------------------------------
RNG_JOB6:
	BTST	LINKFG.CONNECTED	; already linked up ?
	JPS	RNG_JOB3
	;
	;------------------------------
	; Send CID data if data ready
	;------------------------------
        REF     SMB1
        BTSF    CIDRX_FG.DTMF_RCVD
        JPS     SEND_DTMF_CID
        ;
	BTSF	CIDRX_FG.CID_RCVD	; CID data ready ?
	JPS	SEND_CID
	;
	;--------------------
	; Send RINGOFF code
	;--------------------
SEND_RINGPAU:
	LD	EA,TXCODE_BUF	
        REF     SMB0
	LD	HL,EA
	LD	EA,#RINGOFF
        REF     CPEAHL
	CALLS	SEND_C_CODE		; yes, send RINGOFF command continuosly
        ;
	;-----------
	; ring stop
	;-----------
RNG_JOB3:
        BTST    RING_FLAGH.RING_STOP    ; 5 sec. ring timeout expired
        RET
	;
        REF     OFF_TLKLED
        CALLS   STOP_RING               ; quit ringing mode
        ;
SEND_RINGEND:
        REF     STOP_TX                 ; stop tx first !       2002-03-10
        LD      A,#16-2
        LD      SCAN_CNT,A
        LD      EA,#RINGSTOP
        CALLS   SEND_NCMD
        ;
	;-----------------------------------------------------------------
	; Stop command send, off TX power, enable channel scan & ring int.
	;-----------------------------------------------------------------
BACK_2_STDBY:
        REF     STOP_TX                 ; stop command sending

⌨️ 快捷键说明

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