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

📄 tf9925h.src

📁 2.4GH 无绳电话源代码(三星MCU), 8825 P
💻 SRC
📖 第 1 页 / 共 5 页
字号:
        LD      PROG_FLAG,EA            ; exit program memory,LAC & ringer set
	LD	VIEW_TIMER,EA		; stop view timer
	;
        BITR    VIEW_FLAG.EEP_VIEW      ; exit viewing mode
        BITR    VIEW_FLAG.CID_VIEW      ; exit viewing CID if any
        BITR    VIEW_FLAG.REDIAL_VIEW   ; exit viewing dialed call mode
        BITR    VIEW_FLAG.END_OF_LIST
        BITR    VIEW_FLAGH.VIEWTMR_ON   ; clr. view timer on flag
;       BITR    VIEW_FLAGH.LAC_RDY      ; disable to change LAC
        BITR    VIEW_FLAGH.PAGE_BRA
        ;
        BITR    OPER_FG.PREDIAL
        BITR    OPER_FG.DEL_MEM
        BITR    OPER_FG.CID_TO_MEM
        BITR    OPER_FGH.DELETE         ; reset delete flag
        ;
        BITR    DISP_FLAG.ERALL         ; reset delete all flag
        BITR    DISP_FLAG.SWITCH_PAGE   ; reset switch page flag
        BITR    RNGVOLPORT.RING_VOL
        ;
	SMB	0
        BITR    STSFG1H.DOT_BLINK       ; disable blink LCD cursor
	BITR	MODEFGH.MEM_DIAL	; quit memory dial at TALK mode if any
        LD      A,TXFG
        AND     A,#0011B                ; stop timeout check
        LD      TXFG,A
        BTSF    MODEFG.TALK_MODE
        JPS     ON_TLKLED               ; steady on TALK led & stop blink
        RET
	;
;**************************************************************
; Init. key  routine ( start timer, on back led  & keytone )
;**************************************************************
INIT_UPKEY:
INIT_DNKEY:
        SMB     1
        BITR    OPER_FG.CID_TO_MEM
INIT_MEMKEY:
	SMB	1
	BITR	DISP_FLAG.ERALL		; reset delete all flag
        BITR    OPER_FGH.DELETE         ; reset delete flag
	;
INIT_PROGKEY:
INIT_DELKEY:
	SMB	1
	LD	EA,#200			; start 20 sec. memory program timer
        LD      VIEW_TIMER,EA        
	BITS	VIEW_FLAGH.VIEWTMR_ON	; set flag to indicate timer on
INIT_KEY:
        CALLS   ON_BACKLED              ; on BACK led for 10 sec.
        BTST	MODEFG.TALK_MODE
        JR	INIT_KEY1
        CALLS   GEN_KEYTONE
        RET
INIT_KEY1:
        CALLS   KEYTONE
	RET
	;
;*****************************
; Generate key tone for 50ms
;*****************************
GEN_KEYTONE:
        SMB     1
        LD      EA,KYTONE_BUF
        SMB     0
        DECS    EA
        JPS     SKIP_KYTONE
        ;
GEN_KEYTONE1:
	BTSF	TXFG.TXEN  		; during tx data, delay emit tone
        JR      GEN_KEYTONE
	;
        CALL    MUTE_COMBO
        BITR    RNGVOLPORT.RING_VOL
        ;
;       LD      EA,#TN1250
        LD      EA,#TN1600
        CALL    BEEP_START              ; on buzzer 1.67KHz
	;
	LD	EA,#50/2
        CALLS   WAIT_DELAY
        ;
        CALL    BEEP_STOP
SKIP_KYTONE:
	RET
	;
;************************************
; Beep tone generate routine (@10ms)
;************************************
BEEP_CHK:
	BTST    CHK_FLAG.BUZZER_ON
	RET
	;
	BTST    TIME_FLAGH.T10MS
	RET
	BITR	TIME_FLAGH.T10MS
        ;
	BTST    CHK_FLAGH.PAGING
	JPS     BEEP_CHK1		
	;
        BTST    PAGE_PTR.0              ; page tone off ?
        JPS     BEEP_CHK1               ; no
	;
	LD	EA,PAGE_PULSE		; page tone		
	DECS    EA
	LD      PAGE_PULSE,EA  		; @10m
	DECS    EA
	RET
	;
	LD	EA,PAGE_PTR
	ADS     EA,#1
	LD      PAGE_PTR,EA
