Tool-Relay-auto009(AUTO)

;*******************************Tool-Relay-MAIN KVM Switch*************************************
;                    DATE               2007/5/8
                     TITLE             "TOOL-RELAY-MAIN"
                     PROCESSOR         16F73
;**********************************************************************************************
;*                   BANK   SPECIAL    REGISTERS
;**********************************************************************************************
INDEX                EQU               00H            ;INDEX ADDRESS FILE
RTC                  EQU               01H            ;REAL TIME COUNTER
PCL                  EQU               02H            ;PROGRAM COUNTER LOW BYTE
;**********************************************************************************************
PSW                  EQU               03H            ;PROGRAM STATUS WORD
CF                   EQU               0              ;CARRY FLAG
AF                   EQU               1              ;AUXILIARY CARRY FLAG
ZF                   EQU               2              ;ZERO FLAG
PDF                  EQU               3              ;POWER DOWN FLAG
TOF                  EQU               4              ;TIME-OUT FLAG
RP0                  EQU               5              ;REGISTER BANK SELECT BIT 0 (DIRECT ADDRESSING 直接寻址)
RP1                  EQU               6              ;REGISTER BANK SELECT BIT 1 (DIRECT ADDRESSING 直接寻址)
IRP                  EQU               7              ;REGISTER BANK SELECT BIT   (INDIRECT ADDRESSING 间接寻址)
;***********************************************************************************************
FSR                  EQU               04H            ;FILE SELECT REGISTER
BK0                  EQU               5              ;BANK SELECTION BIT0
BK1                  EQU               6              ;BANK SELECTION BIT1
;***********************************************************************************************
RA                   EQU               05H            ;A PORT "XX00,0010 "B  00H
C1                   EQU               0              ;OUTPUT
C2                   EQU               1              ;OUTPUT
C3                   EQU               2              ;OUTPUT
C4                   EQU               3              ;OUTPUT
@RA4                 EQU               4              ;OUTPUT
@RA5                 EQU               5              ;OUTPUT
_RAVAL               EQU               b'00000000'
;************************************************************************************************
;                                 MODIFY  WILLIAM.LI
;************************************************************************************************
RB                   EQU               06H            ;B PORT "1111,1111"B FFH
BUP_W                EQU               0              ;INPUT
HBUP_W               EQU               1              ;INPUT
BDP_W                EQU               2              ;INPUT
HBDP_W               EQU               3              ;INPUT
AUP_W                EQU               4              ;INPUT
HAUP_W               EQU               5              ;INPUT
ADP_W                EQU               6              ;INPUT
HADP_W               EQU               7              ;INPUT
_RBVAL               EQU               b'11111111'
;************************************************************************************************
RC                   EQU               07H            ;C PORT "1000,0010"B 02H
SP                   EQU               0
BOTTON_SELECT        EQU               1
SEG_DAT              EQU               2
SEG_CLK              EQU               3
SEG_CLR              EQU               4
TEST1                EQU               5
TX                   EQU               6        ;输入 
RX                   EQU               7   ;输出
_RCVAL               EQU               b'10000010'
;************************************************************************************************
PCLATH               EQU               0AH              ;PROGRAM COUNTER HIGH BYTE
SUB_0                EQU               0                ;SUBROUTINE SELECT BIT 0
SUB_1                EQU               1                ;SUBROUTINE SELECT BIT 1
SUB_2                EQU               2                ;SUBROUTINE SELECT BIT 2
PG0                  EQU               3                ;PAGE SELECT BIT 0
PG1                  EQU               4                ;PAGE SELECT BIT 1
INTCON               EQU               0BH   
PEIE      EQU               6
GIE      EQU     7         
;***********************************************************************************************
;*                   BANK0  GENERAL  PURPOSE  REGISTERS        ADD 020-06F
;*                   START 20-6F ADDRESS
;***********************************************************************************************                 
;                    ALL BANKS COMMON REGISTERS
;***********************************************************************************************
TIMER1          EQU     30H
TIMER2     EQU     31H
TIMER3        EQU     32H
TIMER_S            EQU     33H
;***********************************************************************************************
PORT1_A     EQU     34H            ;count [a] side and [b] side ok's time
PORT1_B     EQU     35H
PORT2_A     EQU     36H
PORT2_B     EQU     37H
PORT3_A              EQU     38H
PORT3_B     EQU     39H
PORT4_A     EQU     3AH
PORT4_B     EQU     3BH
PORT5_A          EQU     3DH
PORT5_B     EQU     3EH
PORT6_A          EQU     3FH
PORT6_B          EQU     40H
PORT7_A     EQU     41H
PORT7_B          EQU     42H
PORT8_A          EQU     43H
PORT8_B     EQU     44H
;***********************************************************************************************
COMSTA               EQU               70H
LEADER               EQU               0
ERR_F                EQU               1
DATA_F               EQU               2
SCAN_F               EQU               3
CODE3_F              EQU               4
F0_F                 EQU               5
SPEAKER              EQU               6
;***********************************************************************************************
HEXLED               EQU               71H
SNDLED               EQU               72H
TEMP2                EQU               73H
TEMP3                EQU               74H
PORT_NUMBER          EQU               75H
TEMP5                EQU               76H
;***********************************************************************************************
@RCTEMP              EQU               77H
RECEIVE_TEMP         EQU               78H
PSW_TEMP             EQU               79H
@8TIME               EQU               7AH
UNKNOWN1             EQU               7BH
;************************************************************************************************
@RB_STATUS           EQU               7CH
@RC_STATUS           EQU               7DH
;************************************************************************************************
@RBTEMP              EQU               7EH                  ;PORTREG
PRESENT              EQU               7FH
;************************************************************************************************
;*                   BANK1    SPECIAL    REGISTERS
;************************************************************************************************
OPT_R                EQU               81H
PS0                  EQU               0              ;PRESCALER RATE SELECT BIT 0
PS1                  EQU               1              ;PRESCALER RATE SELECT BIT 1
PS2                  EQU               2              ;PRESCALER RATE SELECT BIT 2
PSA                  EQU               3              ;PRESCALER ASSIGNMENT BIT (0 = RTCC,1=WDT)
TOSE                 EQU               4              ;TMR0 SOURCE EDGE SELECT BIT (0 = RISE,1 = FALL)
TOCS                 EQU               5              ;TMR0 CLOCK SOURCE SELECT BIT (0 = INTERNAL 1 = RA4)
INTEDG               EQU               6              ;INTERRUPT EDGE SELECT BIT (0 = FALL, 1 = RISE)
RBPU                 EQU               7              ;PORTB PULL-UP ENABLE BIT (0 = ENABLE,1 = DISABLE)
;**************************************************************************************************
TRISA                EQU               85H            ;PORT A DIRECTION CONTROLLER
TRISB                EQU               86H            ;PORT B DIRECTION CONTROLLER
TRISC                EQU               87H            ;PORT C DIRECTION CONTROLLER
;**************************************************************************************************
TXSTA                EQU               98H            ;TXSRA
TX9D                 EQU               0              ;PRINTER PORT DATA
TRMT                 EQU               1
BRGH                 EQU               2
STATONLEMENTED       EQU               3
SYNC                 EQU               4
TXEN                 EQU               5
TX9                  EQU               6
CSRC                 EQU               7
;**************************************************************************************************
PIE1                 EQU               8CH           ;TXSRA
TXIE                 EQU               4
RCIE                 EQU               5
;**************************************************************************************************
PIR1                 EQU               0CH           ;RXSRA
TXIF                 EQU               4
RCIF                 EQU               5
;**************************************************************************************************
RCSTA                EQU               18H           ;RXSRA
RX9D                 EQU               0             ;PRINTER PORT DATA
OERR                 EQU               1
FERR                 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          ;PORT A ANALOG/DIGITAL DEFINE CONTROLLER
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
;*************************************************************************************************
;*                   RTCC TABLE
;*************************************************************************************************
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               0400H           ;MAIN PROGRAM PIC 16F873
PAGE2                EQU               0800H
PAGE3                EQU               0C00H           ;MAIN PROGRAM PIC 16F877
RST_87               EQU               0000H           ;STARTING REGISTER AT 0000H
;************************************************************************************************
;**                               TEST  PORT  NUMBER
;************************************************************************************************
PORT_MAIN            EQU               08H
;************************************************************************************************
;***                              MACRO                                                                    ***
;************************************************************************************************
;SEL_REG_BIT       ;   MACRO             X
                   ;  LOCAL             SELREG1,SELREG2
