Pic16F877A-Velocidad-Vehicular
B
Programa del PIC 16F877A
;***************************************************************************************
;*
*
;*
"CONTROL AUTOMÁTICO DE VELOCIDAD VEHICULAR".
*
;*
*
;***************************************************************************************
;*
*
;* EL PRESENTE PROGRAMA TIENE COMO FINALIDAD CONTROLAR LA VELOCIDAD DEL *
;* VEHÍCULO, DEPENDIENDODE LA SEÑAL RECIBIDA DEL TRANSMISOR.
*
;*
*
;* ENTRE SUS FUNCIONES SE ENCUENTRAN:
*
;*
*
;*
1. REALIZAR LA CONVERSION A/D DE LA SEÑAL CAPTADA POR EL RECEPTOR.
*
;*
2. GENERAR SEÑALES PWM CON DISTINTO CICLO DE TRABAJO, DE ACUERDO CON *
;*
LA VELOCIDAD DESEADA PARA EL VEHÍCULO
*
;*
3. LA SEÑAL PWM GENERADA CONTROLARÁ LA FRECUENCIA Y CICLO DE TRABAJO *
;*
EL CIRCUITO REDUCTOR –ELEVADOR
*
;*
*
;***************************************************************************************
PROCESSOR 16f877A
include "p16f877A.inc"
list
p=16f877A
org
0X00
; DEFINICION DE VARIABLES.
CBLOCK
0X20
RETRASO
TIEMPO
DELAY
BANDERA
ENDC
82
Apéndice B. Programa del PIC 16F877A
; INICIALIZACIÓN DE LOS PUERTOS Y DE LA BANDERA.
INICIALIZACION
NOP
BCF
BCF
CLRF
CLRFBSF
MOVLW
MOVWF
MOVLW
MOVWF
STATUS, RP1
STATUS, RP0
PORTA
PORTC
STATUS, RP0
B'11111111'
TRISA
B'11110000'
TRISC
MOVLW
MOVWF
B'00001111'
ADCON1
BCF
MOVLW
MOVWF
STATUS, RP0
B'01000001'
ADCON0
MOVLW
MOVWF
B'00000000'
BANDERA
CALL
MOVLW
MOVWF
CONVERSION
B'11111111'
TIEMPO
; LLAMA A LA SUBRUTINA DE CONVERSION
MOVLW
MOVWF
DECFSZ
GOTOB'11111111'
RETRASO
TIEMPO, 1
ESPERA
; ENTRA EN UN CICLO DE ESPERA INTEGRADO
; POR WAIT, ESPERA Y CICLO; CON EL FIN DE
; ASEGURAR QUE EL PIC NO RECIBA DOS VECES
; LA MISMA SEÑAL DEL RECEPTOR.
GOTO
MAIN
; CAMBIA AL BANCO 0
; INICIALIZA EL PUERTO A
; INICIALIZA EL PUERTO C
; SELECCIONA EL BANCO 1
; CONFIGURA EL PUERTO A COMO ENTRADAS
; CONFIGURA EL PUERTO C COMO ENTRADAS
; YSALIDAS
; JUSTIFICA A LA IZQUIERDA, AN0 ANALÓGICA,
; AN COMO DIGITAL, RA3 COMO VREF+ Y
; RA2 COMO VREF; BANCO 0
; FOSC/8, RA0 CANAL DE ENTRADA ANALÓGICO,
; A/D ENCENDIDO
; INICIALIZACIÒN DE LA BANDERA
MAIN
WAIT
ESPERA
MOVLW
MOVWF
DECFSZ
GOTO
B'00001111'
DELAY
RETRASO, 1
CICLO
GOTO
WAIT
DECFSZ
DELAY, 1
CICLO
83
Apéndice B. Programa del PIC 16F877A
GOTOCICLO
GOTO
ESPERA
CONVERSION
NOP
NOP
BSF
ADCON0, GO
; ESPERA EL TIEMPO MÍNIMO DE ADQUISICIÓN
; EMPIEZA LA CONVERSIÓN A/D
BTFSC
GOTO
ADCON0, GO
CHECA_CONV
; ESPERA QUE SE COMPLETE LA CONVERSIÓN
BCF
MOVF
BSF
SUBLW
BTFSC
STATUS, RP0
ADRESH, W
STATUS, C
B'01110110'
STATUS, C
GOTO
CHECA
BTFSS
GOTO
GOTO
BANDERA, 0
CONTROL
BAND
; CHECA SIESTÁ EN EL AREA DE CONTROL
; SI ES 0, ESTÁ ENTRANDO Y VA A CONTROL
; SI ES 1, ESTÁ SALIENDO Y VA A BAND
BTFSC
GOTO
GOTO
BANDERA, 0
CONTROL
VELOCIDAD
; ESTA SUBRUTINA VERIFICA SI EL VEHÍCULO
; ESTÁ DENTRO O FUERA DEL ÁREA DE
; DE CONTROL.
; DE ESTAR DENTRO DEL AREA VA A CONTROL
; SI ESTA FUERA DEL AREA VA A VELOCIDAD
MOVLW
MOVWF
GOTO
B'00000000'
BANDERA
CHECA
; ESTASUBRUTINA INDICA QUE EL VEHÌCULO
; ESTÁ SALIENDO DEL ÁREA DE CONTROL, POR
; LO QUE HACE BANDERA = 0 PARA INDICARLO
STATUS, RP0
PORTC, 4
PORTC, 5
PWM1
PWM2
; BANCO 0
; VERIFICA SI ESTA EN PRIMERA VELOCIDAD
; VERIFICA SI ESTA EN SEGUNDA VELOCIDAD
; LLAMA A LA PRIMER VELOCIDAD
; LLAMA A LA SEGUNDA VELOCIDAD
B'00000001'
BANDERA
STATUS, RP0
; SE MODIFICA LA BANDERA PARA INDICAR
;QUE SE ESTÁ DENTRO DEL ÁREA DE CONTROL
; BANCO 0
CHECA_CONV
CHECA
; BANCO 0
; PONE EN W EL RESULTADO DE CONVERSIÓN
; HACE LA RESTA DE VALOR - W
; VERIFICA LA BANDERA DE CARRY PARA
; ASEGURAR QUE LA SEÑAL NO SEA RUIDO
BAND
VELOCIDAD
BCF
BTFSS
BTFSS
GOTO
GOTO
CONTROL
MOVLW
MOVWF
BCF
84
Apéndice B. Programa del PIC 16F877A
BTFSS
BTFSS
GOTO
GOTO
PORTC, 4...
Regístrate para leer el documento completo.