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

📄 ct0bu05.src

📁 用三星MCU实现的完整无绳电话程序,来自三星公司内部资料,供参考.
💻 SRC
📖 第 1 页 / 共 5 页
字号:
; Application     : USA Cordless Phone Base Unit
; Model No.       : CT0 for Taiwan
; Prepared by     : Wizard/ah/silver
; Start date      : 5/OCT/2000
; Manday used     : 2
; Last modified   : 21/NOV/2000
; Microcontroller : KS57C5208 8KB ROM 768Nibble RAM 3.579545MHz Crystal

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

; CT0BU05:
; MAP CID_L 0-9 TO DEFAULT CHANNEL 0-9, 10-15 TO CHANNEL 0-5
; 10 CHANNEL ONLY
; CHAN_PP CHANGE TO WRAP AT 9 TO 0
; NO RSSI COUNTER CHECK FOR REPLY IN SCAN CHANNEL
; NO RSSI COUNTER UPDATE IN SCAN CHANNEL
; SCAN CHANNEL 0-9, NO DEFAULT
; LOOP TO DEF CHANNEL WHEN CHAN_NUM 9 IS ENCOUNTERED IN SCAN CHANNEL
; SB MODE RECEIVE LINE REQ, FORCE CHAN_NUM TO 0XF TO MAKE THE 1ST SCAN_CHAN GOES TO CHANNEL #0
; FIND TO EXCLUDE 06H PARAMETER IN FSK CID IN TAIWAN SPEC. (INCLUDED IN BELLCORE SPEC)
; NOT SENDING CID_FAIL ANYMORE.

; CT0BU04:
; 600ms FLASH TIME
; 20 DIGIT CHECK IN DTMF CID
; ADD C AND I OPTION FOR 04H PARAMETER

; NORMAL RXDATA POLARITY (SAME AS CT801sc)

; DEF FILE LOCATION IN CHIP DIRECTIVE COULD BE CHANGED ACCORDING TO YOUR OWN PATH
;                CHIP    \SM2P\INCLUDE\DEF\57C5208.DEF     ; FOR WIZARD
;                CHIP    c:\SMDS2P\INCLUDE\DEF\57C5208.DEF   ; FOR SILVER
                CHIP    C:\OPENICE\INCLUDE\DEF\57C5208.DEF      ; FOR ANTHONY
                
; RESOURCE ALLOCATED
; TC0:
; USED FOR TONE GENERATION, NO EXCEPTION VECTOR IS NEEDED, OUTPUT SQUAREWAVE
; AT P2.0
; TC1:
; USED FOR SYSTEM INTERRUPT OF 250us INTERVAL, MUST BE KEEP RUNNING AFTER
; STARTUP OR SYSTEM TIME WILL BE STOPPED AND NO TX/RX DATA PACKET IS RESULT
; BSC:
; USED BY INTT1_ISR, FOR TX DATA OPREATION
;
; IN MAIN PROGRAM (WHICH IS CALLED 'FOREGROUND SOFTWARE'), THE FOLLOWING SETTING
; MUST BE KEPT:
; EMB=1, SMB=ANY (BUT KEPT SMB=0 WHEN CALLING ALL MY LIBRARY FUNCTIONS)
; ERB=1, SRB=1 (USE ONLY ONE SET OF REGISTER IN LOCATION 008h-00Fh)
;
; IN INTT1_ISR (WHICH IS CALLED 'BACKGROUND SOFTWARE'), THE FOLLOWING SETTING IS
; USED AND SHOULD NOT BE CHANGED:
; EMB=0, SMB=DON'T CARE (DIRECT ADDRESS = 000h~07Fh, F80h~FFFh)
; ERB=0, SRB=DON'T CARE (REGISTER BANK 0 IS SELECTED BY DEFAULT, 000h~007h)
;
; PAY ATTENTION TO THE STACK SIZE, RESERVE MORE RAM AREA FOR PROGRAM STACK 'COS
; ALL THE FUNCTIONS WILL PUSH THEIR USED REGISTERS INTO STACK IN ORDER NOT TO
; CHANGE THE CALLER'S REGISTER CONTENT.
;

