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

📄 tf9925h.src

📁 2.4GH 无绳电话源代码(三星MCU), 8825 P
💻 SRC
📖 第 1 页 / 共 5 页
字号:
MMW		EQU	82H		; multiple message waiting (VMWI)
MDMF_CAN        EQU     81H
;
;-----------------------
; MDMF parameter type
;-----------------------
P_DATE_TIME	EQU	01H		; date & time
P_CALL_NUM	EQU	02H		; calling number
P_DDN_NUM	EQU	03H		; dialable directory number (DDN)
P_NUM_ABS	EQU	04H		; calling number absence reason
P_REDIRECT	EQU	05H		; redirection reason
P_CALL_QLF	EQU	06H		; call qualifier
P_CALL_NAME	EQU	07H		; calling name
P_NAME_ABS	EQU	08H		; calling name absence reason
;
;---------------------------------------------
; Storage size constant definition ( bytes )
;---------------------------------------------
MAX_CID         EQU     40              ; maximum # of CID storage
MSGTBL_SIZE     EQU     42              ; CID message table size
NUM_MLN		EQU	20/2		; indirect memory number length
MEM_LEN		EQU	NUM_MLN		; indirect memory size per location
NAM_CLN		EQU	24		; CID name length
NUM_CLN		EQU	20/2		; CID number length
MAX_NUM		EQU	20
CID_LEN		EQU	NUM_CLN+4	; CID time and number length
MAX_DOUT        EQU     10              ; maximum # of dialed calls storage
DOUTTBL_SIZE    EQU     12              ; dialed calls message table size
LCD_SIZE        EQU     14              ; LCD digit size
;
;----------------------------
; EEPROM address declaration
;----------------------------
CIDDATA_ADR     EQU     00H                     ; caller id start address
MSGTBL_ADR      EQU     CIDDATA_ADR+15*MAX_CID  ; message table start address
NEW_ADR         EQU     MSGTBL_ADR+MSGTBL_SIZE  ; 1 byte new call number
AMPM_ADR        EQU     NEW_ADR+1               ; 1 byte ringer status
KYTONE_ADR      EQU     AMPM_ADR+1
ACODE_ADR       EQU     KYTONE_ADR+1            ; 1 bytes area code digits
LCODE_ADR       EQU     ACODE_ADR+1
MEMORY_ADR      EQU     LCODE_ADR+1             ; indirect memory start address
MEM1		EQU	MEMORY_ADR		; 10 indirect memory address
MEM2		EQU	MEM1+MEM_LEN
MEM3		EQU	MEM2+MEM_LEN
MEM4		EQU	MEM3+MEM_LEN
MEM5		EQU	MEM4+MEM_LEN
MEM6		EQU	MEM5+MEM_LEN
MEM7 		EQU	MEM6+MEM_LEN
MEM8		EQU	MEM7+MEM_LEN
MEM9		EQU	MEM8+MEM_LEN
MEM10		EQU	MEM9+MEM_LEN
MEM11           EQU     MEM10+MEM_LEN
MEM12           EQU     MEM11+MEM_LEN
MEM13           EQU     MEM12+MEM_LEN
VOL_ADR         EQU     MEM13+MEM_LEN   ; 1 byte volume level
DOUTTBL_ADR     EQU     VOL_ADR+1       ; dial out record table start address
DOUTDATA_ADR    EQU     DOUTTBL_ADR+12  ; dial out calls start address
;
;-------------------------------
; Prompt message number index
;-------------------------------
;M_STANDBY       EQU     0               ; '-On-'
;M_RNGER_OFF     EQU     1               ; 'ring oFF'
;M_ENT_NUM       EQU     2               ; 'EntEr no'
;M_RING_HI       EQU     3               ; 'SEt ring on'
;M_RING_LO       EQU     4               ; 'SEt ring oFF'
;M_DIAL_TONE     EQU     5               ; 'SEt diAL tonE'
;M_DIAL_PULSE    EQU     6               ; 'SEt diAL PULSE'
;M_KYTONE_ON     EQU     7               ; 'kEy tonE on'
;M_KYTONE_OFF    EQU     8               ; 'kEy tonE oFF'
;M_ERROR         EQU     10              ; 'Error'
;M_BLK_CALL      EQU     11              ; 'PriVAtE'
;M_UNK_CALL      EQU     12              ; 'out oF ArEA'
;M_NO_DATA       EQU     13              ; 'no dAtA'
;M_START_END     EQU     14              ; 'End oF LiSt'
;M_PAGE_YOU      EQU     15              ; 'PAgE'
;M_DELETED       EQU     16              ; 'dELEtEd'
;M_DEL_ALL       EQU     17              ; 'dELEtE ALL'
;M_NO_CALL       EQU     18              ; ' no CALL'
;M_NO_PHONE      EQU     19              ; 'no PHonEbook'
;M_MSG_WAIT      EQU     20              ; ' VoiCE on'
;M_MSGWT_OFF     EQU     21              ; ' VoiCE oFF '
;
; keypad matrix configuration
;          +------------+------------+------------+------------+
;          |  KEYOUT1   |  KEYOUT2   |  KEYOUT3   |  KEYOUT4   |
; +--------+------------+------------+------------+------------+
; | KEYIN1 | Talk/Flash |   Memory   |  Program   |   Delete   |
; +--------+------------+------------+------------+------------+
; | KEYIN2 |     1      |     2      |     3      |     4      |
; +--------+------------+------------+------------+------------+
; | KEYIN3 |     5      |     6      |     7      |     8      |
; +--------+------------+------------+------------+------------+
; | KEYIN4 |     9      |     *      |     0      |     #      |
; +--------+------------+------------+------------+------------+
; | KEYIN5 |Redial/Pause|     UP     |    Down    |    OFF     |
; +--------+------------+------------+------------+------------+
; | KEYIN6 |            |    Mute    |  Channel   |            |
; +--------+------------+------------+------------+------------+
; | KEYIN6 |     M1     |     M2     |     M3     |            |
; +--------+------------+------------+------------+------------+
;
;**********************
; I/O pin declaration
;**********************
EPCLKPORT       EQU     P0
EPSDAPORT       EQU     P0
BCKLEDPORT      EQU     P0
NEWLEDPORT      EQU     P0
EP_CLK          EQU     0               ; 24C16A's serial clock
EP_SDA          EQU     1               ; 24C16A's serial data bus
BACKLED         EQU     2               ; background light led  H: LED ON
NEW_LED         EQU     3
;
RINGSWPORT      EQU     P1
CHGDETPORT      EQU     P1
LOWBATPORT      EQU     P1
SIGOUTPORT      EQU     P1
RINGSW          EQU     0               ; ring ON/OFF switch  L:ringer off
CHARGE_DET      EQU     1               ; charge detect  L:charge
LOWBAT_DET      EQU     2               ; low battery detect  L:BATT. low
SIGOUT          EQU     3               ; RSSI input(carrier detect)  H:busy
;
TXPWRPORT       EQU     P2
RXPWRPORT       EQU     P2
RNGVOLPORT      EQU     P2
TX_PWR          EQU     0               ; tx power control (L:tx power on)
RX_PWR          EQU     1               ; rx power control (L:rx power on)
RING_VOL        EQU     2               ; ring volume control (0:Lo 1:Hi)
;
BUZZERPORT      EQU     P3
TXDATAPORT      EQU     P3
TALKLEDPORT     EQU     P3
LBLEDPORT       EQU     P3
RXDATAPORT      EQU     P3
BUZZER_OUT      EQU     0               ; beep tone output
TX_DATA         EQU     1               ; tx data output (keep HiZ while no output)
LOWBAT_LED      EQU     2
MUTE_LED        EQU     2        
TALK_LED        EQU     2               ; TALK LED L:LED ON
RX_DATA         EQU     3               ; receive data
;
VOLUMEPORT      EQU     P4
TXMUTEPORT      EQU     P4
RXMUTEPORT      EQU     P4
VOLUMEL         EQU     0
VOLUMEH         EQU     1
TXMUTE          EQU     2               ; tx path mute control (L: mute)
RXMUTE          EQU     3               ; rx path mute control (L: mute)
;
COMBOPORT       EQU     P5
MODSELPORT      EQU     P5
COMBO_DATA      EQU     0               ; combo data
COMBO_CLK       EQU     1               ; combo clock
COMBO_STB       EQU     2               ; combo strobe H:enable
MODEL_SEL       EQU     3               ; model select (H: 900MHz)
;
PWRDETPORT      EQU     P6
KEYINHPORT      EQU     P6
POWER_DET       EQU     0
KEYIN1          EQU     1               ; keypad row 1 (L:key pressed)
KEYIN2          EQU     2               ; keypad row 2
KEYIN3          EQU     3               ; keypad row 3
;
KEYINPORT       EQU     P7
KEYIN4          EQU     0               ; keypad row 4 (L:key pressed)
KEYIN5          EQU     1               ; keypad row 5
KEYIN6          EQU     2               ; keypad row 6
KEYIN7          EQU     3               ; keypad row 7
;
KEYOUTPORT      EQU     P8 
KEYOUT1         EQU     0               ; keypad column 1
KEYOUT2         EQU     1               ; keypad column 2
KEYOUT3         EQU     2               ; keypad column 3
KEYOUT4         EQU     3               ; keypad column 4
;
CNTRYPORT       EQU     P9
COUNTRY         EQU     0               ; country option (H:brazil L:normal)

	.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   0,0,UNUSED              ; INT0
        VENT3   0,0,UNUSED              ; INT1
        VENT4   0,0,UNUSED              ; INTS
        VENT5   0,0,UNUSED              ; INTT0
        VENT6   1,1,TC1INT              ; timer int. (int. interval = 210us)
        VENT7   0,0,UNUSED              ; INTK
	;
	.ORG	0010H