TONE_RELOAD:
        CALLS   GET_PAGE_WIDTH
	LD	HL,#END_OF_PAGE
	CPSE    EA,HL
        JPS     SET_PAGE_ON             ; 2001-10-23
	LD      EA,#0
	LD      PAGE_PTR,EA
	LD	EA,PAGE_CNT		
	DECS    EA
	LD	PAGE_CNT,EA
	DECS    EA
	JPS     TONE_RELOAD
STOP_PAGE:
	BITR    CHK_FLAGH.PAGING        ; tone finish
        BITR    RNGVOLPORT.RING_VOL
	CALLS	OFF_TLKLED		; off led & stop blink
        CALLS   OFF_INT_ICON
	JPS     BEEP_END
	;
	;------------------
	; buzzer on reload 
	;------------------
BEEP_CHK1:
	LD	EA,TONE_TIME
	DECS    EA
	LD	TONE_TIME,EA
        ADS     EA,#0FFH                ; tone time arrived ?
        JR      BEEP_RELOAD             ; yes
BEEP_QUIT:
	RET
	;
BEEP_RELOAD:
	LD      EA,TONE_PTR
        CALLS   GET_TN_TIME             ; Z = 0 (on/off) , 1 (dual)
	LD	EA,TONE_CYCLE
	DECS    EA
	LD      TONE_CYCLE,EA           ; end of beep tone pattern ?
        ADS     EA,#0FFH
	JPS     BEEP_END2
        ;
        BTSF    CHK_FLAGH.PAGING        ; disable tone reload for paging
        JPS     BEEP_QUIT
        ;
        BTST    TONE_CYCLE.0            ; 1: enable tone output
        JPS     BEEP_RELOAD1
        ;
        LD      EA,TONE_PTR
        CPSE    A,#1
        JR      BEEP_RELOAD3
;       LD      EA,#TN1250              ; on key tone 1.25khz
        LD      EA,#TN1600
        JR      BEEP_RELOAD2
BEEP_RELOAD3:
        LD      EA,#TN1600              ; on buzzer 1 khz
        CPSE    Z,#0
        LD      EA,#TN2000              ; on buzzer 2 khz
BEEP_RELOAD2:
        CALL    BEEP_START
        RET
	;
BEEP_RELOAD1:
        LD      A,Z
        ADS     A,#0FH
	JPS     BEEP_STOP
        ;
        LD      EA,#TN1600              ; on buzzer 1 khz
        CALL    BEEP_START
        RET
	;
BEEP_END2:
	BTST    CHK_FLAGH.PAGING	
	JPS     BEEP_END1
	LD	EA,PAGE_PULSE		 
	DECS    EA
	LD      PAGE_PULSE,EA          	; end of page pulse ? (@60ms)
	DECS    EA
	JPS     SET_PAGE_TN
	LD	EA,PAGE_PTR
	ADS     EA,#1
	LD	PAGE_PTR,EA
        CALLS   GET_PAGE_WIDTH
	JR      BEEP_STOP
BEEP_END:
BEEP_END1:
	BITR    CHK_FLAG.BUZZER_ON
BEEP_STOP:
        SMB     15
        LD      EA,#01101000B           ; timer mode:fx = 4.000MHz
        ;                |______________  disable timer/counter 0
	LD	TMOD0,EA
        ;
        BITR    TOE0
;       BITS    BUZZERPORT.BUZZER_OUT
        SMB     0
	RET
	;
;************************************
; Generate beep tone
; set TC0 clock frequency output
; i/p : EA - output signal frequency
;*************************************
BEEP_START:
	SMB     15
	LD	TREF0,EA
	;
        LD      EA,#01101100B           ; timer mode:fx = 4.000MHz
	;	     | |
        ;            |_|________________ 110: Select fx/16 = 250KHz
	LD	TMOD0,EA
        ;
        BITR    BUZZERPORT.BUZZER_OUT
        BITS    TOE0
	SMB     0
	RET
	;
;*****************************************
; Get page tone width
; i/p : PAGE_PTR - page pattern pointer
; o/p : PAGE_PULSE, EA - tone width
;*****************************************
GET_PAGE_WIDTH:
	LD      EA,PAGE_PTR
	ADS	EA,#(PAGE_TBL&0FFH)
        CALL    LODCODE
	LD      PAGE_PULSE,EA
	RET
	;
