;************************************Tool KVM DVI****************************************************
; DATE 2007/07/23
; 作者 william.李
; 公司 东莞市佑霖电子科技有限公司
TITLE "Tool-KVM-DVI"
PROCESSOR 16F73
;****************************************************************************************************
; BANK SPECIAL REGISTERS
;****************************************************************************************************
INDEX EQU 00H
RTCC EQU 01H
PCL EQU 02H
;*****************************************************************************************************
PSW EQU 03H
CF EQU 0
DCF EQU 1
ZF EQU 2
PDF EQU 3
TOF EQU 4
PA0 EQU 5
PA1 EQU 6
IRP EQU 7
;*****************************************************************************************************
FSR EQU 04H
BK0 EQU 5
BK1 EQU 6
;*****************************************************************************************************
RA EQU 05H
SP EQU 0
BOTTON_SELECT EQU 1
LED_TEST_SW EQU 2
RA_3 EQU 3
RA_4 EQU 4
RA_5 EQU 5
_RAVAL EQU b'00000110'
;*****************************************************************************************************
RB EQU 06H
RB_0 EQU 0
RB_1 EQU 1
RB_2 EQU 2
SEG_DAT EQU 3
SEG_CLK EQU 4
SEG_CLR EQU 5
RB_6 EQU 6
C1 EQU 7
_RBVAL EQU b'00000000'
;*****************************************************************************************************
RC EQU 07H
MLD1 EQU 0
MLD2 EQU 1
MLD3 EQU 2
MLD4 EQU 3
RC_4 EQU 4
RC_5 EQU 5
RX EQU 6
TX EQU 7
_RCVAL EQU B'01000000'
;*****************************************************************************************************
PCLATH EQU 0AH
SUB_0 EQU 0
SUB_1 EQU 1
SUB_2 EQU 2
PG0 EQU 3
PG1 EQU 4
;*****************************************************************************************************
K21REG EQU 21H
K22REG EQU 22H
K23REG EQU 23H
K24REG EQU 24H
K25REG EQU 25H
K26REG EQU 26H
K27REG EQU 27H
K28REG EQU 28H
K29REG EQU 29H
;*****************************************************************************************************
K2AREG EQU 2AH
K2BREG EQU 2BH
K2CREG EQU 2CH
K2DREG EQU 2DH
K2EREG EQU 2EH
K2FREG EQU 2FH
K30REG EQU 30H
K31REG EQU 31H
;*****************************************************************************************************
K70REG EQU 70H
REG_0 EQU 0
REG_1 EQU 1
REG_2 EQU 2
REG_3 EQU 3
REG_4 EQU 4
REG_5 EQU 5
REG_6 EQU 6
REG_7 EQU 7
;*****************************************************************************************************
TEMP0 EQU 71H
TEMP1 EQU 72H
TEMP2 EQU 73H
TEMP3 EQU 74H
PORT_NUMBER EQU 75H
TEMP5 EQU 76H
;*****************************************************************************************************
TIMER0 EQU 77H
TIMER1 EQU 78H
TIMER2 EQU 79H
TIMER3 EQU 7AH
TIMER4 EQU 7BH
;*****************************************************************************************************
TEMP6 EQU 7CH
TEMP7 EQU 7DH
;*****************************************************************************************************
TEMP8 EQU 7EH
TEMP9 EQU 7FH
;*****************************************************************************************************
OPT_R EQU 81H
PS0 EQU 0
PS1 EQU 1
PS2 EQU 2
PSA EQU 3
TOSE EQU 4
TOCS EQU 5
INTEDG EQU 6
RBPU EQU 7
;*****************************************************************************************************
TRISA EQU 85H
TRISB EQU 86H
TRISC EQU 87H
;*****************************************************************************************************
TXSTA EQU 98H
TX9D EQU 0
TRMT EQU 1
BRGH EQU 2
Unimplemented EQU 3
SYNC EQU 4
TXEN EQU 5
TX9 EQU 6
CSRC EQU 7
;*****************************************************************************************************
PIE1 EQU 8CH
TXIE EQU 4
RCIE EQU 5
;*****************************************************************************************************
PIR1 EQU 0CH
TXIF EQU 4
RCIF EQU 5
;*****************************************************************************************************
RCSTA EQU 18H
RX9D EQU 0
OERR EQU 1
RERR EQU 2
ADDEN EQU 3
CREN EQU 4
SREN EQU 5
RX9 EQU 6
SPEN EQU 7
;*****************************************************************************************************
TXREG EQU 19H
SPBRG EQU 99H
RCREG EQU 1AH
;*****************************************************************************************************
ADCON1 EQU 9FH
BIT_0 EQU 0
BIT_1 EQU 1
BIT_2 EQU 2
BIT_3 EQU 3
BIT_4 EQU 4
BIT_5 EQU 5
BIT_6 EQU 6
BIT_7 EQU 7
;*****************************************************************************************************
RF0 EQU 0
RF1 EQU 1
RF2 EQU 2
RF3 EQU 3
RF4 EQU 4
RF5 EQU 5
RF6 EQU 6
RF7 EQU 7
;*****************************************************************************************************
PAGE0 EQU 0005H
PAGE1 EQU 0800H
;*****************************************************************************************************
PORT_MAIN EQU 2
;*****************************************************************************************************
ORG 0000H
GOTO MAIN_INIT
;*****************************************************************************************************
SCODE
CLRF PCLATH
ADDWF PCL
RETLW 06H
RETLW 06H
RETLW 0CBH
RETLW 0FFH
RETLW 99H
RETLW 92H
RETLW 82H
RETLW 0F8H
RETLW 80H
RETLW 90H
RETLW 88H
RETLW 83H
RETLW 0C6H
RETLW 0A1H
RETLW 86H
RETLW 8EH
SHOWDISPLAY
BSF RB,SEG_DAT
BCF RB,SEG_CLR
BSF RB,SEG_CLR
MOVF PORT_NUMBER,W
ANDLW 0FH
CALL SCODE
MOVWF TEMP6
MOVLW 08H
MOVWF TEMP7
SHOWDISPLAY1
BSF RB,SEG_DAT
BTFSC TEMP6,7
BCF RB,SEG_DAT
BCF RB,SEG_CLK
BSF RB,SEG_CLK
RLF TEMP6
DECFSZ TEMP7,1
GOTO SHOWDISPLAY1
RETLW 0
;*****************************************************************************************************
BEEP
BSF RA,SP
BEP0
CLRF RTCC
BEP1
BTFSS RTCC,RF7
GOTO BEP1
BCF RA,SP
RETLW 0
;*****************************************************************************************************
ONE_SECOND
MOVLW 02H
MOVWF TIMER1
; BTFSC TEMP5,3
; GOTO LOOP1
; MOVLW 0EH
; MOVWF TIMER1
LOOP1 MOVLW 08FH
MOVWF TIMER2
LOOP2 MOVLW 0FFH
MOVWF TIMER3
LOOP3 DECFSZ TIMER3
GOTO LOOP3
DECFSZ TIMER2
GOTO LOOP2
DECFSZ TIMER1
GOTO LOOP1
RETLW 0
;*****************************************************************************************************
MAIN_INIT
CLRF PSW
CLRF FSR
CLRF PCLATH
BSF PSW,PA0
MOVLW 07H
MOVWF OPT_R
MOVLW 07H
MOVWF ADCON1
MOVLW _RAVAL
MOVWF TRISA
MOVLW _RBVAL
MOVWF TRISB
MOVLW _RCVAL
MOVWF TRISC
BCF PSW,PA0
;*****************************************************************************************************
BSF RA,BOTTON_SELECT
BSF RA,LED_TEST_SW
BCF RA,SP
BCF RB,C1
BSF RC,MLD1
BSF RC,MLD2
BSF RC,MLD3
BSF RC,MLD4
CLRF TEMP6
CLRF TEMP7
BSF RB,SEG_DAT
BCF RB,SEG_CLK
BSF RB,SEG_CLK
CLRF PORT_NUMBER
CALL SHOWDISPLAY
;*****************************************************************************************************
CALL BEEP
;*****************************************************************************************************
TX_MAIN
CLRF TEMP1
MOVF RA,0
MOVWF TEMP1
BTFSS TEMP1,2
GOTO TX_1
BTFSS TEMP1,1
GOTO TX_0
GOTO TX_MAIN
;*****************************************************************************************************
TX_1
MOVF RA,0
MOVWF TEMP1
BTFSS TEMP1,2
GOTO TX_1
GOTO BOTTON_1
TX_0
MOVF RA,0
MOVWF TEMP1
BTFSS TEMP1,1
GOTO TX_0
GOTO BOTTON_0
;*****************************************************************************************************
BOTTON_0
CLRF TEMP3
MOVF RB,0
MOVWF TEMP3
BTFSC TEMP3,7
GOTO SET_LOW
BSF RB,C1
MOVLW 02H
MOVWF PORT_NUMBER
GOTO SET_SW
SET_LOW BCF RB,C1
MOVLW 01H
MOVWF PORT_NUMBER
SET_SW
CALL SHOWDISPLAY
CALL BEEP
GOTO TX_MAIN
;*****************************************************************************************************
BOTTON_1
MOVLW 03H
MOVWF TEMP2
BOTTON_1_0
BSF RC,MLD1
CALL ONE_SECOND
BCF RC,MLD1
CALL ONE_SECOND
DECFSZ TEMP2,1
GOTO BOTTON_1_0
BSF RC,MLD1
MOVLW 03H
MOVWF TEMP2
BOTTON_1_1
BSF RC,MLD2
CALL ONE_SECOND
BCF RC,MLD2
CALL ONE_SECOND
DECFSZ TEMP2,1
GOTO BOTTON_1_1
BSF RC,MLD2
MOVLW 03H
MOVWF TEMP2
BOTTON_1_2
BSF RC,MLD3
CALL ONE_SECOND
BCF RC,MLD3
CALL ONE_SECOND
DECFSZ TEMP2,1
GOTO BOTTON_1_2
BSF RC,MLD3
MOVLW 03H
MOVWF TEMP2
BOTTON_1_3
BSF RC,MLD4
CALL ONE_SECOND
BCF RC,MLD4
CALL ONE_SECOND
DECFSZ TEMP2,1
GOTO BOTTON_1_3
BSF RC,MLD4
CALL BEEP
GOTO TX_MAIN
;*****************************************************************************************************
END