RESET:
        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  
        JP      START
        ;
;***********************************
; Start blink led routine
; i/p : A - led blink time (@20ms)
;***********************************
BLINK_MUTLED:
BLINK_BATLED:
BLINK_TKLED:
	LD	BLK_TKTIME,EA
	LD	BLK_TKCNT,EA
	BITS	TIMERFG.BLK_TKLED     	; enable TALK led blink
	RET
	;
;***************************
; Blink "TALK" icon routine
;***************************
BLINK_TKICN:
        BITS    TIMERFG.BLK_TKICN       ; enable "TALK" icon blink
        JR      OFF_TKICN
        ;
;**********************
; turn off "TALK" icon
;**********************
OFF_TALK_ICON:
        BITR    TIMERFG.BLK_TKICN       ; stop "TALK" icon blink
        ;
OFF_TKICN:
        SMB     2
        BITR    ICON_FLAG2.I_TALK
        BITR    ICON_ADR2.ON_TALK
        SMB     0
        RET
        ;
;**********************
; turn off "INT" icon
;**********************
OFF_INT_ICON:
        SMB     2
        BITR    ICON_ADR8.ON_INT
        SMB     0
        RET
        ;
;**********************
; Led control routine
;**********************
OFF_MUTLED:
OFF_BATLED:
OFF_TLKLED:
	BITS	TALKLEDPORT.TALK_LED
	BITR	TIMERFG.BLK_TKLED	; stop TALK led blink
	RET
	;