; COMMUNICATION COMMANDS ======================================================
;COMMREQ         EQU     10000000B       ; COMMUNICATION-REQUEST
;LINESEZ         EQU     00000001B       ; LINE-SEIZE-REQUEST
;LNSEACK         EQU     10000001B       ; LINE-SEIZE-ACK
;RINGON          EQU     00000100B       ; RING-ON
;RINGOFF         EQU     00000010B       ; RING-OFF
;HOLDSTART       EQU     10000100B       ; HOLD-LINE-START
;HOLDSTOP        EQU     10000010B       ; HOLD-LINE-STOP
;PAGEREQ         EQU     00001011B       ; PAGE-REQUEST
;;PAGEACK         EQU     10001011B       ; PAGE-ACK
;;PAGEEND         EQU     00001101B       ; PAGE-END
;RETSTBY         EQU     00001000B       ; RETURN-TO-STANDBY
;OFFGRPL         EQU     00001111B       ; GROUP LISTENING OFF
;ONGRPL          EQU     00000011B       ; GROUP LISTENING ON
CHANGCH         EQU     00001010B       ; CHANGE-CHANNEL
CHCHACK         EQU     10001010B       ; CHANGE-CHANNEL-ACK
CHACHOK         EQU     00001011B       ; CHANGE-CHANNEL-OKAY
CHOKACK         EQU     10001011B       ; CHANGE-CHANNEL-OKAY-ACK
;RINFOREQ        EQU     00000110B       ; REGISTRATION-INFO-REQUEST
;SYSSTATUS       EQU     00011000B       ; SYSTEM-STATUS
;REGISTX         EQU     00101000B       ; REGISTER-AS-HANDSET-x
;REGIOKAY        EQU     00101000B       ; REGISTER-OKAY
;UNREGREQ        EQU     00111000B       ; UNREGISTRATION-REQUEST
;ANSWERME        EQU     00001110B       ; ANSWER-ME
;YESHERE         EQU     10001110B       ; YES-HERE
COMMREQ         EQU     10000000B       ; COMMUNICATION-REQUEST
;MSGINFO         EQU     10011000B       ; DTAM-MESSAGE-INFO
LINEREQ         EQU     00000101B       ; LINE-REQUEST
LNREQACK        EQU     10000101B       ; LINE-REQUEST-ACK
LINESEZ         EQU     00000001B       ; LINE-SEIZE-REQUEST
LNSEACK         EQU     10000001B       ; LINE-SEIZE-ACK
;INTCOMM         EQU     00110000B       ; INTERCOM-REQUEST
;INTMACK         EQU     10110000B       ; INTERCOM-ACK
;DTAMRMOT        EQU     00010100B       ; DTAM-REMOTE-REQUEST
;DTAMRACK        EQU     10010100B       ; DTAM-REMOTE-ACK
;DTAMMONACK      EQU     10110100B       ; DTAM-MONITOR-ACK
RINGON          EQU     00000100B       ; RING-ON
RINGOFF         EQU     00000010B       ; RING-OFF
;HOLDSTART       EQU     10000100B       ; HOLD-LINE-START
;HOLDSTOP        EQU     10000010B       ; HOLD-LINE-STOP
PAGEREQ         EQU     00001101B       ; PAGE-REQUEST
RETSTBY         EQU     00001100B       ; RETURN-TO-STANDBY
;OFFGRPL         EQU     00001111B       ; GROUP LISTENING OFF
;ONGRPL          EQU     00000011B       ; GROUP LISTENING ON
;TRANSFER        EQU     00001000B       ; CALL-TRANSFER-ALL
;TRANSFER1       EQU     00001001B       ; CALL-TRANSFER-1
;TRANSFER2       EQU     00001010B       ; CALL-TRANSFER-2
;TRANSFER3       EQU     00001011B       ; CALL-TRANSFER-3
;TRANSACK        EQU     10001000B       ; CALL-TRANSFER-ALL-ACK
;TRANS1ACK       EQU     10001001B       ; CALL-TRANSFER-1-ACK
;TRANS2ACK       EQU     10001010B       ; CALL-TRANSFER-2-ACK
;TRANS3ACK       EQU     10001011B       ; CALL-TRANSFER-3-ACK
;TRANSFAIL       EQU     00010000B       ; TRANSFER-FAILURE
;RINGFROM1       EQU     00010001B       ; RING-FROM-1
;RINGFROM2       EQU     00010010B       ; RING-FROM-2
;RINGFROM3       EQU     00010011B       ; RING-FROM-3
;RINFOREQ        EQU     00000110B       ; REGISTRATION-INFO-REQUEST
;SYSSTATUS2      EQU     00011000B       ; 200SYSTEM-STATUS, +1,+2,+4
;SYSSTATUS3      EQU     10101000B       ; 300SYSTEM-STATUS, +1,+2,+4
;===================================================================
;SYSSTATUS25     EQU     00100000B       ; 250SYSTEM_STATUS, +1,+2,+4
;===================================================================
;REGISTX2        EQU     00101000B       ; REGISTER-AS-200HANDSET-x, +1,+2,+4
;REGISTX3        EQU     00011000B       ; REGISTER-AS-300HANDSET-x, +1,+2,+4
;===================================================================
;REGISTX25       EQU     10101000B       ; REGISTER-AS-250HANDSET-x, +1,+2,+4
;===================================================================
;REGIOKAY        EQU     00101000B       ; REGISTER-OKAY
;UNREGREQ        EQU     00111000B       ; UNREGISTRATION-REQUEST
;ANSWERME        EQU     00001110B       ; ANSWER-ME
;YESHERE         EQU     10001110B       ; YES-HERE

