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