;SELREG1            
                   ;  MOVF              RC,W
                    ; MOVWF             @RCTEMP                   ;@RCTEMP为F77H
                   ;  BTFSS             @RCTEMP,X
                   ;  GOTO              SELREG2

                   ;  GOTO              SELREG1
;SELREG2
                   ;  MOVF              RC,W
                   ;  MOVWF             @RCTEMP
                   ;  BTFSS             @RCTEMP,X
                  ;   GOTO              SELREG2
                   ;  ENDM
;*************************************************************************************************
                     ORG     0000H
      GOTO              POWERON_INITION
      ORG     0004H
      GOTO     INT_SER
                     ;ORG               PAGE0
;*************************************************************************************************
;**                   TABLE            HEX TO 7-SEGMENT LED SUBROUTINE
;*************************************************************************************************
SCODE
                     CLRF              PCLATH
                     ADDWF             PCL
                     RETLW             0C0H             ;0
                     RETLW             0F9H             ;1
                     RETLW             0A4H             ;2
                     RETLW             0B0H             ;3
                     RETLW             99H              ;4
                     RETLW             92H              ;5
                     RETLW             82H              ;6
                     RETLW             0F8H             ;7
                     RETLW             80H              ;8
                     RETLW             98H              ;9
                     RETLW             88H              ;A
                     RETLW             83H              ;B&8
                     RETLW             0C6H             ;C
                     RETLW             0C0H             ;D&0
                     RETLW             86H              ;E
                     RETLW             8EH              ;F
