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

📄 2802d510.src

📁 用三星的MCU写的CID电话机源程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
     ;  ****************************************************************
     ;  *       GALAXY Co.,LTD         ZHOU HAI ZHONG   20.JUL.2000    *
     ;  *                                                              *
     ;  *          KS57C5208            2802BASIC     PROGRAM          *
     ;  *                                                              *
     ;  *       The last version modify by Qin Pin Jian   Jul/02/2002  *
     ;  *                                                              *
     ;  *       Mode:3002/2802                                         *
     ;  *                                                              *
     ;  ****************************************************************
     
     
                ;CHIP c:\skstudio\INCLUDE\DEF\s3c7528.DEF
                chip C:\skStudio\include\def\57c5208.def
     ;           Eeprom USE 24AA02
     ;           this file checksum is 5071, is a updated version for
     ;           m key auto select line and dial , 2001.8,by jin'gang.
     ;           and updated init reset off_hook would auto select line
     ;           and speak the vollum max but hook off is ave
     ;           2001.11 by jin'gang.
     
     ; Qin Pin Jian modify :1.  Hold line2 ,line1 ringing cannot offhook  
     ;                      2.  in hand free status lin2 volume differ 
     ;                          line1
                                
                                
     ;                           modify ok at:  Jul/5/2002 pm.
;==================KEYPAD  I/O  PORTS  DEFINE========================

R0         EQU     P7.3       ;KS4  QUASI-INTERRUPT INPUTS WITH  
R1         EQU     P7.2       ;KS5       FALLING EDGE DETECTION
R2         EQU     P7.1       ;KS6
R3         EQU     P7.0       ;KS7
C0         EQU     P2.0
C1         EQU     P2.1       ; ++++++++++++++++++++++++++++++
C2         EQU     P2.2       ;   ST---C0    LINE1 RING  DET
C3         EQU     P2.3       ;   ST---C1    LINE1 HOLD1 DET
C4         EQU     P3.0       ;   ST---C2    LINE1 INUSE DET
C5         EQU     P3.1       ; 
C6         EQU     P3.2       ;   ST---C4    LINE2 RING  DET
C7         EQU     P3.3       ;   ST---C5    LINE2 HOLD2 DET 
C8         EQU     P8.0       ;   ST---C6    LINE2 INUSE DET
C9         EQU     P8.1       ;+++++++++++++++++++++++++++++++
;---------------------------KEYPAD--RANK--DIAGRAM----------------------------------------

   ;        C0     C1    C2    C3    C4    C5    C6     C7     C8    C9

   ;R0     LINE1  LINE2  SPK  CONF  MUTE  HOLD  RD/PA  STORE  FLASH   VOL

   ;R1       1      2     3     4     5     6     7      8      9      0

   ;R2       *      #     M1    M2    M3    M4    M5     M6     M7    M8

   ;R3       M9    M10    M11   M12   M13   M14   M15   MSG     UP   DOWN
  
;-----------------------------------------------------------------------

;===================SCAN===STATES==================================

ST         EQU     P1.1