;*********************************************
; Key tone generation
; o/p : TONE_CYCLE = 2 (single 1Khz beep tone)
;*********************************************
KEYTONE:
        SMB     1
        LD      EA,KYTONE_BUF
        SMB     0
        DECS    EA
        JPS     KEYTONE3                ; disable key tone
        ;
BEEP_TONE:
	LD      Z,#1
KEYTONE1:
	LD	EA,#2 
	LD      TONE_CYCLE,EA          ; single beep tone
        BITR    RNGVOLPORT.RING_VOL
KEYTONE2:
	LD	E,#0
	LD	A,Z
	LD      TONE_PTR,EA
	LD	EA,#1
	LD      TONE_TIME,EA
        LD      A,#16-10/2
        LD      T10MS_BUF,A
	BITS    CHK_FLAG.BUZZER_ON
KEYTONE3:
	RET
	;
;**********************************************
; Error tone generation
; o/p : TONE_CYCLE = 4 (double 1kHz beep tone)
;**********************************************
ERROR_TONE:
        SMB     0
	LD      Z,#2
	LD	EA,#2*2        		; double beep tone
	LD      TONE_CYCLE,EA
        BITR    RNGVOLPORT.RING_VOL
	JPS     KEYTONE2
	;
;***************************
; Confirm tone generation
;***************************
CONFIRM_TONE:
        SMB     0
	LD      Z,#3
	JPS     KEYTONE1
	;
;**********************************
; Ring tone generation (1Khz/2Khz)
; o/p : TONE_CYCLE = 2
;**********************************
DUAL_TONE:
RING_TONE:
	LD      Z,#4                    ; ring tone type
	LD	EA,#3*1 
	LD      TONE_CYCLE,EA
	;
        LD      A,#16-10/2
        LD      T10MS_BUF,A
	BITS    TIME_FLAGH.T10MS
	JPS     KEYTONE2
	;
;**********************************
; Page tone generation (1Khz/2Khz)
; o/p : TONE_CYCLE = 2+1
;**********************************
PAGE_29_TONE:
        LD      EA,#29
        LD      PAGE_CNT,EA            ; 29 page tone ( 1 min )
	JR	PAGE_TONE1
	;
PAGE_1TONE:
        LD      EA,#1
        LD      PAGE_CNT,EA             ; 1 page tone
	;
PAGE_TONE1:
        BITS    RNGVOLPORT.RING_VOL
	BITS    CHK_FLAGH.PAGING
	LD      EA,#0
	LD      PAGE_PTR,EA
        CALLS   GET_PAGE_WIDTH          ; get page pulse width
        ;
SET_PAGE_ON:
        LD      EA,#TN2000              ; on buzzer 2 khz
        CALL    BEEP_START
        ;
SET_PAGE_TN:
	LD      Z,#5                    ; page tone type
	LD	EA,#2+1
	LD      TONE_CYCLE,EA
        LD      A,#16-10/2
        LD      T10MS_BUF,A
	BITS    TIME_FLAGH.T10MS
        JPS     KEYTONE2
        ;
;************************************
; Low battery tone generation (1khz)
;************************************
LOWBAT_TONE:
	LD      Z,#6
	JPS     KEYTONE1
	;
;**************************************
; Out of range tone generation (1Khz)
;**************************************
OUTRNG_TONE:
	LD      Z,#7                    ; one 230ms beep tone
	JPS     KEYTONE1
	;
	;
;*************************************************
; Get tone on/off time (0) or dual tone tone (1)
; i/p : A  - tone kind
; O/P : TONE_TIME - tone time counter (@10ms)
;     : Z - tone type (0:on/off type; 1:dual type)
;*************************************************
GET_TN_TIME:
        DECS    EA                      ; fix bug of fetch table
        ADS     EA,EA
        ADS     EA,#TN_TIME_TBL&0FFH
        LD      WX,EA
        CALL    LODCODE
	LD      TONE_TIME,EA
        ;
        INCS    WX
        LD      EA,WX
        CALL    LODCODE
        LD      Z,A
	RET
	;
;*****************************
; Mute / Unmute check routine
;*********************

⌨️ 快捷键说明

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