SHOWDISPLAY7
                     MOVF              @RC_STATUS,W
                     ANDLW             0FH
                     CALL              SHOWDISPLAY70
                    
                     SWAPF             @RC_STATUS,1
                     MOVF              @RC_STATUS,W
                     ANDLW             0FH
                     CALL              SHOWDISPLAY70

                     SWAPF             @RC_STATUS,1
                     RETLW             0
SHOWDISPLAY99
                     MOVF              PRESENT,W
                     ANDLW             0FH
                     CALL              SHOWDISPLAY70
                    
                     SWAPF             PRESENT,1
                     MOVF              PRESENT,W
                     ANDLW             0FH
                     CALL              SHOWDISPLAY70
                    
                     RETLW             0
SHOWDISPLAY70
                     CALL              SCODE
                     MOVWF             TEMP5
                     MOVLW             08H
                     MOVWF             TEMP3
SHOWDISPLAY71
                     BSF               RC,SEG_DAT             ;turn off
                     BTFSS             TEMP5,7                ;btfss     temp5,7
                     BCF               RC,SEG_DAT             ;turn on
                     BCF               RC,SEG_CLK
                     BSF               RC,SEG_CLK
                     RLF               TEMP5
                     DECFSZ            TEMP3
                     GOTO              SHOWDISPLAY71
                     RETLW             0
;***************************************************************************************************
;                    PAGE0            SUBROUTINE               
;***************************************************************************************************
BEEP
                     BSF               RC,SP                 ;set speaker on5k
BEP0
                     CLRF              RTC