ON_TLKLED:
	BITR	TALKLEDPORT.TALK_LED  	; steady on TALK led
	BITR	TIMERFG.BLK_TKLED
	RET
	;
;*********************
; turn on "TALK" icon
;*********************
ON_TALK_ICON:
        SMB     2
        BITS    ICON_FLAG2.I_TALK
        BITS    ICON_ADR2.ON_TALK       ; steady on "TALK" icon
        SMB     0
        BITR    TIMERFG.BLK_TKICN
        RET
        ;
;********************************
; Init. on back LED for 11 sec.
;********************************
ON_BACKLED:
        SMB     0
        LD      EA,#21-1                ; set on time
        LD      BCKLED_CNT,EA
ON_BACKLED1:
        BITS    TIMERFGH.BCKLED_EN      ; turn on timer
        BITS    BCKLEDPORT.BACKLED      ; turn on back LED
ONBKLD_QUIT:
        RET
	;
;***************
; Off back LED
;***************
OFF_BACKLED:
        BITR    TIMERFGH.BCKLED_EN      ; turn off on-LED timer
        BITR    BCKLEDPORT.BACKLED      ; turn off back LED
        RET
	;
;*********************
; Led control routine
;*********************
LED_JOB:
	BTSF	TIMERFG.BLK_TKLED	; ignore if blink TALK led
        RET
        ;
	BTSF    MODEFG.TALK_MODE
	JPS	LED_JOB1
        ;
	SMB	1
        BTSF    PROG_FLAG.PROG_MODE     ; program memory,LAC & ringer ?
	JR      LED_JOB_QUIT
	SMB	0
	BTSF    TIME_FLAG.RINGBLK
	JR      LED_JOB_QUIT
	BITS    TALKLEDPORT.TALK_LED
	RET
