;--------------------------------------------------------------------------------------------- ; ; Sequenciador de comutacao de LNA, PA, Antenas e TXRX para estacao de comunicacoes ; ; Antonio Sergio Sena, www.senaeng.com, 12/07/2008, alterado a 08/08/2008 ; ; ; RB4: transceiver ; RB5: PA ; RB6: LNA ; RB7: Antenna relay ; ; RB1: PTT ; RB2: NPTT (inverso da PTT) ; ;--------------------------------------------------------------------------------------------- list p=16f628A ;configura o tipo de CPU usado radix hex ;pre-definicao do tipo de valores numericos usados include "p16f628a.inc" ;pre-definicoes do PIC errorlevel 2, -302 ;inibicao de apresentacao de mensagens __config _CP_ON & _DATA_CP_OFF & _LVP_OFF & _BOREN_ON & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF #define PTT PORTB, 1 #define NPTT PORTA, 2 #define TXRX PORTB, 4 #define PA PORTB, 5 #define LNA PORTB, 6 #define ANT PORTB, 7 CBLOCK 0x20 ;reserva de memoria RAM, a partir deste endereco temp, temp2, temp3, temp4, flags ENDC ;--------------------------------------------------------------------------------- INICIO_DO_PROGRAMA org 0x0000 ;vector de RESET goto START org 0x0004 ;vector de INTERRUPCAO nop retfie ;--------------------------- START: clrf PORTA ;desliga buffers das portas clrf PORTB movlw 0x07 ;comparadores desligados, e pinos em modo digital movwf CMCON bsf STATUS, RP0 ;Banco 1 ;consultar esquematico, para saber atribuicao de pinos movlw b'00000100' movwf TRISA movlw b'00000010' movwf TRISB bcf OPTION_REG, NOT_RBPU ;activa pull-ups da PORTB bcf STATUS, RP0 ;Banco 0 ; clrf PORTA ;desliga buffers das portas movlw b'11000000' ;estado inicial no POWER-ON movwf PORTB ;--------------------------- ESPERA_PTT_LIGAR btfss NPTT ;espera sinal de PTT INVERTIDA para ligar goto _PTT_LIGAR call atraso_10m btfss NPTT ;confirma sinal de PTT INVERTIDA para ligar goto $-4 bsf flags, 0 ;diz que foi activado pela NPTT call atraso_10m goto LOOP_LIGAR _PTT_LIGAR btfsc PTT ;espera sinal de PTT para ligar goto ESPERA_PTT_LIGAR call atraso_10m btfsc PTT ;confirma sinal de PTT para ligar goto ESPERA_PTT_LIGAR LOOP_LIGAR bcf ANT ;desliga Antenas call atraso_250m ;espera bcf LNA ;desliga LNA call atraso_250m ;espera bsf PA ;liga PA call atraso_250m ;espera bsf TXRX ;desliga Transceptor ; call atraso_250m ;espera ESPERA_PTT_DESLIGAR btfss flags, 0 ;foi activado pela NPTT ? goto _PTT_DESLIGAR btfsc NPTT ;espera sinal de PTT INVERTIDA para ligar goto $-1 call atraso_10m btfsc NPTT ;confirma sinal de PTT INVERTIDA para ligar goto $-4 goto LOOP_DESLIGAR _PTT_DESLIGAR btfss PTT ;espera sinal de PTT para desligar goto $-1 call atraso_10m btfss PTT ;confirma sinal de PTT para desligar goto $-4 LOOP_DESLIGAR bcf TXRX ;liga Transceptor call atraso_250m ;espera bcf PA ;desliga PA call atraso_250m ;espera bsf LNA ;liga LNA call atraso_250m ;espera bsf ANT ;liga Antenas ; call atraso_250m ;espera bcf flags, 0 ;desliga flag q diz q foi activado pela NPTT call atraso_10m goto ESPERA_PTT_LIGAR ;volta ao inicio ;--------------------------- atraso_350m movlw 0x23 movwf temp4 call atraso_10m decfsz temp4, f goto $-2 return ;--------------------------- atraso_250m movlw 0x19 movwf temp3 call atraso_10m decfsz temp3, f goto $-2 return ;--------------------------- atraso_10m movlw 0x14 movwf temp2 call atraso_500u ; decfsz temp2, f ;decrementa TEMP em uma unidade, coloca resultado em TEMP ;e salta a instrucao seguinte, se o resultado for zero goto $-2 ; salta para duas instrucoes anteriores return ;sai fora da rotina de ATRASO ;--------------------------- atraso_500u movlw 0xA4 movwf temp decfsz temp, f ;decrementa TEMP em uma unidade, coloca resultado em TEMP ;e salta a instrucao seguinte, se o resultado for zero goto $-1 ;salta para uma instrucao anterior return ;sai fora da rotina de ATRASO ;--------------------------------------------------------------------------------- end ;fim do programa