BEP1
                     BTFSS             RTC,RF7
                     GOTO              BEP1                  ;set speaker 16ms
                     BCF               RC,SP
                     RETLW             0
;***************************************************************************************************
;                    PORT()     SELECT    2.PORT_MAIN(PORT ) = PORT_NUMBER     PORT_NUMBER=0
;***************************************************************************************************
SELECTABLE
                     BSF              RA,C1
                     BTFSS            PORT_NUMBER,0
                     BCF              RA,C1

                     BSF              RA,C2
                     BTFSS            PORT_NUMBER,1
                     BCF              RA,C2

                     BSF              RA,C3
                     BTFSS            PORT_NUMBER,2
                     BCF              RA,C3
                    
                     BSF              RA,C4
                     BTFSS            PORT_NUMBER,3
                     BCF              RA,C4

                     MOVLW            PORT_MAIN
                     XORWF            PORT_NUMBER,0
                     BTFSS            PSW,ZF
                     RETLW            0
                    
                     MOVLW            00H
                     MOVWF            PORT_NUMBER
                     GOTO             SELECTABLE
;****************************************************************************************************
DELAY_MS
                     CLRF              RTC
DELAY_MS2
                     BTFSS             RTC,RF7
                     GOTO              DELAY_MS2
                     DECFSZ            TEMP2
                     GOTO              DELAY_MS
                     RETLW             0
;***************************************************************************************************
SHOW7A_MAIN
                     CALL              SHOW7A
                     MOVWF             PRESENT
                     CALL              SHOWDISPLAY99
                     CALL              SHOWDISPLAY7
                     RETLW             0
SHOW7B_MAIN
                     CALL              SHOW7B
                     MOVWF             PRESENT
                     CALL              SHOWDISPLAY99
                     CALL              SHOWDISPLAY7  
                     RETLW             0                
;***************************************************************************************************
SHOW7B
                     BTFSS             @RBTEMP,0
                     RETLW             0BFH
                     RETLW             0B0H
SHOW7A
                     BTFSS             @RBTEMP,1
                     RETLW             0AFH
                     RETLW             0A0H

;**********************************************************************************************
ONE_SECOND                                           
                     MOVLW             01H   
                     MOVWF             TIMER1
LOOP1                MOVLW             0FFH
                     MOVWF             TIMER2
LOOP2                MOVLW             0FFH
                     MOVWF             TIMER3
LOOP3                DECFSZ            TIMER3
                     GOTO              LOOP3
                     DECFSZ            TIMER2
                     GOTO              LOOP2
                     DECFSZ            TIMER1
                     GOTO              LOOP1
                     RETLW             0H                                                           
;****************************************************************************************************
;初始化工作开始
POWERON_INITION
                     CLRF              PSW                       ;SET REGISTERS IN BANK0
                     CLRF              FSR                       ;SET REGISTERS IN BANK0
                     CLRF              PCLATH                    ;SET PROGRAMS IN PAGE0
                    
                     BSF               PSW,RP0                   ;CHANGE REGISTERS BANK TO 2ND
                     MOVLW             07H                       ;10000111
                     MOVWF             OPT_R                     ;SET RTCC TIMER SCALE TO 128US EACH STEP0
                     MOVLW             07H
                     MOVWF             ADCON1                    ;DEFINE PORTA IS DIGITAL I/O
                     MOVLW             _RAVAL
                     MOVWF             TRISA
                     MOVLW             _RBVAL
                     MOVWF             TRISB
                     MOVLW             _RCVAL
                     MOVWF             TRISC
                     BCF               PSW,RP0                     ;CHANGE REGISTERS BANK TO 1ST
