;************************************************************************************************* ; TESTA_CABOS_12V.ASM ; ; TESTADOR DE CABOS DE 12 VIAS, USANDO PIC16F877A E LCD ; AUTOR:CLAUDIO LÁRIOS INICIO: 28-10-2013 TERMINO:30-10-2013 ; USO DIDÁTICO APENAS. ;************************************************************************************************* ; USO: CONECTE O CABO UM LADO NO CONECTOR J1 E O OUTRO NO CONECTOR J2 ; O DISPLAY DARÁ INDICAÇÃO DO ESTADO, SENDO: ; PRIMEIRA LINHA= TOMADA J1 COM O NUMERO DOS FIOS DA PONTA DE ENTRADA DO CABO ; SEGUNDA LINHA = TOMADA J2 COM OS NUMEROS DOS FIOS DA OUTRA PONTA DO CABO ; ; A INTERPRETAÇÃO DA SITUAÇÃO DO CABO SERÁ DADA POR: ; PRIMEIRA LINHA COINCIDINDO COM A SEGUNDA LINHA - CABO OK ; ; J1 123456789ABC ; J2 123456789ABC ; SEGUNDA LINHA COM NUMEROS INVERTIDOS, MAS NÃO REPETIDOS = FIOS INVERTIDOS ; ; J1 123456789ABC ; J2 124356789ABC ;SENDO 4 INVERTIDO COM 3 ; SEGUNDA LINHA COM ALGUNS 'X'S= FIOS INTERROMPIDOS ; J1 123456789ABC ; J2 123X56789ABC ;SENDO 'X' = INTERROMPIDO ; NA SEGUNDA LINHA COM UM OU MAIS NUMEROS REPETIDOS = FIOS EM CURTO CIRCUITO ; J1 123456789ABC ; J2 1233567893BC ;SENDO '3' = EM CURTO ENTRE 3,4 E 10 ; OBS. AS LETRAS 'A','B' E 'C' SUBSTITUEM OS NÚMEROS '10','11' E '12' NA INDICAÇÃO DO LCD. ;************************************************************************************************* ;MODELO DO MICROCONTROLADOR LIST P=16f877A , R=DEC INCLUDE "P16F877A.INC" ;-------------------------- ERRORLEVEL -302, -202 ;ELIMINA MENSAGEM DE ERRO AO COMPILAR __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_HALF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_ON & _LVP_OFF ;BANCOS #DEFINE BANK0 BCF STATUS,RP0 ;SETA BANK0 DE MEMORIA #DEFINE BANK1 BSF STATUS,RP0 ;SETA BANK1 #DEFINE FLAG_G1 FLAGS,0 ;FLAG AUX #DEFINE FLAG_G2 FLAGS,1 ;FLAG AUX ;================================================================================================ ;CONSTANTS DEFINITIONS ;================================================================================================ ;LCD Control lines #DEFINE LCD_DB7 PORTC,7 ;PINO 26 - DISPLAYS #DEFINE LCD_DB6 PORTC,6 ;PINO 25 - DISPLAY #DEFINE LCD_DB5 PORTC,5 ;PINO 24 - DISPLAYS #DEFINE LCD_DB4 PORTC,4 ;PINO 23 - DISPLAY #DEFINE LCD_RS PORTA,4 ;PINO 6 - DISPLAY #DEFINE LCD_E PORTA,5 ;PINO 5 - DISPLAY ;TOMADA 'J1' TRIS_STATE #DEFINE F1T TRISC,0 #DEFINE F2T TRISC,2 #DEFINE F3T TRISB,0 #DEFINE F4T TRISB,2 #DEFINE F5T TRISB,4 #DEFINE F6T TRISB,5 #DEFINE F7T TRISB,6 #DEFINE F8T TRISB,7 #DEFINE F9T TRISC,1 #DEFINE F10T TRISC,3 #DEFINE F11T TRISB,1 #DEFINE F12T TRISB,3 ;TOMADA 'J1' #DEFINE F1S PORTC,0 #DEFINE F2S PORTC,2 #DEFINE F3S PORTB,0 #DEFINE F4S PORTB,2 #DEFINE F5S PORTB,4 #DEFINE F6S PORTB,5 #DEFINE F7S PORTB,6 #DEFINE F8S PORTB,7 #DEFINE F9S PORTC,1 #DEFINE F10S PORTC,3 #DEFINE F11S PORTB,1 #DEFINE F12S PORTB,3 ;TOMADA 'J2' #DEFINE F1E PORTA,0 #DEFINE F2E PORTA,2 #DEFINE F3E PORTD,0 #DEFINE F4E PORTD,2 #DEFINE F5E PORTD,4 #DEFINE F6E PORTD,5 #DEFINE F7E PORTD,6 #DEFINE F8E PORTD,7 #DEFINE F9E PORTA,1 #DEFINE F10E PORTA,3 #DEFINE F11E PORTD,1 #DEFINE F12E PORTD,3 #DEFINE SOM PORTE,0 #DEFINE SOM_TRIS TRISE,0 ;RAM CBLOCK 0X20 TR ;BUFFER DE ENVIO PARA O LCD FLAGS ;REGISTRADOR PARA FLAGS LC,LC1 ;USO EM DELAYS TEMP,TEMP1,AUX,PCAUX ;TEMPORARIOS CNTX1,CNTX2,CNTX3,CNTX4,CNTX5,CNTX6 ;CONTADORES DE ERROS CNTX7,CNTX8,CNTX9,CNTXA,CNTXB,CNTXC,CNTXX,R_ERRO ;CONTADORES DE ERROS CNTY1,CNTY2,CNTY3,CNTY4,CNTY5,CNTY6 ;CONTADORES AUXILIARES CNTY7,CNTY8,CNTY9,CNTYA,CNTYB,CNTYC ;CONTADORES AUXILIARES ENDC ;================================================================================ ; RESET ;================================================================================ ORG 0X00 GOTO START ;================================================================================ ; INTERRUPÇÕES ;================================================================================ ORG 0X04 RETFIE ;================================================================================ ; PÁGINA ZERO ;================================================================================ ;;MENSAGENS PEGA_M MOVWF TEMP MOVFW PCAUX MOVWF PCLATH MOVFW TEMP MOVWF PCL MSG1: DT "**TESTA__CABOS**",0 MSG2: DT "LARIOS.TECNOL.WS",0 MSG4: DT " ",0 ;================================================================================ ; ROTINA DE ENVIO DE FRASES PARA O LCD ;================================================================================ ENV_LCD MOVWF AUX RT1 CALL PEGA_M ADDLW .0 BTFSC STATUS,Z GOTO SAI_34 CALL ED INCF AUX,F MOVFW AUX GOTO RT1 SAI_34 CLRF PCAUX ;ZERA PAGINA RETURN ;================================================================================ ; CONFIGURAÇÕES INICIAIS DE PORTAS E REGISTRADORES ;================================================================================ RESET: START: BANK1 MOVLW B'11111111' ; SETUP PORTB MOVWF TRISB MOVLW B'00001111' ; SETUP PORTC (NIBBLE HIGH=LCD DB7...DB4) MOVWF TRISC MOVLW B'001111' ; SETUP PORTA (BIT 4,5 = LCD RS..E) MOVWF TRISA MOVLW B'11111111' ; SETUP PORTD MOVWF TRISD BCF SOM_TRIS ;SAIDA DE SOM CLRF OPTION_REG ;LIGA PULLUPS NO PORTB BSF OPTION_REG,7 ;DESLIGA PULLUPS MOVLW .6 MOVWF ADCON1 ;TUDO IN/OUT DIGITAL BANK0 MOVLW 0X07 MOVWF CMCON ;DESLIGA COMPARADORES CLRF PORTA ; ZERA PORTA MOVLW 0X0F MOVWF PORTC MOVLW 0XFF MOVWF PORTB CLRF FLAGS CLRF PCAUX ;PONTEIRO DE PAGINA MOVLW 0XFF CALL LcdDelay CALL LcdInit ;INICIA LCD MOVLW 0XFF CALL LcdDelay CALL LcdClear MOVLW MSG1 ;MENSAGEM:"**TESTA__CABOS**" CALL ENV_LCD CALL LINHA_2 MOVLW MSG2 CALL ENV_LCD CALL BIP MOVLW 0X06 ;TEMPO DA APRESENTAÇÃO CALL DELAYW CALL LcdClear ;LIMPA LCD ;================================================================================ ; ROTINA PRINCIPAL ;================================================================================ MAIN ; CALL LcdClear ;LIMPA LCD CALL LIMPA_ERRO ;================================================================================== ; TESTA FIO 1 ;================================================================================== MOVLW 0X80 CALL EC MOVLW 'J' CALL ED MOVLW '1' CALL ED MOVLW ' ' CALL ED MOVLW ' ' CALL ED MOVLW 0XC0 CALL EC MOVLW 'J' CALL ED MOVLW '2' CALL ED MOVLW ' ' CALL ED MOVLW ' ' CALL ED TESTA_FIO1 MOVLW 0X80+4 CALL EC MOVLW '1' CALL ED MOVLW 0XC0+4 CALL EC BANK1 BSF F12T BCF F1T ;VIA 1 (SAIDA '1') BANK0 BSF F1S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK1 CALL ENVIA_1 GOTO TESTA_FIO2 PK1 BTFSS F2E GOTO PK2 CALL ENVIA_2 GOTO TESTA_FIO2 PK2 BTFSS F3E GOTO PK3 CALL ENVIA_3 GOTO TESTA_FIO2 PK3 BTFSS F4E GOTO PK4 CALL ENVIA_4 GOTO TESTA_FIO2 PK4 BTFSS F5E GOTO PK5 CALL ENVIA_5 GOTO TESTA_FIO2 PK5 BTFSS F6E GOTO PK6 CALL ENVIA_6 GOTO TESTA_FIO2 PK6 BTFSS F7E GOTO PK7 CALL ENVIA_7 GOTO TESTA_FIO2 PK7 BTFSS F8E GOTO PK8 CALL ENVIA_8 GOTO TESTA_FIO2 PK8 BTFSS F9E GOTO PK9 CALL ENVIA_9 GOTO TESTA_FIO2 PK9 BTFSS F10E GOTO PK10 CALL ENVIA_A GOTO TESTA_FIO2 PK10 BTFSS F11E GOTO PK11 CALL ENVIA_B GOTO TESTA_FIO2 PK11 BTFSS F12E GOTO PK12 CALL ENVIA_C GOTO TESTA_FIO2 PK12 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO2 ;================================================================================== ; TESTA FIO 2 ;================================================================================== TESTA_FIO2 MOVLW 0X80+1+4 CALL EC MOVLW '2' CALL ED MOVLW 0XC0+1+4 CALL EC BANK1 BSF F1T ;VIA 1 (ENTRADA) BCF F2T ;VIA 2 (SAIDA '1') BANK0 BSF F2S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK12Y CALL ENVIA_1 GOTO TESTA_FIO3 PK12Y BTFSS F2E GOTO PK22 CALL ENVIA_2 GOTO TESTA_FIO3 PK22 BTFSS F3E GOTO PK32 CALL ENVIA_3 GOTO TESTA_FIO3 PK32 BTFSS F4E GOTO PK42 CALL ENVIA_4 GOTO TESTA_FIO3 PK42 BTFSS F5E GOTO PK52 CALL ENVIA_5 GOTO TESTA_FIO3 PK52 BTFSS F6E GOTO PK62 CALL ENVIA_6 GOTO TESTA_FIO3 PK62 BTFSS F7E GOTO PK72 CALL ENVIA_7 GOTO TESTA_FIO3 PK72 BTFSS F8E GOTO PK82 CALL ENVIA_8 GOTO TESTA_FIO3 PK82 BTFSS F9E GOTO PK92 CALL ENVIA_9 GOTO TESTA_FIO3 PK92 BTFSS F10E GOTO PK102 CALL ENVIA_A GOTO TESTA_FIO3 PK102 BTFSS F11E GOTO PK112 CALL ENVIA_B GOTO TESTA_FIO3 PK112 BTFSS F12E GOTO PK122 CALL ENVIA_C GOTO TESTA_FIO3 PK122 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO3 ;================================================================================== ; TESTA FIO 3 ;================================================================================== TESTA_FIO3 MOVLW 0X80+2+4 CALL EC MOVLW '3' CALL ED MOVLW 0XC0+2+4 CALL EC BANK1 BSF F2T ;VIA 1 (ENTRADA) BCF F3T ;VIA 2 (SAIDA '1') BANK0 BSF F3S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK13 CALL ENVIA_1 GOTO TESTA_FIO4 PK13 BTFSS F2E GOTO PK23 CALL ENVIA_2 GOTO TESTA_FIO4 PK23 BTFSS F3E GOTO PK33 CALL ENVIA_3 GOTO TESTA_FIO4 PK33 BTFSS F4E GOTO PK43 CALL ENVIA_4 GOTO TESTA_FIO4 PK43 BTFSS F5E GOTO PK53 CALL ENVIA_5 GOTO TESTA_FIO4 PK53 BTFSS F6E GOTO PK63 CALL ENVIA_6 GOTO TESTA_FIO4 PK63 BTFSS F7E GOTO PK73 CALL ENVIA_7 GOTO TESTA_FIO4 PK73 BTFSS F8E GOTO PK83 CALL ENVIA_8 GOTO TESTA_FIO4 PK83 BTFSS F9E GOTO PK93 CALL ENVIA_9 GOTO TESTA_FIO4 PK93 BTFSS F10E GOTO PK103 CALL ENVIA_A GOTO TESTA_FIO4 PK103 BTFSS F11E GOTO PK113 CALL ENVIA_B GOTO TESTA_FIO4 PK113 BTFSS F12E GOTO PK123 CALL ENVIA_C GOTO TESTA_FIO4 PK123 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO4 ;================================================================================== ; TESTA FIO 4 ;================================================================================== TESTA_FIO4 MOVLW 0X80+3+4 CALL EC MOVLW '4' CALL ED MOVLW 0XC0+3+4 CALL EC BANK1 BSF F3T ;VIA 1 (ENTRADA) BCF F4T ;VIA 2 (SAIDA '1') BANK0 BSF F4S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK14 CALL ENVIA_1 GOTO TESTA_FIO5 PK14 BTFSS F2E GOTO PK24 CALL ENVIA_2 GOTO TESTA_FIO5 PK24 BTFSS F3E GOTO PK34 CALL ENVIA_3 GOTO TESTA_FIO5 PK34 BTFSS F4E GOTO PK44 CALL ENVIA_4 GOTO TESTA_FIO5 PK44 BTFSS F5E GOTO PK54 CALL ENVIA_5 GOTO TESTA_FIO5 PK54 BTFSS F6E GOTO PK64 CALL ENVIA_6 GOTO TESTA_FIO5 PK64 BTFSS F7E GOTO PK74 CALL ENVIA_7 GOTO TESTA_FIO5 PK74 BTFSS F8E GOTO PK84 CALL ENVIA_8 GOTO TESTA_FIO5 PK84 BTFSS F9E GOTO PK94 CALL ENVIA_9 GOTO TESTA_FIO5 PK94 BTFSS F10E GOTO PK104 CALL ENVIA_A GOTO TESTA_FIO5 PK104 BTFSS F11E GOTO PK114 CALL ENVIA_B GOTO TESTA_FIO5 PK114 BTFSS F12E GOTO PK124 CALL ENVIA_C GOTO TESTA_FIO5 PK124 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO5 ;================================================================================== ; TESTA FIO 5 ;================================================================================== TESTA_FIO5 MOVLW 0X80+4+4 CALL EC MOVLW '5' CALL ED MOVLW 0XC0+4+4 CALL EC BANK1 BSF F4T ;VIA 1 (ENTRADA) BCF F5T ;VIA 2 (SAIDA '1') BANK0 BSF F5S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK15 CALL ENVIA_1 GOTO TESTA_FIO6 PK15 BTFSS F2E GOTO PK25 CALL ENVIA_2 GOTO TESTA_FIO6 PK25 BTFSS F3E GOTO PK35 CALL ENVIA_3 GOTO TESTA_FIO6 PK35 BTFSS F4E GOTO PK45 CALL ENVIA_4 GOTO TESTA_FIO6 PK45 BTFSS F5E GOTO PK55 CALL ENVIA_5 GOTO TESTA_FIO6 PK55 BTFSS F6E GOTO PK65 CALL ENVIA_6 GOTO TESTA_FIO6 PK65 BTFSS F7E GOTO PK75 CALL ENVIA_7 GOTO TESTA_FIO6 PK75 BTFSS F8E GOTO PK85 CALL ENVIA_8 GOTO TESTA_FIO6 PK85 BTFSS F9E GOTO PK95 CALL ENVIA_9 GOTO TESTA_FIO6 PK95 BTFSS F10E GOTO PK105 CALL ENVIA_A GOTO TESTA_FIO6 PK105 BTFSS F11E GOTO PK115 CALL ENVIA_B GOTO TESTA_FIO6 PK115 BTFSS F12E GOTO PK125 CALL ENVIA_C GOTO TESTA_FIO6 PK125 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO6 ;================================================================================== ; TESTA FIO 6 ;================================================================================== TESTA_FIO6 MOVLW 0X80+5+4 CALL EC MOVLW '6' CALL ED MOVLW 0XC0+5+4 CALL EC BANK1 BSF F5T ;VIA 1 (ENTRADA) BCF F6T ;VIA 2 (SAIDA '1') BANK0 BSF F6S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK16 CALL ENVIA_1 GOTO TESTA_FIO7 PK16 BTFSS F2E GOTO PK26 CALL ENVIA_2 GOTO TESTA_FIO7 PK26 BTFSS F3E GOTO PK36 CALL ENVIA_3 GOTO TESTA_FIO7 PK36 BTFSS F4E GOTO PK46 CALL ENVIA_4 GOTO TESTA_FIO7 PK46 BTFSS F5E GOTO PK56 CALL ENVIA_5 GOTO TESTA_FIO7 PK56 BTFSS F6E GOTO PK66 CALL ENVIA_6 GOTO TESTA_FIO7 PK66 BTFSS F7E GOTO PK76 CALL ENVIA_7 GOTO TESTA_FIO7 PK76 BTFSS F8E GOTO PK86 CALL ENVIA_8 GOTO TESTA_FIO7 PK86 BTFSS F9E GOTO PK96 CALL ENVIA_9 GOTO TESTA_FIO7 PK96 BTFSS F10E GOTO PK106 CALL ENVIA_A GOTO TESTA_FIO7 PK106 BTFSS F11E GOTO PK116 CALL ENVIA_B GOTO TESTA_FIO7 PK116 BTFSS F12E GOTO PK126 CALL ENVIA_C GOTO TESTA_FIO7 PK126 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO7 ;================================================================================== ; TESTA FIO 7 ;================================================================================== TESTA_FIO7 MOVLW 0X80+6+4 CALL EC MOVLW '7' CALL ED MOVLW 0XC0+6+4 CALL EC BANK1 BSF F6T ;VIA 1 (ENTRADA) BCF F7T ;VIA 2 (SAIDA '1') BANK0 BSF F7S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK17 CALL ENVIA_1 GOTO TESTA_FIO8 PK17 BTFSS F2E GOTO PK27 CALL ENVIA_2 GOTO TESTA_FIO8 PK27 BTFSS F3E GOTO PK37 CALL ENVIA_3 GOTO TESTA_FIO8 PK37 BTFSS F4E GOTO PK47 CALL ENVIA_4 GOTO TESTA_FIO8 PK47 BTFSS F5E GOTO PK57 CALL ENVIA_5 GOTO TESTA_FIO8 PK57 BTFSS F6E GOTO PK67 CALL ENVIA_6 GOTO TESTA_FIO8 PK67 BTFSS F7E GOTO PK77 CALL ENVIA_7 GOTO TESTA_FIO8 PK77 BTFSS F8E GOTO PK87 CALL ENVIA_8 GOTO TESTA_FIO8 PK87 BTFSS F9E GOTO PK97 CALL ENVIA_9 GOTO TESTA_FIO8 PK97 BTFSS F10E GOTO PK107 CALL ENVIA_A GOTO TESTA_FIO8 PK107 BTFSS F11E GOTO PK117 CALL ENVIA_B GOTO TESTA_FIO8 PK117 BTFSS F12E GOTO PK127 CALL ENVIA_C GOTO TESTA_FIO8 PK127 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO8 ;================================================================================== ; TESTA FIO 8 ;================================================================================== TESTA_FIO8 MOVLW 0X80+7+4 CALL EC MOVLW '8' CALL ED MOVLW 0XC0+7+4 CALL EC BANK1 BSF F7T ;VIA 1 (ENTRADA) BCF F8T ;VIA 2 (SAIDA '1') BANK0 BSF F8S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK18 CALL ENVIA_1 GOTO TESTA_FIO9 PK18 BTFSS F2E GOTO PK28 CALL ENVIA_2 GOTO TESTA_FIO9 PK28 BTFSS F3E GOTO PK38 CALL ENVIA_3 GOTO TESTA_FIO9 PK38 BTFSS F4E GOTO PK48 CALL ENVIA_4 GOTO TESTA_FIO9 PK48 BTFSS F5E GOTO PK58 CALL ENVIA_5 GOTO TESTA_FIO9 PK58 BTFSS F6E GOTO PK68 CALL ENVIA_6 GOTO TESTA_FIO9 PK68 BTFSS F7E GOTO PK78 CALL ENVIA_7 GOTO TESTA_FIO9 PK78 BTFSS F8E GOTO PK88 CALL ENVIA_8 GOTO TESTA_FIO9 PK88 BTFSS F9E GOTO PK98 CALL ENVIA_9 GOTO TESTA_FIO9 PK98 BTFSS F10E GOTO PK108 CALL ENVIA_A GOTO TESTA_FIO9 PK108 BTFSS F11E GOTO PK118 CALL ENVIA_B GOTO TESTA_FIO9 PK118 BTFSS F12E GOTO PK128 CALL ENVIA_C GOTO TESTA_FIO9 PK128 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO9 ;================================================================================== ; TESTA FIO 9 ;================================================================================== TESTA_FIO9 MOVLW 0X80+8+4 CALL EC MOVLW '9' CALL ED MOVLW 0XC0+8+4 CALL EC BANK1 BSF F8T ;VIA 1 (ENTRADA) BCF F9T ;VIA 2 (SAIDA '1') BANK0 BSF F9S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK19 CALL ENVIA_1 GOTO TESTA_FIO10 PK19 BTFSS F2E GOTO PK29 CALL ENVIA_2 GOTO TESTA_FIO10 PK29 BTFSS F3E GOTO PK39 CALL ENVIA_3 GOTO TESTA_FIO10 PK39 BTFSS F4E GOTO PK49 CALL ENVIA_4 GOTO TESTA_FIO10 PK49 BTFSS F5E GOTO PK59 CALL ENVIA_5 GOTO TESTA_FIO10 PK59 BTFSS F6E GOTO PK69 CALL ENVIA_6 GOTO TESTA_FIO10 PK69 BTFSS F7E GOTO PK79 CALL ENVIA_7 GOTO TESTA_FIO10 PK79 BTFSS F8E GOTO PK89 CALL ENVIA_8 GOTO TESTA_FIO10 PK89 BTFSS F9E GOTO PK99 CALL ENVIA_9 GOTO TESTA_FIO10 PK99 BTFSS F10E GOTO PK109 CALL ENVIA_A GOTO TESTA_FIO10 PK109 BTFSS F11E GOTO PK119 CALL ENVIA_B GOTO TESTA_FIO10 PK119 BTFSS F12E GOTO PK129 CALL ENVIA_C GOTO TESTA_FIO10 PK129 CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO10 ;================================================================================== ; TESTA FIO 10 ;================================================================================== TESTA_FIO10 MOVLW 0X80+9+4 CALL EC MOVLW 'A' CALL ED MOVLW 0XC0+9+4 CALL EC BANK1 BSF F9T ;VIA 1 (ENTRADA) BCF F10T ;VIA 2 (SAIDA '1') BANK0 BSF F10S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK1A CALL ENVIA_1 GOTO TESTA_FIO11 PK1A BTFSS F2E GOTO PK2A CALL ENVIA_2 GOTO TESTA_FIO11 PK2A BTFSS F3E GOTO PK3A CALL ENVIA_3 GOTO TESTA_FIO11 PK3A BTFSS F4E GOTO PK4A CALL ENVIA_4 GOTO TESTA_FIO11 PK4A BTFSS F5E GOTO PK5A CALL ENVIA_5 GOTO TESTA_FIO11 PK5A BTFSS F6E GOTO PK6A CALL ENVIA_6 GOTO TESTA_FIO11 PK6A BTFSS F7E GOTO PK7A CALL ENVIA_7 GOTO TESTA_FIO11 PK7A BTFSS F8E GOTO PK8A CALL ENVIA_8 GOTO TESTA_FIO11 PK8A BTFSS F9E GOTO PK9A CALL ENVIA_9 GOTO TESTA_FIO11 PK9A BTFSS F10E GOTO PK10A CALL ENVIA_A GOTO TESTA_FIO11 PK10A BTFSS F11E GOTO PK11A CALL ENVIA_B GOTO TESTA_FIO11 PK11A BTFSS F12E GOTO PK12A CALL ENVIA_C GOTO TESTA_FIO11 PK12A CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO11 ;================================================================================== ; TESTA FIO 11 ;================================================================================== TESTA_FIO11 MOVLW 0X80+.10+4 CALL EC MOVLW 'B' CALL ED MOVLW 0XC0+.10+4 CALL EC BANK1 BSF F10T ;VIA 1 (ENTRADA) BCF F11T ;VIA 2 (SAIDA '1') BANK0 BSF F11S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK1B CALL ENVIA_1 GOTO TESTA_FIO12 PK1B BTFSS F2E GOTO PK2B CALL ENVIA_2 GOTO TESTA_FIO12 PK2B BTFSS F3E GOTO PK3B CALL ENVIA_3 GOTO TESTA_FIO12 PK3B BTFSS F4E GOTO PK4B CALL ENVIA_4 GOTO TESTA_FIO12 PK4B BTFSS F5E GOTO PK5B CALL ENVIA_5 GOTO TESTA_FIO12 PK5B BTFSS F6E GOTO PK6B CALL ENVIA_6 GOTO TESTA_FIO12 PK6B BTFSS F7E GOTO PK7B CALL ENVIA_7 GOTO TESTA_FIO12 PK7B BTFSS F8E GOTO PK8B CALL ENVIA_8 GOTO TESTA_FIO12 PK8B BTFSS F9E GOTO PK9B CALL ENVIA_9 GOTO TESTA_FIO12 PK9B BTFSS F10E GOTO PK10B CALL ENVIA_A GOTO TESTA_FIO12 PK10B BTFSS F11E GOTO PK11B CALL ENVIA_B GOTO TESTA_FIO12 PK11B BTFSS F12E GOTO PK12B CALL ENVIA_C GOTO TESTA_FIO12 PK12B CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO12 ;================================================================================== ; TESTA FIO 12 ;================================================================================== TESTA_FIO12 MOVLW 0X80+.11+4 CALL EC MOVLW 'C' CALL ED MOVLW 0XC0+.11+4 CALL EC BANK1 BSF F11T ;VIA 1 (ENTRADA) BCF F12T ;VIA 2 (SAIDA '1') BANK0 BSF F12S MOVLW .1 CALL DELAY ;ESTABILIZA BTFSS F1E GOTO PK1C CALL ENVIA_1 GOTO TESTA_FIO13 PK1C BTFSS F2E GOTO PK2C CALL ENVIA_2 GOTO TESTA_FIO13 PK2C BTFSS F3E GOTO PK3C CALL ENVIA_3 GOTO TESTA_FIO13 PK3C BTFSS F4E GOTO PK4C CALL ENVIA_4 GOTO TESTA_FIO13 PK4C BTFSS F5E GOTO PK5C CALL ENVIA_5 GOTO TESTA_FIO13 PK5C BTFSS F6E GOTO PK6C CALL ENVIA_6 GOTO TESTA_FIO13 PK6C BTFSS F7E GOTO PK7C CALL ENVIA_7 GOTO TESTA_FIO13 PK7C BTFSS F8E GOTO PK8C CALL ENVIA_8 GOTO TESTA_FIO13 PK8C BTFSS F9E GOTO PK9C CALL ENVIA_9 GOTO TESTA_FIO13 PK9C BTFSS F10E GOTO PK10C CALL ENVIA_A GOTO TESTA_FIO13 PK10C BTFSS F11E GOTO PK11C CALL ENVIA_B GOTO TESTA_FIO13 PK11C BTFSS F12E GOTO PK12C CALL ENVIA_C GOTO TESTA_FIO13 PK12C CALL ENVIA_X ;INTERROMPIDO GOTO TESTA_FIO13 ;================================================================================= ; ROTINA DE TESTE DE ERROS (CURTO E INTERRUPÇÃO DE FIOS) ;================================================================================= TESTA_FIO13 BTFSC FLAG_G1 ; GARANTE A CÓPIA INICIAL PARA POSTERIOR COMPARAÇÃO GOTO TEST_ER GOTO COPIA_REG TEST_ER BTFSC FLAG_G2 GOTO S_DEL CALL BIP_ERRO ;EMITE BIP CORRESPONDENTE A 'ERRO' BSF FLAG_G2 ;TRAVA PARA UM ÚNICO ACIONAMENTO ;================================================================================= ; ROTINA DE SAIDA COM TESTE SE HOUVE MUDANÇAS NOS PINOS ;================================================================================= S_DEL MOVLW .100 CALL DELAY CALL MUDANÇAS GOTO MAIN ;================================================================================= ; ROTINA DE ROTINA DE COMPARAÇÃO - IDENTIFICA ALTERAÇÃO NO ESTADO DOS PINOS ;================================================================================= MUDANÇAS MOVFW CNTX1 XORWF CNTY1,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX2 XORWF CNTY2,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX3 XORWF CNTY3,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX4 XORWF CNTY4,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX5 XORWF CNTY5,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX6 XORWF CNTY6,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX7 XORWF CNTY7,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX8 XORWF CNTY8,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTX9 XORWF CNTY9,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTXA XORWF CNTYA,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTXB XORWF CNTYB,W BTFSS STATUS,Z GOTO HOUVE_MUD MOVFW CNTXC XORWF CNTYC,W BTFSS STATUS,Z GOTO HOUVE_MUD RETURN HOUVE_MUD BCF FLAG_G1 BCF FLAG_G2 RETURN ;================================================================================= ; COPIA REGISTRADORES PARA FINS DE COMPARAÇÃO DE MUDANÇA DE ESTADO ;================================================================================= COPIA_REG MOVFW CNTX1 MOVWF CNTY1 MOVFW CNTX2 MOVWF CNTY2 MOVFW CNTX3 MOVWF CNTY3 MOVFW CNTX4 MOVWF CNTY4 MOVFW CNTX5 MOVWF CNTY5 MOVFW CNTX6 MOVWF CNTY6 MOVFW CNTX7 MOVWF CNTY7 MOVFW CNTX8 MOVWF CNTY8 MOVFW CNTX9 MOVWF CNTY9 MOVFW CNTXA MOVWF CNTYA MOVFW CNTXB MOVWF CNTYB MOVFW CNTXC MOVWF CNTYC BSF FLAG_G1 BCF FLAG_G2 GOTO S_DEL ;================================================================================= ; ROTINA DE ENVIO PARA O LCD ;================================================================================= ENVIA_X INCF CNTXX,F MOVLW 'X' GOTO SAI_F1 ENVIA_C INCF CNTXC,F MOVLW 'C' GOTO SAI_F1 ENVIA_B INCF CNTXB,F MOVLW 'B' GOTO SAI_F1 ENVIA_A INCF CNTXA,F MOVLW 'A' GOTO SAI_F1 ENVIA_9 INCF CNTX9,F MOVLW '9' GOTO SAI_F1 ENVIA_8 INCF CNTX8,F MOVLW '8' GOTO SAI_F1 ENVIA_7 INCF CNTX7,F MOVLW '7' GOTO SAI_F1 ENVIA_6 INCF CNTX6,F MOVLW '6' GOTO SAI_F1 ENVIA_5 INCF CNTX5,F MOVLW '5' GOTO SAI_F1 ENVIA_4 INCF CNTX4,F MOVLW '4' GOTO SAI_F1 ENVIA_3 INCF CNTX3,F MOVLW '3' GOTO SAI_F1 ENVIA_2 INCF CNTX2,F MOVLW '2' GOTO SAI_F1 ENVIA_1 INCF CNTX1,F MOVLW '1' SAI_F1 CALL ED RETURN ;================================================================================= ; ROTINAS DE DELAY ;================================================================================= DELAYW MOVWF TEMP VJ1 CALL DELAY1 DECFSZ TEMP,F GOTO VJ1 DELAY1 LcdDelay1 MOVLW .255 ;DELAY PARA VISUALIZAÇAO DELAY LcdDelay MOVWF LC1 Lp CLRWDT DECFSZ LC,F GOTO Lp DECFSZ LC1,F GOTO Lp RETURN ; ;================================================================================= ; ROTINAS DE CONTROLE DO LCD ;================================================================================= LcdInit movlw .60 ;Wait 60 ms call LcdDelay bcf LCD_RS ;Set LCD command mode bsf LCD_DB4 ;0011->48 bsf LCD_DB5 bcf LCD_DB6 bcf LCD_DB7 call LcdPulse_E ;sequência de reset call LcdPulse_E call LcdPulse_E bcf LCD_DB4 bcf LCD_DB6 bcf LCD_DB7 bsf LCD_DB5 call LcdPulse_E movlw 28H ;Set 4 bit data bus length call EC movlw 06H ;Entry mode set, increment, no shift call EC ; movlw 0DH ;Display ON, Cursor ON, Blink ON ; movlw 0FH ;Display ON, Cursor ALTERADO ON, Blink ON ; movlw 0EH ;Display ON, Cursor ON, Blink OFF movlw 0CH ;Display ON, Cursor OFF, Blink OFF call EC LcdClear CLEAR_LCD movlw 01H ;clear display call EC movlw .5 ;Wait 2 ms call LcdDelay return BIN_ASC_ED ;ROTINA DE BINARIO PARA HEX 0-F COM ENVIO PARA LCD ANDLW 0X0F ;LIMITA 0-F ADDLW 0XF6 ;SOMA 0XF6 BTFSC STATUS,C ;TESTA CARRY ADDLW 0X07 ;C=1 ,ENTÃO SOMA + 7 ADDLW 0X3A ;SOMA 0X3A ;ENVIA PARA O LCD E RETORNA PARA O PONTO DE CHAMADA ED LcdSendData bsf LCD_RS GOTO XENV LINE1 MOVLW 0X80 GOTO EC LINE2 MOVLW 0XC0 EC LcdSendCommand bcf LCD_RS XENV LcdSendByte movwf TR ;Send a byte to LCD by 4 bit data bus bcf LCD_DB4 bcf LCD_DB5 bcf LCD_DB6 bcf LCD_DB7 btfsc TR,4 bsf LCD_DB4 btfsc TR,5 bsf LCD_DB5 btfsc TR,6 bsf LCD_DB6 btfsc TR,7 bsf LCD_DB7 call LcdPulse_E bcf LCD_DB4 bcf LCD_DB5 bcf LCD_DB6 bcf LCD_DB7 btfsc TR,0 bsf LCD_DB4 btfsc TR,1 bsf LCD_DB5 btfsc TR,2 bsf LCD_DB6 btfsc TR,3 bsf LCD_DB7 CALL LcdPulse_E RETURN LcdPulse_E bsf LCD_E ;Enables LCD movlw .248 addlw .1 btfss STATUS,Z goto $-2 bcf LCD_E ;Disabled LCD return ;================================================================================= ; APAGAR LINHA 2 ;================================================================================= ;APAGAR LINHA 2 CLEAR_L2 MOVLW 0XC0 CALL EC MOVLW MSG4 ;APAGAR LINHA 2 CALL ENV_LCD MOVLW 0XC0 CALL EC RETURN ;================================================================================= ; MUDANÇA DE LINHA NO LCD ;================================================================================= ;TROCA DE LINHAS DO LCD LINHA1 LINHA_1 MOVLW 0X80 GOTO X9 LINHA_2 LINHA2 MOVLW 0XC0 X9 CALL EC RETURN ;================================================================================= ; APAGA CONTADORES DE ERRO ;================================================================================= LIMPA_ERRO MOVLW .13 MOVWF TEMP MOVLW CNTX1 MOVWF FSR ;APONTA INICIO DO APAGAMENTO LOOPX1 CLRF INDF INCF FSR,F DECFSZ TEMP,F GOTO LOOPX1 RETURN ;================================================================================= ; GERA BIPS CORRESPONDENTES AOS ERROS ENCONTRADOS ;================================================================================= BIP_ERRO MOVFW CNTXX BTFSC STATUS,Z GOTO TESTA_CURTO GOTO SINAL_ERRO TESTA_CURTO MOVLW .12 +1 MOVWF TEMP MOVLW CNTX1 - 1 MOVWF FSR ;APONTA INICIO DO APAGAMENTO LOOPX2 INCF FSR,F DECFSZ TEMP,F GOTO SEG1 GOTO SINAL_OK RETURN SEG1 MOVFW INDF XORLW .1 BTFSC STATUS,Z GOTO LOOPX2 SINAL_ERRO MOVLW .10 MOVWF TEMP LOOPER1 CALL BIP MOVLW .50 CALL DELAY DECFSZ TEMP,F GOTO LOOPER1 SINAL_OK CALL BIP MOVLW .50 CALL DELAY RETURN ;================================================================================= ; GERA BIPS ;================================================================================= BIP MOVLW .50 MOVWF AUX REP1 BSF SOM MOVLW .10 ADDLW .1 BTFSS STATUS,Z GOTO $-2 BCF SOM MOVLW .10 ADDLW .1 BTFSS STATUS,Z GOTO $-2 DECFSZ AUX,F GOTO REP1 RETURN ;================================================================================================== ; end