;=================CONTROLLER==I/O==PORTS===========================
VOL_A      EQU     P9.0      ;000  001  010  011  100  101  110  111
VOL_B      EQU     P9.1      ;                   
VOL_C      EQU     P9.2      ;CONTROLLER VOLUME IN 100 (MIDST)
SDA        EQU     P8.2      ;I/O PORT
SCK        EQU     P8.3      ;USE EEPROM 24AA16
MUTE       EQU     P5.0
RMUTE      EQU     P5.1
DP         EQU     P5.2
HFO        EQU     P5.3
KT         EQU     P4.0
HOLD1      EQU     P4.1
HOLD2      EQU     P4.2
pulldown   equ     p4.3
CONF       EQU     P4.3      ;RELEASE HOLD LED 
RLY1       EQU     p6.1      ; P6.0
RLY2       EQU     p6.3      ; P6.2
RLY_1      EQU     p6.0      ; P6.1      ;RESET RLY1
RLY_2      EQU     p6.2      ; P6.3      ;RESET RLY2 
HOOK_DET   EQU     P1.0
WAKE       EQU     P1.2      ;INT2 AT ONHOOK STATE WAKE
T_P_DET    EQU     P1.3      ;HIGH LEVER--P    LOW LEVER--T
;=====================RAM===DEFINITION=================================                              
ONHOOK_STATE  EQU  20H.0     ;WORK STOP FLAG BIT  1--WORK 0--ONHOOK
KEY_OFF       EQU  20H.1
RING1_FG      EQU  20H.2
HOLD1_FG      EQU  20H.3
SCAN_WORD     EQU  21H       ;KEY_PAD R_SCAN(P7.3 P7.2 P7.1 P7.0)
I_DIALCOUNT   EQU  22H       ;KEY INPUT COUNT(1--9.0.*.#.FLASH.PAUSE)
KEY_VALUE     EQU  24H       ;KEY CODE REGISTER
KEY_COUNT     EQU  26H       ;ONE TIMES SCAN_KEY KEY CLOSE NUMBER
INUSE1_FG     EQU  27H.0
RING2_FG      EQU  27H.1
HOLD2_FG      EQU  27H.2
INUSE2_FG     EQU  27H.3
INUSE_1       EQU  28H.0     ;HOLD1 OR INUSE1_FG=INUSE_1
INUSE_2       EQU  28H.1     ;HOLD2 OR INUSE2_FG=INUSE_2
RMUTETIME     EQU  28H.2     ;INTT1 INTERRUPT FLAG
DIALTIME      EQU  28H.3
DIAL_VALUE    EQU  29H
BIT           EQU  2AH.0
LINE1_BIT     EQU  2AH.1
MEMORY_FG     EQU  2AH.2
nousedail_fg  equ  2ah.3
p_buff        equ  2bh.0
off_hook_fg   equ  2bh.1
no_line_fg    equ  2bh.2
last_p1       equ  2bh.3 
bitcount      equ  2ch
sel_line_fg   equ  2eh.0
spk_key_fg    equ  2eh.1
LINE2ADD      EQU  2EH.2
O_DIALCOUNT   EQU  30H
HFO_FG        EQU  32H.0
STORE_FG      EQU  32H.1
CONF_FG       EQU  32H.2
ACK_FG        EQU  32H.3
DATD_L        EQU  33H
DATD_H        EQU  34H
M_FG          EQU  35H.0
OVERFLOW      EQU  35H.1     ;UP 32DIGITAL FLAG
M_DIAL_FG     EQU  35H.2     ;
adjourn_fg    equ  35h.3
IN_POINT      EQU  36H
OUT_POINT     EQU  38H
FLUSHCNT      EQU  3AH
eepromh       EQU  3BH.0
flashf        EQU  3BH.1
flashr        EQU  3BH.2

fuck_chen_gx  equ  3BH.3      ;debug add !!!!  


I_DIALBUF     EQU  40H       ;KEY CODE BUFFER START ADDRESS TO 60H
DATA_BUFF     EQU  70H
;=======================================================================
              ORG    0000H
              VENT0   0,0,RESET        ;JUMP TO RESET ADDRESS
              ORG    0002H
              VENT1   0,0,INTB         ;JUMP TO INTB ADDRESS
              VENT2   0,0,INT0         ;HOOK DET
              ORG    000AH
              VENT5  0,0,INTT0         ;JUMP TO INTT0 ADDRESS
              VENT6  0,0,INTT1         ;JUMP TO INTT1 ADDRESS
RESET
              DI
              BITR  EMB
              LD    EA,#01000000B
              LD    PMG2,EA            ;SET DP(P5.2) TO HIGHT LEVER
              BITS  DP
RAMCLR        SMB   0                  ;CLEAR RAM(020H-0FFH)---BANK0
              LD    HL,#20H
              LD    A,#0H
RAMCLR0       LD    @HL,A
              INCS  HL
              JPS   RAMCLR0
              BITS  EMB
              SMB   1                  ;CLEAR RAM(100H-1FFH)---BANK1
              LD    HL,#00H
              LD    A,#0H
RAMCL1        LD    @HL,A
              INCS  HL
              JPS   RAMCL1
              SMB   2                  ;CLEAR RAM(200H-2FFH)---BANK2
              LD    HL,#00H
              LD    A,#0H
RAMCLR2       LD    @HL,A
              INCS  HL
              JPS   RAMCLR2
              BITR  EMB
              LD    EA,#00000111B
              LD    PMG1,EA            ;SET P3,P2.3 TO INPUT MODE
              BITS  P2.0
              BITS  P2.1
              BITS  P2.2
              ld    ea,#0ffh
              ld    pmg2,ea
              LD    EA,#00H
              LD    PMG3,EA            ;SET P6.P7 PORTS TO INPUT MODE
              LD    EA,#01110000B
              LD    PMG4,EA            ;SET P8 TO INPUT MODE P9 TO OUTPUT
              LD    EA,#00H
              LD    PNE1,EA            ;RESET VALUE 0  0--PUSH-PULL OUTPUT
                                           ;1--N-CHANNEL OPEN-DRAIN OUTPUT
              ld    ea,#08h
              LD    PUMOD1,EA          ;DISABLE ALL PULL-UP RESISTOR
                                           ;P5.P4.P3.P2.P1.3-P1.0
              ld     a,#0100B
              LD    PUMOD2,A           ;P6.P7.P8.P9
              LD    IMOD2,A            ;INTERRUPT REQUEST AT P1.2
                                       ;TRIGGERED BY FALLING EDGE
              LD    A,#2H
              LD    IMOD0,A            ;EXTERNAL BY FALLING/RISING EDGE
                                       ;(IMOD1-INT1 NOT USE)
              LD    EA,#00H            
              LD    SP,EA              ;RESET SP   CLEAR (SP)
              BITR  IS0
              BITR  IS1                ;ENABLE ALL INTERRUPTS
              LD    IPR,A              ;RESET VALUE IS LOGIC ZERO
                                       ;IPR.2-0 000/NORMAL  001/INTB.INT4
                                       ;010/INT0 011/INT1 101/INTT0 110/INTT1
              LD    CLMOD,A            ;SELECTION CLOCK FREQUENCY=Fx/4=3.58M/4
              LD    A,#0011B           ;ENABLE NORMAL CPU OPERATING MODE &
              LD    PCON,A             ;SELECTION CUP CLOCK FREQUENCY=fx/4
              LD    A,#0111B
              LD    BMOD,A             
              LD    EA,#00H
              LD    WMOD,EA            ;DISABLE BUZ OUTPUT.DISABLE WATCH TIMER                                        ;    TO 0.5 SECONDS
                                       ;AND CLEAR FREQUENCY DIVIDING CIRCUIT
                                       ;SET IRQW TO 0.5 SECONDS
              LD    DTMR,EA            ;DTMR.7-4 0000 FUNCTION KEY D
                                       ;0001/1,0010/2,0011/3,0100/4
                                       ;0101/5,0110/6,0111/7,1000/8
                                       ;1001/9,1010/0,1011/*,1100/#
                                       ;1101/A,1110/B,1111/C
                                       ;DTMR.0----0/1 DISABLE/ENABLE DTMF
              BITS  IE0                ;ENABLE INT0 INTERRUPT (P1.0--HOOKDET)
              BITR  IRQ0
              BITR  IE1                ;DISABLE INT1 INTERRUPT (P1.1--ST)                 BITR  IRQ0
              BITR  IRQ1
              BITS  IE2                ;ENABLE (INT2)/KS0-KS7 INTERRUPT
              BITR  IRQ2               ;IRQ2 FLAG MUST BE CLEAR BY SOFTWARE
              BITR  IE4                ;DISABLE INT4 INTERRUPT (P1.3--T/PDET)
              BITR  IRQ4
              BITR  IEB                ;DISABLE INTB INTERRUPT
              BITR  IRQB
              BITS  IET0               ;ENABLE INTT0 INTERRUPT
              BITR  IRQT0
              BITS  IET1               ;ENABLE INTT1 INTERRUPT
              BITR  IRQT1
              BITR  IEW                ;DISABLE INTW INTERRUPT
              BITR  IRQW               ;IRQW FLAG MUST BE CLEAR BY SOFTWARE
              LD    EA,#01110000B
              LD    TMOD0,EA           ;TMOD0.6-.4 ---SELECT CLOCK  P4-28
              BITR  TOE1               ;DISABLE TIME/COUNT1 OUTPUT TO TCLO1
              BITR  TOE0               ;..................0...........TCLO0
              BITR  BOE                ;DISABLE BASIC TIME OUTUP AT THE BTCO
              LD    TMOD1,EA
              BITS  WDTCF              ;CLEARS THE WATCHDOG TIMER COUNTER
              LD    EA,#5AH
              LD    WDMOD,EA           ;DISABLE WATCHDOG TIMER FUNCTION
              BITR  P9.0               ;RESET  VOLUME 
              BITR  P9.1               ;HI_VOLUME
              BITS  P9.2
              BTSF  P1.0
              LD    EA,#00H
              LD    PMG2,EA
              BITS  RMUTE
              BITS  LINE1_BIT 
              bits   last_p1
              bits   sel_line_fg
              BITS   flashf
              bits   flashr
              bits   eepromh
              ld     wx,#00h
              call   READ_BYTE
              LD     A,DATD_L
              DECS   A
              JR     READFLASH
              JR     READFLASH3
READFLASH     ADS    A,#4H
              JR     READFLASH1
READFLASH3    LD     A,#6H
              JR     READFLASH2
READFLASH1    LD     A,DATD_L
READFLASH2    DECS   A

              ld     FLUSHCNT,a       ;initial flash value
              CALL    BSTOP
              bitr   eepromh
              EI
              btsf   p1.0             
              jps    go_stop
              call   int0
              bitr   irq4
              bits   ie4
              ;jps    in_stop
              jps    main
go_stop       btsf   p1.3
              jps    next2
              bits   spk_key_fg
              ld     ea,#03h
              ld     key_value,ea
              bitr   irq4
              bits   ie4
              bitr   mute
              bitr   hfo
              jps    main
              
;===========================================================================
MAIN:          ;BTSF   IRQ2
              CALL   INT2
              LD     A,KEY_COUNT
              CPSE   A,#1H
              JPS    NEXT
              CALL   KEY_FUNCTION
              LD     A,#0001B
              LD     IMOD2,A           ;KS4-KS7(P7) FALLING EDGE SELECT

              call   onhook_scan
              btst   onhook_state
              jps    next1
              call   p6_mode
              jps    dddd

dddd          LD     EA,#0F8H
              LD     PUMOD1,EA         ;ENABLE P2 P3 P4 P5 PULL-UP RESISTORS
                                       ;DISABLE P1 PULL_UP RESISTOR 
              LD     EA,#0FFH
              LD     PMG1,EA           ;ENABLE P2,P3 TO OUTPUT MODE
              LD     PMG2,EA           ;ENABLE P4,P5 TO OUTPUT MODE
              LD     EA,#01111111B
              LD     PMG4,EA           ;ENABLE P8,P9 TO OUTPUT MODE
              LD     A,#0H
              LD     P2,A              ;P2,P3, OUTPUT LOW LEAVE
              LD     P3,A
              LD     P8,A              ;P8 OUTUP LOW LEAVE
              BITR   IRQ2
              BTSF   STORE_FG
              JPS    NEXT
              LD     EA,IN_POINT
              LD     WX,EA
              LD     EA,OUT_POINT
              CPSE   EA,WX
              CALL   DIALER
              ;//// qpj debug add jul/4 
              btst  spk_key_fg
              jps   next
              bitr  spk_key_fg
 ;             bits  fuck_chen_gx           ;7/5 add qpj
              
              jps   noreset_int1        ;main
              ;//// qpj debug add jul/4 
          
NEXT          BITS   RMUTE
              btsf   nousedail_fg
              jps    next1
              BTSF   IRQ2              ;AWARD ON/OFF STOP   0--OFF/1--ON
              JPS    MAIN
              CALL   ONHOOK_SCAN
next1:
		;pm.pm.     qpj 
	      BTSF   ONHOOK_STATE      ;1--OFFHOOK    0--ONKOOK
              JPS    IN_STOP1  
next2:
	      ;qpj
	      btsf   hfo
	      jps    in_stop_fuck           ;pm.pm. qpj
	      
	      call   p9_mode         
              BITR   P9.0              
              BITR   P9.1              ;HI_VOLUME
              bits   p9.2               ;BITS   P9.2

              LD     A,#0001B
              LD     IMOD2,A           ;KS4-KS7(P7) FALLING EDGE SELECT
              LD     EA,#00H
              LD     PMG3,EA           ;P7 INPUT MODE /P6 inPUT MODE
              LD     A,#2H             ;#0eh
              LD     PUMOD2,A          ;ENABLE P7 ,dis P8 P9 PULL-UP RESISTORS
              LD     EA,#08H           ;30h
              LD     PUMOD1,EA         ;ENABLE P2 P3 PULL-UP RESISTORS
                                       ;DISABLE P1 p4 p5 PULL_UP RESISTOR 
              LD     EA,#0FFH
              LD     PMG1,EA           ;ENABLE P2,P3 TO OUTPUT MODE
              LD     PMG2,EA           ;ENABLE P4,P5 TO OUTPUT MODE
              LD     EA,#01111111B
              LD     PMG4,EA           ;ENABLE P8,P9 TO OUTPUT MODE
              LD     A,#0H
              LD     P2,A              ;P2,P3, OUTPUT LOW LEAVE

⌨️ 快捷键说明

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