; BIT6=1 MEANS DIGIT COMMAND
; BIT5=E MEANS EVEN PARITY
;================================================================
HS_ATTN         EQU     00110000B       ; WAKE-UP HANDSET TO RECEIVE CID
CID_HEAD        EQU     10011000B       ; CID DATA FOLLOWS
CID_FAIL        EQU     10110000B       ; CID DECODE FAILED
TM_PRES         EQU     00000011B       ; TOP-MESSAGE-PRESENT
TM_ABSE         EQU     00001111B       ; TOP-MESSAGE-ABSENT

; KEY CODE CONSTANTS ==========================================================
KEY1            EQU     00H             ; KEY 1
KEY2            EQU     01H             ; KEY 2
KEY3            EQU     02H             ; KEY 3
KEY4            EQU     03H             ; KEY 4
KEY5            EQU     04H             ; KEY 5
KEY6            EQU     05H             ; KEY 6
KEY7            EQU     06H             ; KEY 7
KEY8            EQU     07H             ; KEY 8
KEY9            EQU     08H             ; KEY 9
KEY0            EQU     09H             ; KEY 0
KEYSTAR         EQU     0AH             ; KEY *
KEYHASH         EQU     0BH             ; KEY #
PAUSE           EQU     0CH             ; PAUSE
TONE            EQU     0DH             ; TONE
FLASH           EQU     0EH             ; FLASH
TALK            EQU     10H             ; TALK
MEM             EQU     11H             ; MEM
MUTE            EQU     12H             ; MUTE
CHANL           EQU     13H             ; CHANNEL
REDL            EQU     14H             ; REDIAL
GROUPL          EQU     15H             ; GROUP LISTEN
HOLD            EQU     16H             ; HOLD/INTERCOM
SOS             EQU     17H             ; SOS
MENU            EQU     18H             ; MENU
BKWARD          EQU     19H             ; BACKWARD
FRWARD          EQU     1AH             ; FORWARD
VOLUP           EQU     1BH             ; VOLUME UP
VOLDN           EQU     1CH             ; VOLUME DOWN
CANCEL          EQU     1DH             ; CANCEL

