Programa del PIC 16F877A



Documentos relacionados
El Sistema de Control

Apéndice B Programa para calcular inclinación con PIC 16F877A

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic

D:\ACCESO\ACCESO.ASM. list p=16f877 include "p16f877.inc" ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro.

Tema: Utilización del módulo ADC en los microcontroladores PIC.

CCP. comparación para la captura y reset del TMR1. Pueden usarse CCPx en modo captura y CCPy en modo

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR

CODIGO EN ASSEMBLER ;************************************************************************

Tema. Módulo Captura Comparación Modulación n de Achura de Pulsos. C. F. G.S. D.P.E. Módulo de Proyectos 1

Tema 6: Microcontroladores

Instrucciones para programar el PIC16F877

Practica de PIC 16F84

1. ÍNDICE. Índice de contenido 2. INTRODUCCIÓN 3. CONTENIDO 1. OBJETIVOS DEL PROYECTO

Tema: Utilización del módulo CCP (PWM) en los microcontroladores PIC.

INTRODUCCION A LA CONFIGURACION DEL CONVERSOR ANALOGICO DEL PIC16F876A

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

Apéndice A. Programas y Diagramas de Bloques para los Microprocesadores

REGISTRO DE TEMPERATURA USANDO EL MICROCONTROLADOR PIC16C71. José González Flórez *, Eusebio García García ** Abstract

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM

Microcontrolador PIC 16F84

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador

CALCULADORA DE FUNCIONES BÁSICAS Oscar Gregorio Pérez Macías

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE]

Programación en PIC Los primeros pasos

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC

PRÁCTICA 6: Gobierno del display 7 segmentos

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

MICROCONTROLADOR PIC DE MICROCHIP

Tema: Comunicación serie entre PIC y PC.

[CURSO BÁSICO DE PIC TABLAS]

DESCRIPCIÓN DE LAS INSTRUCCIONES

Microcontrolador PIC 16F84

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

Programación de microcontroladores usos y aplicaciones. Desde Ensamblador a C.

Ciclo Formativo de Grado Superior de Desarrollo de Productos Electrónicos

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04

UNIDAD IV PROGRAMACION. Programación del microcontrolador

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes.

Características generales

SISTEMA MÍNIMO BASADO EN EL PIC16F84

UNIVERSIDAD DON BOSCO

Termostato electrónico con PIC y LCD

Indice. Escrito por Administrator Martes, 02 de Septiembre de :45 - Actualizado Domingo, 20 de Septiembre de :45 1 / 15

CAPÍTULO 3. Las principales funciones del microcontrolador son: adquirir por medio del A/D y también, mostrar mensajes de pesos y voltaje en el LCD.

2.1. Código ASM de Programación para el PIC

INSTRUCCIONES DE ENSAMBLADOR

Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC.

Proyecto ROBOT-BALIZA

x u 05h - - RA5 RA4 RA3 RA2 RA1 RA0 Bit Registro PORTA (05h)

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA

PROFESOR: Práctica 9. Control de Motores de CD con Microcontrolador PIC

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

Registros SFR vistos hasta ahora: Microcontroladores PIC

Seguidores de clase. Universidad Pontificia de Salamanca (Madrid) Microcontrolador PIC 16F877

Conversores Análogo-Digital

Proyecto Final Robot. Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02

Set de instrucciones Microcontrolador PIC.

PROFESOR: Práctica 7. Puertos de salida del Microcontrolador

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y

PROFESOR: Práctica 8. Manejo de Puertos de Entrada y salida del Microcontrolador PIC

;*****************************************PROGRAMA*******************************************

Diagrama a bloques 2

Entrenadores de Microcontroladores PIC

MICROCONTROLADORES (III)

Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002

Interrupciones Fuentes de Interrupciones para el PIC16F1787

PRÁCTICA 2: Programas básicos. Tipos de direccionamiento.

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84

