;************************************************************************************************************************************************* ; ; PROGRAMA DE PRUEBA DE PLUMA PARA EVOLUPIC Bootloader 16F88 ; Por: Moisés Rafael Gutiérrez Damián para Punto Flotante, S.A. ; SI SW1=0FF,SW2=0FF,SW3=0FF,SW4=OFF MOTOR QUEDA LIBRE, PLUMA SE PUEDE MANIPULAR MANUALMENTE ; SI SW1=ON, SW2=0FF,SW3=0FF,SW4=OFF PLUMA SE LEVANTA OPRIMIENDO EL PUSH BUTTON ROJO Y BAJA AUTOMATICAMENTE ; SI SW1=0N, SW2=ON, SW3=0FF,SW4=OFF PLUMA SE LEVANTA OPRIMIENDO EL PUSH Y BAJA OPRIMIENDO DE NUEVO EL PUSH ; ; ;************************************************************************************************************************************************* ;CABECERA********************************************************************************************************************************** LIST P=16F88 ; MICROCONTROLADOR A USAR INCLUDE ; LLAMADA A CABECERA ;CONSTANTES, MACROS Y DECLARACIONES****************************************************************************************************************** #DEFINE SPEN0 BCF RCSTA,SPEN #DEFINE SPEN1 BSF RCSTA,SPEN #DEFINE PASS PORTB,7 #DEFINE LED PORTB,3 BAJAPLUMA MACRO BSF PORTB,1 BCF PORTB,0 ENDM SUBEPLUMA MACRO BSF PORTB,0 BCF PORTB,1 ENDM FRENA MACRO BSF PORTB,0 BSF PORTB,1 ENDM APAGA MACRO BCF PORTB,0 BCF PORTB,1 ENDM CBLOCK 0x20 R_ContA ; Contadores para los retardos. R_ContB FLAGS ; Para tener registro de eventos. ENDC ORG 0 ; INICIO DEL PROGRAMA EN LA PRIMERA LOCACIÓN DE MEMORIA CLRF PCLATH ; SOLICITADO POR EL BOOTLOADER. GOTO INICIO ; DIRECCIONAMOS AL "INICIO" DEL BLOQUE DE INSTRUCCIONES ORG 3 ;RUTINA DE RETARDO***************************************************************************************************************************** Retardo_ms movwf R_ContB ; Aporta 1 ciclo máquina. R1ms_BucleExterno movlw d'249' ; Aporta Mx1 ciclos máquina. Este es el valor de "K". movwf R_ContA ; Aporta Mx1 ciclos máquina. R1ms_BucleInterno nop ; Aporta KxMx1 ciclos máquina. decfsz R_ContA,F ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar). goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos máquina. decfsz R_ContB,F ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos máquina. return ; El salto del retorno aporta 2 ciclos máquina. ;PROGRAMA PRINCIPAL********************************************************************************************************************************* INICIO BANKSEL TRISA ; CONFIGURAMOS LOS PUERTOS MOVLW B'11111110' ; PUERTO A MOVWF TRISA MOVLW 0xF0 ; PUERTO B: RB0-RB3 => SALIDAS, RB4-RB7 => ENTRADAS MOVWF TRISB ; BCF OPTION_REG,NOT_RBPU ; HABILITAMOS LAS RESISTENCIAS DE PULL-UP CLRF ANSEL ; DESHABILITAMOS EL CAD. MOVLW .7 MOVWF CMCON CLRF CVRCON ; DESHABILITAMOS LOS COMPARADORES. BANKSEL PORTA CLRF PORTA CLRF PORTB BANKSEL TXSTA MOVLW .25 ; 9600 bps MOVWF SPBRG ; MOVLW 0x04 ; COMUNICACIÓN ASINCRONA, TX-RX A ALTA VELOCIDAD, DESHABILITAMOS LA TRANSMISIÓN. MOVWF TXSTA BANKSEL RCSTA MOVLW 0x90 ; HABILITAMOS LA RECEPCIÓN CONTÍNUA. MOVWF RCSTA SPEN0 ; DESHABILITAMOS EL PUERTO SERIE ;******************************************************************************************************************************************** GUARDA BTFSC PORTA,1 GOTO GUARDA ALTO APAGA BTFSC PASS GOTO ALTO PASE BSF LED SUBEPLUMA MOVLW .200 CALL Retardo_ms FRENA BTFSS PORTA,2 GOTO PAUSA MOVLW .255 CALL Retardo_ms CALL Retardo_ms CALL Retardo_ms CALL Retardo_ms CONTINUA BAJAPLUMA MOVLW .150 CALL Retardo_ms BCF LED GOTO ALTO PAUSA BTFSC PASS ; ESPERAMOS EL SIGUIENTE CLICK GOTO PAUSA GOTO CONTINUA ; ESTÁ EN AUTOMÁTICO ;************************************************************************************************************************************************* END