; PROGRAM CONSTANTS ===========================================================
TN2049          EQU     54              ; 2049Hz TONE VALUE
TN1894          EQU     58              ; 1894Hz TONE VALUE
TN1811          EQU     61              ; 1811Hz TONE VALUE
TN1506          EQU     73              ; 1506Hz TONE VALUE
TN1202          EQU     92              ; 1202Hz TONE VALUE
TN801           EQU     138             ; 801Hz TONE VALUE
TN600           EQU     185             ; 600Hz TONE VALUE
BUFLEN          EQU     32              ; DIAL & REDIAL BUFFER LENGTH
KEYDEB          EQU     8               ; KEY DEBOUNCING TIME
PRETNTM         EQU     16              ; 6ms x 16 = 96ms
TONETM          EQU     51              ; 2ms x 51 = 102ms
TONETMD         EQU     40              ; 2ms x 40 = 88ms
;PAUSETM         EQU     94              ; 32ms x 94 = 3.008s
PAUSETM         EQU     114             ; 32ms x 114 = 3.648s
;FLASHTM         EQU     46              ; 6ms x 45 = 270ms
;FLASHTM         EQU     101             ; 6ms x 101 = 606ms
FLASHTM		EQU	50		; 6ms x 50 = 300ms
TINTERPAUTM     EQU     17              ; 6ms x 17 = 102ms
PINTERPAUTM     EQU     134             ; 6ms x 134 = 804ms
MAKETM          EQU     17              ; 2ms x 17 = 34ms
BREAKTM         EQU     33              ; 2ms x 33 = 66ms

; UNIQUE/COMMEN ID ADDRESS IN EEPROM ==========================================
UID1ADDR        EQU     04H
UID2ADDR        EQU     05H
UID3ADDR        EQU     06H
CIDADDR         EQU     07H


STATE_CID_IDLE                  EQU     0       ; idle state
STATE_CID_INIT                  EQU     2       ; init PCD3316
STATE_CID_WAIT_SMMR             EQU     4       ; wait for SMMR
STATE_CID_DECODE_DATA           EQU     6       ; wait for data
STATE_CIDCW_INIT_DELAY          EQU     8       ; wait before typeII setup
STATE_CIDCW_WAIT_CAS            EQU     10      ; CAS detection
STATE_CIDCW_MUTE                EQU     12      ; type II mute
STATE_CIDCW_D_ACK               EQU     14      ; type II ACK
STATE_CID_DELAY_TURNOFF         EQU     16      ; AC load delay turn-off
STATE_CID_DTMF                  EQU     18      ; DTMF CID

STATE_GET_CID_MESSAGE_TYPE      EQU     0       ;
STATE_GET_CID_MESSAGE_LENGTH    EQU     2       ;
STATE_GET_CID_PARAM_TYPE        EQU     4       ;
STATE_GET_CID_PARAM_LENGTH      EQU     6       ;
STATE_STORE_CID_DATE            EQU     8       ;
STATE_STORE_CID_NUM             EQU     10      ;
STATE_STORE_CID_COMMAND         EQU     12      ;
STATE_STORE_CID_CAUSE           EQU     14      ;
STATE_CID_SKIP_PARAM            EQU     16      ;
STATE_STORE_CID_SMSG            EQU     18      ; <<< MARCO 001023 >>>

;IMP_START_TIME                 EQU     32      ; time to start AC load (32*8=256ms)
IMP_START_TIME                  EQU     23      ; time to start AC load (23*8=184ms), F_PRERING is delayed 72ms
HOOKOFF_DELAY_TIME              EQU     64      ; time to start detection of CAS tone (64*8=512ms)
CIDCW_WAIT_FSK_TIME             EQU     27      ; time from D-ACK to FSK start (27*8=216ms)
DELAY_TURNOFF_TIME              EQU     4       ; delay turn-off time (4*8=32ms)
SMMR_TIMEOUT                    EQU     153     ; 256 + 32 + 153*8 = 1512ms for SMMR expectation time
RX_CID_DATA_TIME                EQU     4       ; time allowed for no FSK data (<40ms)