Manejo LCD Gráfico DSM

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA UNIDAD ENSENADA MATERIA: CONTROL DIGITAL MAESTRO: ZAMARRIPA TOPETE JOSE DE JESUS PRACTICA 1 DAC

CONCEPTOS BÁSICOS. + Intensidad

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios

MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde

Conversor A/D. Conversor Analógico a Digital

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón - - (0416)

1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7.

CARRITO SEGUIDOR DE LÍNEA NEGRA

PIC16F88. Características

Electromecánica Industrial. Mecatrónica. Diseño y Construcción de Control de Horno para Tostador de Café

O B J E T I V O I N T R O D U C C I O N M A R C O T E O R I C O

PROGRAMACIÓN DEL MICROCONTROLADOR PIC 16C64 COMO CONTROLADOR MULTIEJE PARA MOTORES PASO

Fteórica- OSC2. Fmedida- OSC2

Transcripción:

APÉNDICE B Programa del PIC 16F877A ;* "CONTROL AUTOMÁTICO DE VELOCIDAD VEHICULAR". * ;* EL PRESENTE PROGRAMA TIENE COMO FINALIDAD CONTROLAR LA VELOCIDAD DEL * ;* VEHÍCULO, DEPENDIENDO DE 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

; INICIALIZACIÓN DE LOS PUERTOS Y DE LA BANDERA. INICIALIZACION MAIN WAIT NOP BCF STATUS, RP1 BCF STATUS, RP0 ; CAMBIA AL BANCO 0 CLRF PORTA ; INICIALIZA EL PUERTO A CLRF PORTC ; INICIALIZA EL PUERTO C BSF STATUS, RP0 ; SELECCIONA EL BANCO 1 MOVLW B'11111111' MOVWF TRISA ; CONFIGURA EL PUERTO A COMO ENTRADAS MOVLW B'11110000' MOVWF TRISC ; CONFIGURA EL PUERTO C COMO ENTRADAS ; Y SALIDAS MOVLW B'00001111' MOVWF ADCON1 ; JUSTIFICA A LA IZQUIERDA, AN0 ANALÓGICA, ; AN<7:1> COMO DIGITAL, RA3 COMO VREF+ Y ; RA2 COMO VREF- MOVLW B'01000001' MOVWF ADCON0 ; FOSC/8, RA0 CANAL DE ENTRADA ANALÓGICO, ; A/D ENCENDIDO MOVWF BANDERA ; INICIALIZACIÒN DE LA BANDERA CALL CONVERSION ; LLAMA A LA SUBRUTINA DE CONVERSION MOVLW B'11111111' MOVWF TIEMPO MOVLW B'11111111' ; ENTRA EN UN CICLO DE ESPERA INTEGRADO MOVWF RETRASO ; POR WAIT, ESPERA Y CICLO; CON EL FIN DE DECFSZ TIEMPO, 1 ; ASEGURAR QUE EL PIC NO RECIBA DOS VECES ESPERA ; LA MISMA SEÑAL DEL RECEPTOR. MAIN ESPERA MOVLW B'00001111' MOVWF DELAY DECFSZ RETRASO, 1 CICLO WAIT CICLO DECFSZ DELAY, 1 83