LED_JOB1:
	BITR    TALKLEDPORT.TALK_LED
LED_JOB_QUIT:
	SMB	0
	RET
	;
;******************************
; Update led blinking (@45ms)
;******************************
UPD_LED_BLINK:
	SMB	1 
        BTSF    PROG_FLAG.PROG_MODE     ; program memory,LAC & ringer ?
        JR      UPD_LED2
	;
UPD_LED1:
	SMB	0
	BTST    LINKFG.LINKREQ
	RET
	;
UPD_LED2:
	SMB	0
	LD	EA,LED_CNT
	ADS     EA,#0FFH
        JPS     UPD_LED3
	LD	LED_CNT,EA
	RET
	;
UPD_LED3:
	BTSTZ   TALKLEDPORT.TALK_LED
	BITS    TALKLEDPORT.TALK_LED
	SMB	1
	LD	EA,#4-1			; link request   : blink 180ms/180ms
        BTST    PROG_FLAG.PROG_MODE
        JPS     UPD_LED4
        SMB     2
        LD      H,#ICON_FLAG4>>4
        LDB     C,@H+ICON_FLAG4.I_PROG  ; blink "PROG" icon 270ms/270ms
        CCF
        LDB     @H+ICON_FLAG4.I_PROG,C
        ;
        LDB     C,@H+ICON_ADR4.ON_PROG
        CCF
        LDB     @H+ICON_ADR4.ON_PROG,C
	LD	EA,#6-1			; memory program : blink 270ms/270ms
UPD_LED4:
	SMB	0
	LD      LED_CNT,EA  
UPD_LED_QUIT:         	
	RET
	;
;**********************************************************************
; Check if reset dial parameter (clear dial buffer & buffer full flag)
;**********************************************************************
CHK_RST_DIAL:
	BTSF	DIAL_FG.FIRSTKEY
	JR	CK_RDIAL_QUIT
	BITS	DIAL_FG.FIRSTKEY
RST_DIAL_PAR:
        SMB     0
	LD      EA,#0
	LD      RDIAL_PTR,EA
	LD      WDIAL_PTR,EA
	BITR    DIAL_FG.BUFFERFULL
	BITR    DIAL_FG.DIAL_OVER
CK_RDIAL_QUIT:
	RET
	;

⌨️ 快捷键说明

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