CID_DATE_LENGTH                 EQU     8       ; length of CID date
CID_NOTIFICATION_LENGTH         EQU     1       ; length of CID command/notification
CID_DISCLOSURE_LENGTH           EQU     1       ; length of CID disclosure
CID_NUM_MAX                     EQU     20      ; max. length of printable number allowed

CID_SMMR                        EQU     055H    ; SMMR data (01010101) PATTERN
;MIN_SMMR                       EQU     12      ; 12*8 = 96 bits
MIN_SMMR                        EQU     4       ; 10*8 = 80 bits (7)
;MAX_SMMR                        EQU     50      ; 50*8 = 400 bits

;; ========================================= ADDED TEMPORARILY
MESS_TIMEOUT            EQU     64              ; 512ms for message type expectation time
PRES_TYPE               EQU     80H             ; message type
NOTIF_TYPE              EQU     82H             ; notification

; MESSAGE TYPE <<< MARCO 001023 >>>
SDMF_TYPE               EQU     04H             ; SINGLE DATA MESSAGE FORMAT CID
MDMF_TYPE               EQU     PRES_TYPE       ; MULTI  DATA MESSAG FORMAT CID
SMSG_TYPE               EQU     06H             ; SINGLE MESSAGE WAITING
MMSG_TYPE               EQU     NOTIF_TYPE      ; MULTI  MESSAGE WAITING

; PARAMETER TYPE
CID_DATE_PARAM          EQU     1
CID_NUM_PARAM           EQU     2
CID_NUM_PARAM2          EQU     3
CID_NAME_PARAM          EQU     7
CID_COMMAND_PARAM       EQU     0BH
CID_DISCLOSURE_PARAM    EQU     4
;CID_LONGDIS_PARAM	EQU	6		; MARCO 001125 NOT IN TAIWAN SPEC

ZERO_CHAR               EQU     30H             ; '0'
STAR_CHAR               EQU     2AH             ; '*'
HASH_CHAR               EQU     23H             ; '#'
P_CHAR                  EQU     50H             ; 'P'
O_CHAR                  EQU     4FH             ; 'O'
I_CHAR                  EQU     01001001B       ; 'I'
C_CHAR                  EQU     01000011B       ; 'C'
ON_CHAR                 EQU     42H             ; 'B'
OFF_CHAR                EQU     6FH             ; 'o'

; I/O PORT DEFINITION (44QFP) ===========PIN===================================
CIDIRQ          EQU     P1.0            ; 39 CALLER ID WAKEUP INTERRUPT
;-----------------------------------------------------
; SWAPPED BY ANTHONY
;CHGDET          EQU     P1.1            ; 40 1=NOT IN CHARGE, 0=IN CHARGE CRADLE (EXT PUR)
;RNGDET          EQU     P1.2            ; 41 RING DETECT (EXT PUR)
RNGDET          EQU     P1.1            ; 40 RING DETECT (EXT PUR)
CHGDET          EQU     P1.2            ; 41 1=NOT IN CHARGE, 0=IN CHARGE CRADLE (EXT PUR)
;-----------------------------------------------------
;CIDDET          EQU     P1.3            ; 42
TPSW            EQU     P1.3            ; 42 1=TONE MODE, 0=PULSE MODE
BPTON           EQU     P2.0            ; 43 BUZZER SIGNAL
CIDCLK          EQU     P2.1            ; 44
;CIDMOD          EQU     P2.2            ;  1
CIDDATA         EQU     P2.3            ;  2
;ACLOAD          EQU     P3.0            ;  3 <<< MARCO: NO AC LOAD, EXISTS IN TESTMODE >>>
RXDATA          EQU     P3.1            ;  4 RECEIVE DATA INPUT
EPDO            EQU     P3.2            ; 13 EEPROM DATA OUT
EPEN            EQU     P3.3            ; 14 EEPROM CHIP SELECT
TXDATA          EQU     P4.0            ; 10 TRANSMIT DATA OUTPUT
;PULSP           EQU     P4.1            ; 11
EPDI            EQU     P4.2            ; 15 EEPROM DATA IN

⌨️ 快捷键说明

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