CICLO ESPERA CONVERSION NOP NOP ; ESPERA EL TIEMPO MÍNIMO DE ADQUISICIÓN BSF ADCON0, GO ; EMPIEZA LA CONVERSIÓN A/D CHECA_CONV BTFSC ADCON0, GO CHECA_CONV ; ESPERA QUE SE COMPLETE LA CONVERSIÓN MOVF ADRESH, W ; PONE EN W EL RESULTADO DE CONVERSIÓN BSF STATUS, C SUBLW B'01110110' ; HACE LA RESTA DE VALOR - W BTFSC STATUS, C ; VERIFICA LA BANDERA DE CARRY PARA ; ASEGURAR QUE LA SEÑAL NO SEA RUIDO CHECA BTFSS BANDERA, 0 ; CHECA SI ESTÁ EN EL AREA DE CONTROL CONTROL ; SI ES 0, ESTÁ ENTRANDO Y VA A CONTROL BAND ; SI ES 1, ESTÁ SALIENDO Y VA A BAND CHECA ; ESTA SUBRUTINA VERIFICA SI EL VEHÍCULO ; ESTÁ DENTRO O FUERA DEL ÁREA DE BTFSC BANDERA, 0 ; DE CONTROL. CONTROL ; DE ESTAR DENTRO DEL AREA VA A CONTROL VELOCIDAD ; SI ESTA FUERA DEL AREA VA A VELOCIDAD BAND VELOCIDAD CONTROL ; ESTA SUBRUTINA INDICA QUE EL VEHÌCULO MOVWF BANDERA ; ESTÁ SALIENDO DEL ÁREA DE CONTROL, POR CHECA ; LO QUE HACE BANDERA = 0 PARA INDICARLO BTFSS PORTC, 4 ; VERIFICA SI ESTA EN PRIMERA VELOCIDAD BTFSS PORTC, 5 ; VERIFICA SI ESTA EN SEGUNDA VELOCIDAD PWM1 ; LLAMA A LA PRIMER VELOCIDAD PWM2 ; LLAMA A LA SEGUNDA VELOCIDAD MOVLW B'00000001' ; SE MODIFICA LA BANDERA PARA INDICAR MOVWF BANDERA ; QUE SE ESTÁ DENTRO DEL ÁREA DE CONTROL 84

BTFSS PORTC, 4 ; VERIFICA SI ESTA EN PRIMERA VELOCIDAD BTFSS PORTC, 5 ; VERIFICA SI ESTA EN SEGUNDA VELOCIDAD PWM1 ; LLAMA A LA PRIMER VELOCIDAD PWM3 ; LLAMA A LA VELOCIDAD DE CONTROL ;* PWM1: * ;* PWM PERIOD = [PR2+1]*4*TOSC*TMR2 PRESCALE VALUE * ;* SI: PWM PERIOD = 10 Us * ;* FOSC = 4 MHz * ;* DESPEJANDO LA ECUACION ANTERIOR * ;* PR2 = (PWM PERIOD/(4*TOSC*TMR2 PRESCALE VALUE))-1 * ;* PR2 = 9 * ;* CICLO DE TRABAJO: * ;* PWM DUTY CYCLE=(CCPR1L:CCP1CON<5:4>)*TOSC*TMR2 PRESCALE * ;* USANDO LOS SIGUIENTES VALORES: * ;* PWM DUTY CYCLE = 43% DEL PERIODO = 4.3 us * ;* DESPEJANDO (CCPR1L:CCP1CON<5:4>) DE LA ECUACION * ;* (CCPR1L:CCP1CON<5:4>) = 01 * ;* (CCPR1L:CCP1CON<5:4>) = 00000100 * PWM1 MOVWF CCP1CON ; DESHABILITAMOS EL PWM ANTERIOR MOVWF T2CON ; INICIALIZA EL TMR2. CLRF PORTB ; INICIALIZA EL PUERTO B. MOVLW B'00001001' MOVWF PR2 ; CUANDO EL TMR2 = 9 TERMINA EL PERIODO MOVWF CCPR1L ; ASIGNA LOS 8 BITS MÁS SIGNIFICATIVOS DEL ; CICLO DE TRABAJO AL CCPR1L BCF CCP1CON, CCP1X BSF CCP1CON, CCP1Y ; ASIGNA LOS 2 BITS MENOS SIGNIFICATIVOS ; DEL CICLO DE TRABAJO AL CCP1X Y CCP1Y ; DEFINIENDO LA SALIDA DEL PWM ; EL PIN 2 DEL TRIS C DEFINIDO COMO SALIDA ANDWF TRISC 85