;****************************************************************************************************
POWERON_HAREWARE
                     CLRF              INTCON
                     BCF               RC,SP                 ;spk      

                     BSF               RC,SEG_DAT            ;CLEAR DISPLAY
                     BCF               RC,SEG_CLR
                     BSF               RC,SEG_CLR
      
                     BSF               RC,TEST1
 
                     MOVLW             00H                   ;PORT_EQU=0
                     MOVWF             PORT_NUMBER           ;用于致能PORT数的暂存器
                     MOVWF             @RC_STATUS            ;用于7节显示器的暂存器

                     CALL              SELECTABLE            ;致能当前PORT数为PORT_NUMBER暂存器中的值。
                     CALL              SHOWDISPLAY7          ;使7节显示器显示数字00
                     CALL              SHOWDISPLAY7          ;使7节显示器显示数字00

                     CLRF              @RBTEMP
                     BSF               @RBTEMP,7        

      CALL     CLRF_PORT
                     CALL              BEEP                  ;初始化结束.
      GOTO     PROGRAM_MAIN
;****************************************************************************************************
RS232_INITIAL
      CLRF     RCSTA
      BSF               RCSTA,CREN        ;致能接收功能 
                     BSF               RCSTA,SPEN        ;致能串列通讯模组
                     CLRF     PIR1                       ;;;;;;;;;;;;;;;     
        
                     BSF               PSW,RP0
                     MOVLW             34H     ;D'52'
                     MOVWF             SPBRG    
           CLRF              TXSTA
                     BSF               TXSTA,BRGH      ;设定快速鲍率
                     BSF               TXSTA,TXEN    ;致能传送功能
   
                     CLRF          PIE1                        ;;;;;;;;;;;;;;;
      BSF               PIE1,RCIE

                     BCF               PSW,RP0
      return
;****************************************************************************************************
OPEN_INTERRUPT
                     CLRF     INTCON
      BSF     INTCON,PEIE
      BSF       INTCON,GIE
      return
;****************************************************************************************************
INT_SER
      SWAPF     PSW,0                      ;储存STATUS暂存器
      MOVWF     PSW_TEMP
      BTFSC             PIR1,RCIF
                GOTO       RCIF_INT      
      GOTO              INT_SER_END
RCIF_INT         
      MOVF     RCREG,W                    ;MOVF RECEIVE_TEMP,0 
      MOVWF     RECEIVE_TEMP
      MOVLW             08H
      MOVWF      @8TIME
CALL_LPT_MAIN
      CALL     LPT_MAIN
      CALL              ONE_SECOND
      DECFSZ            @8TIME,1
      GOTO              CALL_LPT_MAIN
      DECFSZ            RECEIVE_TEMP,1
                     GOTO              CONTINUE1
      GOTO              SEND_PORT
CONTINUE1
                MOVLW     08H
           MOVWF          @8TIME
      GOTO     CALL_LPT_MAIN
                    
SEND_PORT 
      CALL     SEND_PORT_STATUS 
      CALL              CLRF_PORT          
                     CALL              BEEP
INT_SER_END
      SWAPF     PSW_TEMP,0        ;读回STATUS暂存器
      MOVWF             PSW
      RETFIE      
;****************************************************************************************************
PROGRAM_MAIN
      CALL     RS232_INITIAL
      CALL          OPEN_INTERRUPT
      GOTO              $
;****************************************************************************************************
;开始进行主循环
LPT_MAIN
                     ;SEL_REG_BIT 1                
                     CLRF              @RBTEMP            
                     MOVF              PORT_NUMBER,0        
                     MOVWF             @RC_STATUS                ;POR_NUMBER的值放入@RC_MAIN2中
                     INCF              @RC_STATUS,1
                    
                     CLRF              PSW
                     CALL              CHECK_ERRR1               ;TEST RELAY
 
                     CLRF              PSW
                     CALL              CHECK_ERRR2               ;TEST RELAY
                    
                     CALL              SHOW7A_MAIN
                     CALL              ONE_SECOND
                   
                     CALL              SHOW7B_MAIN
                     CALL              ONE_SECOND
               CALL              COUNTER_OK_TIME