MOVWF T2CON ; PRESCALADOR TMR2 = 1, ENCIENDE EL TMR2 MOVF CCP1CON, W ANDLW B'00110000' ; MÁSCARA PARA NO ALTERAR EL VALOR DEL ; CICLO DE TRABAJO IORLW B'00001111' MOVWF CCP1CON ; SE HABILITA EL MODO PWM RETURN ;* PWM2: * ;* CICLO DE TRABAJO: * ;* PWM DUTY CYCLE=(CCPR1L:CCP1CON<5:4>)*TOSC*TMR2 PRESCALE * ;* USANDO LOS SIGUIENTES VALORES: * ;* PWM DUTY CYCLE = 60% DEL PERIODO = 6 us * ;* DESPEJANDO (CCPR1L:CCP1CON<5:4>) DE LA ECUACION * ;* (CCPR1L:CCP1CON<5:4>) = 36 * ;* (CCPR1L:CCP1CON<5:4>) = 0000100100 * PWM2 MOVWF CCP1CON ; DESHABILITAMOS EL PWM ANTERIOR MOVWF T2CON ; INICIALIZAMOS EL TMR2. MOVLW B'00001001' MOVWF PR2 ; CUANDO EL TMR2 = 9 TERMINA EL PERIODO MOVLW B'00000110' MOVWF CCPR1L ; ASIGNA LOS 8 BITS MÁS SIGNIFICATIVOS DEL ; CICLO DE TRABAJO AL CCPR1L BCF CCP1CON, CCP1X BCF CCP1CON, CCP1Y ; ASIGNA LOS 2 BITS MENOS SIGNIFICATIVOS ; DEL CICLO DE TRABAJO AL CCP1X Y CCP1Y ; DEFINIENDO LA SALIDA DEL PWM ; EL TRIS C QUEDA DEFINIDO COMO SALIDA ANDWF TRISC MOVWF T2CON ; PRESCALADOR TMR2 = 1, ENCIENDE EL TMR2 MOVF CCP1CON, W ANDLW B'00110000' ; MÁSCARA PARA NO ALTERAR EL VALOR DEL ; CICLO DE TRABAJO IORLW B'00001111' MOVWF CCP1CON ; SE HABILITA EL MODO PWM 86

RETURN ;* PWM3: * ;* CICLO DE TRABAJO: * ;* PWM DUTY CYCLE=(CCPR1L:CCP1CON<5:4>)*TOSC*TMR2 PRESCALE * ;* USANDO LOS SIGUIENTES VALORES: * ;* PWM DUTY CYCLE = 48% DEL PERIODO = 4.8 us * ;* DESPEJANDO (CCPR1L:CCP1CON<5:4>) DE LA ECUACION * ;* (CCPR1L:CCP1CON<5:4>) = 10 * ;* (CCPR1L:CCP1CON<5:4>) = 0000001010 * PWM3 MOVWF CCP1CON ; DESHABILITAMOS EL PWM ANTERIOR MOVWF T2CON ; INICIALIZAMOS EL TMR2. MOVLW B'00001001' MOVWF PR2 ; CUANDO EL TMR2 = 9 TERMINA EL PERIODO MOVWF CCPR1L ; ASIGNA LOS 8 BITS MÁS SIGNIFICATIVOS DEL ; CICLO DE TRABAJO AL CCPR1L BSF CCP1CON, CCP1X BSF CCP1CON, CCP1Y ; ASIGNA LOS 2 BITS MENOS SIGNIFICATIVOS ; DEL CICLO DE TRABAJO AL CCP1X Y CCP1Y ; DEFINIENDO LA SALIDA DEL PWM END ; EL TRIS C QUEDA DEFINIDO COMO SALIDA ANDWF TRISC MOVWF T2CON ; PRESCALADOR TMR2 = 1, ENCIENDE EL TMR2 MOVF CCP1CON, W ANDLW B'00110000' ; MÁSCARA PARA NO ALTERAR EL VALOR DEL ; CICLO DE TRABAJO IORLW B'00001111' MOVWF CCP1CON ; SE HABILITA EL MODO PWM RETURN 87

88