LPT_MAIN1           
                     INCF              PORT_NUMBER,1             ;PORT_NUMBER+1放入PORT_NUMBER中
                     CALL              SELECTABLE           
                    
           RETLW             0
;主循环结束处
;**************************************************************************************************
;**************************************************************************************************
CHECK_ERRR1
                     BCF               RC,TEST1                  ;READLY ON
                     MOVF              RB,W
                     MOVWF             @RB_STATUS                ;A SIDE BAD?

                     ANDLW             0FH                       ;0BBH
                     XORLW             0EH

                     BTFSS             PSW,ZF
                     CALL              ERRBEEPLOB1_NG            ;如果不为0,则不设置@RBTEMP暂存器,继续执行下一测试。          
                    
                     BTFSC             PSW,ZF
                     CALL              ERRBEEPLOB1_OK            ;DISPLAY 7-SEGMENT
 
                     CLRF              PSW                      
                     SWAPF             @RB_STATUS
                     MOVF              @RB_STATUS,0
                     ANDLW             0FH
                     XORLW             0EH
                    
                     BTFSS             PSW,ZF
                     CALL              ERRBEEPLOA1_NG

                     BTFSC             PSW,ZF
                     CALL              ERRBEEPLOA1_OK

                     RETLW             0                        ;TEST1测试完,返回调用处。
ERRBEEPLOB1_OK
                     BSF               @RBTEMP,0
                     RETLW             0
ERRBEEPLOB1_NG
                     BCF               @RBTEMP,0
                     RETLW             0
ERRBEEPLOA1_OK
                     BSF               @RBTEMP,1
                     RETLW             0
ERRBEEPLOA1_NG
                     BCF               @RBTEMP,1
                     RETLW             0
;***************************************************************************************************
CHECK_ERRR2
                     BSF               RC,TEST1                     ;READLY OFF
                     MOVF              RB,W
                     MOVWF             @RB_STATUS                   ;

                     ANDLW             0FH      
                     XORLW             0BH

                     BTFSS             PSW,ZF                       ;B SIDE BAD?
                     CALL              ERRBEEPLOB1_NG

                     BTFSC             PSW,ZF
                     CALL              ERRBEEPLOB1_OK               ;DISPLAY 7SEGMENT
                    
                     CLRF              PSW                      
                     SWAPF             @RB_STATUS
                     MOVF              @RB_STATUS,0
                     ANDLW             0FH
                     XORLW             0BH
                    
                     BTFSS             PSW,ZF
                     CALL              ERRBEEPLOA1_NG

                     BTFSC             PSW,ZF
                     CALL              ERRBEEPLOA1_OK

                     RETLW             0
;**********************************************************************************************
COUNTER_OK_TIME
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             01H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT2
      BTFSC             @RBTEMP,0
      INCF          PORT1_B
           BTFSC     @RBTEMP,1
      INCF     PORT1_A
      RETLW     0
NEXT_PORT2
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             02H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT3
      BTFSC             @RBTEMP,0
      INCF          PORT2_B
           BTFSC     @RBTEMP,1
      INCF     PORT2_A
      RETLW     0
NEXT_PORT3
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             03H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT4
      BTFSC             @RBTEMP,0
      INCF          PORT3_B
           BTFSC     @RBTEMP,1
      INCF     PORT3_A
      RETLW     0
NEXT_PORT4
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             04H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT5
      BTFSC             @RBTEMP,0
      INCF          PORT4_B
           BTFSC     @RBTEMP,1
      INCF     PORT4_A
      RETLW     0
NEXT_PORT5
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             05H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT6
      BTFSC             @RBTEMP,0
      INCF          PORT5_B
           BTFSC     @RBTEMP,1
      INCF     PORT5_A
      RETLW     0
NEXT_PORT6
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             06H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT7
      BTFSC             @RBTEMP,0
      INCF          PORT6_B
           BTFSC     @RBTEMP,1
      INCF     PORT6_A
      RETLW     0
NEXT_PORT7
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             07H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT8
      BTFSC             @RBTEMP,0
      INCF          PORT7_B
           BTFSC     @RBTEMP,1
      INCF     PORT7_A
      RETLW     0
NEXT_PORT8
      CLRF          PSW
      MOVF          @RC_STATUS,0
      XORLW             08H
                 BTFSS          PSW,ZF
      GOTO          NEXT_PORT_END
      BTFSC             @RBTEMP,0
      INCF          PORT8_B
           BTFSC     @RBTEMP,1
      INCF     PORT8_A
NEXT_PORT_END
      RETLW     0
;**********************************************************************************************
CLRF_PORT
      CLRF     PORT1_A         
                     CLRF     PORT1_B        
                     CLRF              PORT2_A   
      CLRF     PORT2_B
      CLRF     PORT3_A            
      CLRF     PORT3_B  
      CLRF          PORT4_A    
      CLRF     PORT4_B    
      CLRF     PORT5_A        
      CLRF     PORT5_B   
      CLRF     PORT6_A        
      CLRF     PORT6_B         
           CLRF     PORT7_A    
                 CLRF     PORT7_B        
      CLRF     PORT8_A         
      CLRF     PORT8_B
      RETLW             0
;**********************************************************************************************
SEND_PORT_STATUS
      CALL              ONE_SECOND
      MOVF              PORT1_A,0
      MOVWF     TXREG
TXIF_WAIT1_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT1_A

      CALL              ONE_SECOND
      MOVF              PORT1_B,0
      MOVWF     TXREG
TXIF_WAIT1_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT1_B

      CALL              ONE_SECOND
      MOVF              PORT2_A,0
      MOVWF     TXREG
TXIF_WAIT2_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT2_A

      CALL              ONE_SECOND
      MOVF              PORT2_B,0
      MOVWF     TXREG
TXIF_WAIT2_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT2_B

      CALL              ONE_SECOND
      MOVF              PORT3_A,0
      MOVWF     TXREG
TXIF_WAIT3_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT3_A

      CALL              ONE_SECOND
      MOVF              PORT3_B,0
      MOVWF     TXREG
TXIF_WAIT3_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT3_B

           CALL              ONE_SECOND
      MOVF              PORT4_A,0
      MOVWF     TXREG
TXIF_WAIT4_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT4_A

           CALL              ONE_SECOND
      MOVF              PORT4_B,0
      MOVWF     TXREG
TXIF_WAIT4_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT4_B

                CALL              ONE_SECOND
      MOVF              PORT5_A,0
      MOVWF     TXREG
TXIF_WAIT5_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT5_A

      CALL              ONE_SECOND
      MOVF              PORT5_B,0
      MOVWF     TXREG
TXIF_WAIT5_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT5_B

      CALL              ONE_SECOND
      MOVF              PORT6_A,0
      MOVWF     TXREG
TXIF_WAIT6_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT6_A
     
      CALL              ONE_SECOND
      MOVF              PORT6_B,0
      MOVWF     TXREG
TXIF_WAIT6_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT6_B

                CALL              ONE_SECOND
      MOVF              PORT7_A,0
      MOVWF     TXREG
TXIF_WAIT7_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT7_A

      CALL              ONE_SECOND
      MOVF              PORT7_B,0
      MOVWF     TXREG
TXIF_WAIT7_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT7_B

      CALL              ONE_SECOND
      MOVF              PORT8_A,0
      MOVWF     TXREG
TXIF_WAIT8_A    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT8_A

      CALL              ONE_SECOND
      MOVF              PORT8_B,0
      MOVWF     TXREG
TXIF_WAIT8_B    BTFSS     PIR1,TXIF
      GOTO              TXIF_WAIT8_B
          RETLW             0
;**********************************************************************************************
                     END
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值