Este documento contiene varios ejemplos de código para el PIC16c84 que muestran el funcionamiento del temporizador TMR0 y las interrupciones. El primer ejemplo muestra cómo generar una interrupción cada 36 milisegundos usando el watchdog. Los otros ejemplos muestran cómo usar el TMR0 para temporizaciones de 100 milisegundos y 150 milisegundos, y cómo generar ondas cuadradas de diferentes frecuencias.
Este documento presenta una guía de tres pasos para resolver problemas de programación: 1) Enunciado y delimitación del hardware, 2) Diagrama de flujo, 3) Elaboración del lenguaje ensamblador. Explica cada paso en detalle y proporciona ejemplos de código ensamblador para tres ejercicios de programación de microcontroladores.
Este documento proporciona una guía rápida sobre el temporizador 0 (TMR0) y sus interrupciones en microcontroladores. Explica los registros asociados a TMR0, cómo funciona como temporizador y contador, cómo se calculan los tiempos de temporización utilizando el prescaler y cómo configurar TMR0 para generar interrupciones periódicas.
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
Este documento presenta dos ejercicios resueltos sobre el uso del timer 0 y las interrupciones en microcontroladores PIC. El primer ejercicio muestra un programa que genera diferentes respuestas dependiendo de la causa de la interrupción, ya sea un pin, cambios en los bits del puerto B o un desbordamiento del timer 0. El segundo ejercicio genera una señal cuadrada de 200 Hz utilizando el desbordamiento del timer 0, presentando soluciones con y sin interrupciones.
Este documento proporciona instrucciones avanzadas para la programación de controladores lógicos programables (PLC). Cubre temas como instrucciones matemáticas, lógicas, de archivo, registros de desplazamiento, secuenciadores y control. También explica el procesamiento de señales analógicas e instrucciones como escalado y PID. El objetivo es capacitar a técnicos en la programación avanzada de PLC para automatización industrial.
Este documento describe cómo configurar un temporizador y contador utilizando un PIC microcontrolador. Se especifica implementar un sistema que puede funcionar como un contador ascendente o descendente, o como un temporizador regresivo desde 99 a 0 en intervalos de 1 o 0.5 segundos, y luego encender un LED. Se proporcionan detalles sobre la configuración del timer, E/S, variables y etiquetas a usar en el programa, así como el diagrama de flujo y pseudocódigo del algoritmo.
Articulo sobre control anticipativo y control selectivo 10% i ido cortejuan jose
Este documento describe dos tipos de control de sistemas: control anticipativo y control selectivo. El control anticipativo se basa en medir variables de entrada y actuar sobre la variable manipulada para compensar perturbaciones antes de que afecten la salida. El control selectivo permite controlar dos variables relacionadas con la misma variable manipulada, transfiriendo el control entre ellas cuando sea necesario para proteger el equipo.
Este documento presenta dos ejemplos resueltos de generación de señales cuadradas utilizando el Timer 0 e interrupciones en un PIC16F84A. El primer ejemplo genera una señal de 200 Hz y el segundo genera una señal que permanece en alto durante 100 ms y luego en bajo durante 2 segundos, repitiendo el ciclo. Se incluyen los cálculos, diagramas de flujo y código en lenguaje ensamblador para ambos ejemplos.
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...SANTIAGO PABLO ALBERTO
Este documento presenta varios ejemplos sobre el uso de interrupciones y temporizadores en microcontroladores PIC y Arduino. Explica las interrupciones externas, por overflow de timers y su configuración. También cubre el uso de la memoria EEPROM, timers y PWM en Arduino, así como ejemplos prácticos de su aplicación.
Este documento presenta una guía de tres pasos para resolver problemas de programación: 1) Enunciado y delimitación del hardware, 2) Diagrama de flujo, 3) Elaboración del lenguaje ensamblador. Explica cada paso en detalle y proporciona ejemplos de código ensamblador para tres ejercicios de programación de microcontroladores.
Este documento proporciona una guía rápida sobre el temporizador 0 (TMR0) y sus interrupciones en microcontroladores. Explica los registros asociados a TMR0, cómo funciona como temporizador y contador, cómo se calculan los tiempos de temporización utilizando el prescaler y cómo configurar TMR0 para generar interrupciones periódicas.
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
Este documento presenta dos ejercicios resueltos sobre el uso del timer 0 y las interrupciones en microcontroladores PIC. El primer ejercicio muestra un programa que genera diferentes respuestas dependiendo de la causa de la interrupción, ya sea un pin, cambios en los bits del puerto B o un desbordamiento del timer 0. El segundo ejercicio genera una señal cuadrada de 200 Hz utilizando el desbordamiento del timer 0, presentando soluciones con y sin interrupciones.
Este documento proporciona instrucciones avanzadas para la programación de controladores lógicos programables (PLC). Cubre temas como instrucciones matemáticas, lógicas, de archivo, registros de desplazamiento, secuenciadores y control. También explica el procesamiento de señales analógicas e instrucciones como escalado y PID. El objetivo es capacitar a técnicos en la programación avanzada de PLC para automatización industrial.
Este documento describe cómo configurar un temporizador y contador utilizando un PIC microcontrolador. Se especifica implementar un sistema que puede funcionar como un contador ascendente o descendente, o como un temporizador regresivo desde 99 a 0 en intervalos de 1 o 0.5 segundos, y luego encender un LED. Se proporcionan detalles sobre la configuración del timer, E/S, variables y etiquetas a usar en el programa, así como el diagrama de flujo y pseudocódigo del algoritmo.
Articulo sobre control anticipativo y control selectivo 10% i ido cortejuan jose
Este documento describe dos tipos de control de sistemas: control anticipativo y control selectivo. El control anticipativo se basa en medir variables de entrada y actuar sobre la variable manipulada para compensar perturbaciones antes de que afecten la salida. El control selectivo permite controlar dos variables relacionadas con la misma variable manipulada, transfiriendo el control entre ellas cuando sea necesario para proteger el equipo.
Este documento presenta dos ejemplos resueltos de generación de señales cuadradas utilizando el Timer 0 e interrupciones en un PIC16F84A. El primer ejemplo genera una señal de 200 Hz y el segundo genera una señal que permanece en alto durante 100 ms y luego en bajo durante 2 segundos, repitiendo el ciclo. Se incluyen los cálculos, diagramas de flujo y código en lenguaje ensamblador para ambos ejemplos.
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...SANTIAGO PABLO ALBERTO
Este documento presenta varios ejemplos sobre el uso de interrupciones y temporizadores en microcontroladores PIC y Arduino. Explica las interrupciones externas, por overflow de timers y su configuración. También cubre el uso de la memoria EEPROM, timers y PWM en Arduino, así como ejemplos prácticos de su aplicación.
Este documento describe las interrupciones y temporizadores en los microcontroladores. Explica los registros INTCON e INTCON que controlan las interrupciones clásicas y nuevas en los PIC16F87X. También describe el registro PIE1 y PIE2 que habilitan diferentes fuentes de interrupción. Además, explica el funcionamiento del temporizador TMR0 y el registro OPTION que lo configura. Finalmente, presenta ejemplos de código en lenguaje C para gestionar interrupciones.
Informe Final - FLIP FLOPS - Rodolfo FeliceRodolfoFelice
Este documento describe el funcionamiento de diferentes tipos de flip-flops (latches), incluyendo sus tablas de verdad, diagramas de tiempo y símbolos. Explica que los circuitos secuenciales dependen de valores almacenados previamente, a diferencia de los circuitos combinacionales. Luego, presenta experimentos realizados con flip-flops J-K, D, SR y T usando LiveWire y Proteus, incluyendo mediciones de tablas de verdad y análisis de su comportamiento como divisores de frecuencia, contadores y pulsadores start/stop
1. El documento describe un sistema de apertura de una caja fuerte mediante una combinación secreta introducida a través de dos teclas. Se propone diseñar un circuito secuencial que reconozca la combinación correcta de pulsaciones de teclas para abrir la caja durante 5 minutos.
2. Se presenta un ejercicio sobre diseño de circuitos secuenciales con dos entradas y una salida. El circuito debe dar salida alta sólo cuando ambas entradas estén a bajo habiendo estado también a bajo en el ciclo anterior.
3. Se pro
Syllabus procesamiento digital de señale_sjcjcbenitezp
Este documento presenta el plan de estudios para el curso de Procesamiento Digital de Señales. El curso dura un semestre, con 5 horas semanales que incluyen 3 horas de teoría y 2 horas de práctica de laboratorio. El curso cubre temas como muestreo de señales, sistemas discretos, transformadas Z y Fourier, y diseño de filtros digitales. Los estudiantes aprenderán a analizar y procesar señales digitales usando estas técnicas matemáticas.
Este documento proporciona una guía sobre el uso del temporizador 0 (TMR0) y las interrupciones en los microcontroladores. Explica los registros asociados a TMR0, cómo funciona el temporizador y el prescaler, y cómo calcular tiempos de conteo utilizando TMR0 y un registro auxiliar para lograr temporizaciones mayores a 65.536 milisegundos.
El documento describe un sistema de llenado y envasado automático que funciona de la siguiente manera: cuando se presiona "MARCHA", se activa el motor de la cinta transportadora hasta detectar una lata, luego se abre la válvula de llenado hasta que el sensor de llenado se activa, y así sucesivamente. Si pasan 5 segundos sin detectar una lata o llenarla, el sistema se detiene y enciende una alarma. Adicionalmente, cada 50 ms se monitorean el nivel del tanque y el peso en el pistón de envas
Este documento describe un programa para un microcontrolador ATmega164P que controla una cerradura eléctrica mediante la detección de secuencias de pulsaciones de teclas. El programa utiliza interrupciones externas para identificar las teclas pulsadas y abre la cerradura si coincide la secuencia ingresada con la clave almacenada en la EEPROM. También permite cambiar la clave almacenada modificando el contenido de la EEPROM mediante otra secuencia de pulsaciones.
Este documento describe diferentes tipos de contadores digitales, incluyendo contadores asíncronos, síncronos y de anillo. Los contadores asíncronos usan flip-flops conectados en cadena donde cada flip-flop depende del anterior, mientras que los contadores síncronos usan una señal de reloj común para cambiar todos los flip-flops al mismo tiempo. Los contadores de anillo conectan los flip-flops en un bucle donde los datos se desplazan circularmente.
[1] El documento describe los tipos y funciones básicas de los flip-flops, circuitos digitales que se usan para almacenar datos binarios. [2] Explica que los flip-flops sincrónicos requieren una entrada de reloj, mientras que los asíncronos solo tienen entradas de control. [3] El trabajo práctico incluye el estudio de flip-flops J-K, SR, D y T a través de tablas de verdad y diagramas.
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...SANTIAGO PABLO ALBERTO
Este documento describe tres tipos de convertidores CC a CC no aislados: convertidores reductores (Buck), elevadores (Boost) y Buck-Boost. Explica la teoría de funcionamiento de los convertidores Buck y Boost dividiéndolos en etapas de encendido y apagado. También presenta ejemplos de circuitos prácticos de convertidores Buck y Boost utilizando temporizadores 555 y reguladores integrados con retroalimentación para mantener la tensión de salida constante independientemente de la carga.
Este documento describe un proyecto para codificar un número de un dígito en exceso 3 en código Gray usando compuertas lógicas. Explica la metodología, equipos y materiales requeridos, marco teórico sobre tecnología TTL y códigos Gray y de exceso 3, tablas de resultados y el procedimiento para implementar el circuito.
1. El documento presenta diversos ejemplos de código y aplicaciones para el manejo de salidas, entradas, displays, comunicaciones y sensores utilizando microcontroladores PIC y lenguaje C. Incluye desde el control básico de leds y pulsadores hasta aplicaciones más complejas como comunicaciones seriales, lectura de tarjetas RFID, pantallas gráficas y sensores.
PWM con PIC16F877A: Modulos y Registros InvolucradosEduardo Henriquez
El documento describe cómo generar una señal PWM con un microcontrolador utilizando los módulos CCP. Los módulos CCP pueden operar en modo captura, comparación o PWM. En modo PWM, cada módulo CCP puede generar una onda cuadrada con resolución de hasta 10 bits y frecuencia y ciclo de trabajo configurables utilizando los registros CCPxCON, CCPRxL y TMR2.
Este documento presenta una introducción a los buses de comunicación I2C y SPI. Explica que I2C utiliza dos líneas (SDA y SCL) para la transmisión síncrona de datos entre dispositivos maestros y esclavos conectados a un bus común, mientras que SPI utiliza tres líneas (SCLK, MOSI, MISO) y una línea de selección individual (CS) para cada dispositivo esclavo. También describe los protocolos básicos de cada bus, incluyendo condiciones de inicio, parada y transmisión de datos
Este documento contiene información sobre interrupciones y temporizadores en microcontroladores PIC16F84. Explica las causas de interrupción en el PIC16F84 como el pin RB0/INT, desbordamiento del temporizador TMR0 y cambios en los pines RB7-RB4. También describe los registros INTCON, PIE1, PIE2 y funciones para gestionar interrupciones en lenguaje C como enable_interrupts y disable_interrupts. Finalmente, incluye ejemplos de código para configurar interrupciones externas por el pin RB0/
Este documento describe diferentes circuitos lógicos MSI como decodificadores, codificadores, multiplexores y demultiplexores, y sus aplicaciones. Explica que los decodificadores convierten números binarios de entrada en una salida activa, mientras que los codificadores convierten una entrada activa en un código binario de salida. También describe que los multiplexores permiten que solo una de varias entradas de datos alcance la salida, y los demultiplexores distribuyen una entrada en varias salidas.
Este documento presenta dos soluciones de diseño para contadores utilizando un microcontrolador PIC16F84A. La primera solución diseña un contador de 4 dígitos utilizando un decodificador 7448 y multiplexación de displays. La segunda solución diseña un contador ascendente de dos dígitos sin utilizar un decodificador, asignando los pines del microcontrolador y desarrollando la lógica y rutinas en lenguaje ensamblador. Ambas soluciones incluyen la delimitación del hardware, diagramas de flujo y conversión al código de
Circuitos secuenciales sincronos y asincronosAlexa Ramirez
Este documento describe los aspectos básicos de los circuitos secuenciales síncronos. Explica que estos circuitos utilizan elementos de memoria como flip-flops junto con una señal de reloj para controlar los cambios de estado. También describe cómo estos circuitos se pueden representar mediante autómatas de Mealy y Moore y los pasos para analizar y sintetizar circuitos secuenciales síncronos a partir de una especificación.
Este documento describe cómo generar ondas cuadradas de 10 kHz utilizando interrupciones por desbordamiento del temporizador TMR0 en un microcontrolador PIC. Explica cómo configurar el TMR0 y el registro INTCON para habilitar las interrupciones y cómo usar una subrutina de interrupción para alternar el estado de una salida cada 50 microsegundos. También cubre cómo ajustar el valor de carga del TMR0 para lograr temporizaciones exactas de 50 microsegundos teniendo en cuenta los tiempos de ejecución de instrucciones. El documento incluye có
El documento explica cómo usar el temporizador TMR0 de un PIC16F84A para generar temporizaciones de 0.5 segundos y 10 milisegundos. Detalla cómo calcular el valor de carga del TMR0 y el prescaler necesarios en función del tiempo deseado y la frecuencia de trabajo del PIC. También incluye un ejemplo de programa que enciende y apaga un LED cada 0.5 segundos usando interrupciones del TMR0.
Este documento describe las interrupciones y temporizadores en los microcontroladores. Explica los registros INTCON e INTCON que controlan las interrupciones clásicas y nuevas en los PIC16F87X. También describe el registro PIE1 y PIE2 que habilitan diferentes fuentes de interrupción. Además, explica el funcionamiento del temporizador TMR0 y el registro OPTION que lo configura. Finalmente, presenta ejemplos de código en lenguaje C para gestionar interrupciones.
Informe Final - FLIP FLOPS - Rodolfo FeliceRodolfoFelice
Este documento describe el funcionamiento de diferentes tipos de flip-flops (latches), incluyendo sus tablas de verdad, diagramas de tiempo y símbolos. Explica que los circuitos secuenciales dependen de valores almacenados previamente, a diferencia de los circuitos combinacionales. Luego, presenta experimentos realizados con flip-flops J-K, D, SR y T usando LiveWire y Proteus, incluyendo mediciones de tablas de verdad y análisis de su comportamiento como divisores de frecuencia, contadores y pulsadores start/stop
1. El documento describe un sistema de apertura de una caja fuerte mediante una combinación secreta introducida a través de dos teclas. Se propone diseñar un circuito secuencial que reconozca la combinación correcta de pulsaciones de teclas para abrir la caja durante 5 minutos.
2. Se presenta un ejercicio sobre diseño de circuitos secuenciales con dos entradas y una salida. El circuito debe dar salida alta sólo cuando ambas entradas estén a bajo habiendo estado también a bajo en el ciclo anterior.
3. Se pro
Syllabus procesamiento digital de señale_sjcjcbenitezp
Este documento presenta el plan de estudios para el curso de Procesamiento Digital de Señales. El curso dura un semestre, con 5 horas semanales que incluyen 3 horas de teoría y 2 horas de práctica de laboratorio. El curso cubre temas como muestreo de señales, sistemas discretos, transformadas Z y Fourier, y diseño de filtros digitales. Los estudiantes aprenderán a analizar y procesar señales digitales usando estas técnicas matemáticas.
Este documento proporciona una guía sobre el uso del temporizador 0 (TMR0) y las interrupciones en los microcontroladores. Explica los registros asociados a TMR0, cómo funciona el temporizador y el prescaler, y cómo calcular tiempos de conteo utilizando TMR0 y un registro auxiliar para lograr temporizaciones mayores a 65.536 milisegundos.
El documento describe un sistema de llenado y envasado automático que funciona de la siguiente manera: cuando se presiona "MARCHA", se activa el motor de la cinta transportadora hasta detectar una lata, luego se abre la válvula de llenado hasta que el sensor de llenado se activa, y así sucesivamente. Si pasan 5 segundos sin detectar una lata o llenarla, el sistema se detiene y enciende una alarma. Adicionalmente, cada 50 ms se monitorean el nivel del tanque y el peso en el pistón de envas
Este documento describe un programa para un microcontrolador ATmega164P que controla una cerradura eléctrica mediante la detección de secuencias de pulsaciones de teclas. El programa utiliza interrupciones externas para identificar las teclas pulsadas y abre la cerradura si coincide la secuencia ingresada con la clave almacenada en la EEPROM. También permite cambiar la clave almacenada modificando el contenido de la EEPROM mediante otra secuencia de pulsaciones.
Este documento describe diferentes tipos de contadores digitales, incluyendo contadores asíncronos, síncronos y de anillo. Los contadores asíncronos usan flip-flops conectados en cadena donde cada flip-flop depende del anterior, mientras que los contadores síncronos usan una señal de reloj común para cambiar todos los flip-flops al mismo tiempo. Los contadores de anillo conectan los flip-flops en un bucle donde los datos se desplazan circularmente.
[1] El documento describe los tipos y funciones básicas de los flip-flops, circuitos digitales que se usan para almacenar datos binarios. [2] Explica que los flip-flops sincrónicos requieren una entrada de reloj, mientras que los asíncronos solo tienen entradas de control. [3] El trabajo práctico incluye el estudio de flip-flops J-K, SR, D y T a través de tablas de verdad y diagramas.
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...SANTIAGO PABLO ALBERTO
Este documento describe tres tipos de convertidores CC a CC no aislados: convertidores reductores (Buck), elevadores (Boost) y Buck-Boost. Explica la teoría de funcionamiento de los convertidores Buck y Boost dividiéndolos en etapas de encendido y apagado. También presenta ejemplos de circuitos prácticos de convertidores Buck y Boost utilizando temporizadores 555 y reguladores integrados con retroalimentación para mantener la tensión de salida constante independientemente de la carga.
Este documento describe un proyecto para codificar un número de un dígito en exceso 3 en código Gray usando compuertas lógicas. Explica la metodología, equipos y materiales requeridos, marco teórico sobre tecnología TTL y códigos Gray y de exceso 3, tablas de resultados y el procedimiento para implementar el circuito.
1. El documento presenta diversos ejemplos de código y aplicaciones para el manejo de salidas, entradas, displays, comunicaciones y sensores utilizando microcontroladores PIC y lenguaje C. Incluye desde el control básico de leds y pulsadores hasta aplicaciones más complejas como comunicaciones seriales, lectura de tarjetas RFID, pantallas gráficas y sensores.
PWM con PIC16F877A: Modulos y Registros InvolucradosEduardo Henriquez
El documento describe cómo generar una señal PWM con un microcontrolador utilizando los módulos CCP. Los módulos CCP pueden operar en modo captura, comparación o PWM. En modo PWM, cada módulo CCP puede generar una onda cuadrada con resolución de hasta 10 bits y frecuencia y ciclo de trabajo configurables utilizando los registros CCPxCON, CCPRxL y TMR2.
Este documento presenta una introducción a los buses de comunicación I2C y SPI. Explica que I2C utiliza dos líneas (SDA y SCL) para la transmisión síncrona de datos entre dispositivos maestros y esclavos conectados a un bus común, mientras que SPI utiliza tres líneas (SCLK, MOSI, MISO) y una línea de selección individual (CS) para cada dispositivo esclavo. También describe los protocolos básicos de cada bus, incluyendo condiciones de inicio, parada y transmisión de datos
Este documento contiene información sobre interrupciones y temporizadores en microcontroladores PIC16F84. Explica las causas de interrupción en el PIC16F84 como el pin RB0/INT, desbordamiento del temporizador TMR0 y cambios en los pines RB7-RB4. También describe los registros INTCON, PIE1, PIE2 y funciones para gestionar interrupciones en lenguaje C como enable_interrupts y disable_interrupts. Finalmente, incluye ejemplos de código para configurar interrupciones externas por el pin RB0/
Este documento describe diferentes circuitos lógicos MSI como decodificadores, codificadores, multiplexores y demultiplexores, y sus aplicaciones. Explica que los decodificadores convierten números binarios de entrada en una salida activa, mientras que los codificadores convierten una entrada activa en un código binario de salida. También describe que los multiplexores permiten que solo una de varias entradas de datos alcance la salida, y los demultiplexores distribuyen una entrada en varias salidas.
Este documento presenta dos soluciones de diseño para contadores utilizando un microcontrolador PIC16F84A. La primera solución diseña un contador de 4 dígitos utilizando un decodificador 7448 y multiplexación de displays. La segunda solución diseña un contador ascendente de dos dígitos sin utilizar un decodificador, asignando los pines del microcontrolador y desarrollando la lógica y rutinas en lenguaje ensamblador. Ambas soluciones incluyen la delimitación del hardware, diagramas de flujo y conversión al código de
Circuitos secuenciales sincronos y asincronosAlexa Ramirez
Este documento describe los aspectos básicos de los circuitos secuenciales síncronos. Explica que estos circuitos utilizan elementos de memoria como flip-flops junto con una señal de reloj para controlar los cambios de estado. También describe cómo estos circuitos se pueden representar mediante autómatas de Mealy y Moore y los pasos para analizar y sintetizar circuitos secuenciales síncronos a partir de una especificación.
Este documento describe cómo generar ondas cuadradas de 10 kHz utilizando interrupciones por desbordamiento del temporizador TMR0 en un microcontrolador PIC. Explica cómo configurar el TMR0 y el registro INTCON para habilitar las interrupciones y cómo usar una subrutina de interrupción para alternar el estado de una salida cada 50 microsegundos. También cubre cómo ajustar el valor de carga del TMR0 para lograr temporizaciones exactas de 50 microsegundos teniendo en cuenta los tiempos de ejecución de instrucciones. El documento incluye có
El documento explica cómo usar el temporizador TMR0 de un PIC16F84A para generar temporizaciones de 0.5 segundos y 10 milisegundos. Detalla cómo calcular el valor de carga del TMR0 y el prescaler necesarios en función del tiempo deseado y la frecuencia de trabajo del PIC. También incluye un ejemplo de programa que enciende y apaga un LED cada 0.5 segundos usando interrupciones del TMR0.
El documento presenta un programa que contiene varias interrupciones. Si la interrupción es causada por RB0, mostrará un 2 binario en el puerto A. Si es causada por un cambio en RB4:RB7, mostrará un 1 binario en el puerto A. Si es causada por un desbordamiento del TMR0, mostrará un 4 binario en el puerto A. El programa configura las interrupciones y los puertos y entra en un lazo infinito.
El documento describe el funcionamiento de las interrupciones y el temporizador TMR0 en los microcontroladores PIC. Las interrupciones permiten al PIC ejecutar código de respuesta rápida a eventos externos sin dejar de ejecutar el programa principal. El TMR0 puede usarse para generar tiempos o contar pulsos y disparar una interrupción cuando se desborda.
Este diagrama de flujo controla 4 motores encendiéndolos y apagándolos de forma secuencial mediante una rutina de interrupción cada 90 segundos. La rutina principal configura los puertos y registros, y luego en un bucle enciende los motores 1 y 2, luego los 3 y 4, repitiendo indefinidamente. La rutina de interrupción apaga y enciende los motores según su estado cada 90 segundos.
Este documento presenta un examen parcial de 50 puntos sobre microcontroladores. Contiene 10 temas con preguntas de selección múltiple y completar sobre conceptos como instrucciones, registros, puertos y temporización. El estudiante debe responder marcando o escribiendo la respuesta correcta en los espacios provistos.
Este documento describe la habilitación de los puertos A y B del PIC16F84A usando MPLAB. Se explican brevemente las características de cada puerto y se incluye el código para configurarlos como salidas y hacer parpadear LEDs conectados a ellos. El código fue simulado exitosamente en Proteus para verificar su funcionamiento.
Este programa demuestra el uso de la memoria EEPROM en un microcontrolador PIC para almacenar y recuperar datos de forma permanente. El programa graba un valor en la posición 0 de la EEPROM, luego lo lee y lo muestra en un puerto. Usa rutinas para inhabilitar y habilitar interrupciones durante los procesos de escritura y lectura para evitar errores.
Este documento presenta varios proyectos prácticos para utilizar el microcontrolador PIC16F84. Describe proyectos como la conexión de LED y dipswitch, el manejo de un display de siete segmentos para hacer un contador decimal, y la técnica de multiplexaje para compartir líneas de entrada/salida entre teclados y displays. Explica los diagramas esquemáticos, flujos de programación y códigos requeridos para cada proyecto con el objetivo de practicar el uso de puertos y otras funciones del PIC16F84.
Este documento describe varios proyectos prácticos con el microcontrolador PIC16F84, incluyendo la conexión de LED y dipswitch, el manejo de un display de siete segmentos para hacer un contador decimal, y la técnica de multiplexaje para leer teclados y mostrar datos en displays utilizando menos líneas de E/S. También se incluyen diagramas esquemáticos, diagramas de flujo y código de programa para cada proyecto.
Este documento describe varios proyectos prácticos con el microcontrolador PIC16F84, incluyendo la conexión de LED y dipswitch, el manejo de un display de siete segmentos para hacer un contador decimal, y la técnica de multiplexaje para leer teclados y mostrar datos en displays utilizando menos líneas de entrada/salida del microcontrolador. Se incluyen diagramas esquemáticos, diagramas de flujo y código de programa para cada proyecto.
El documento describe el uso del ensamblador MPASM con el entorno MPLAB para programar PICs. Explica directivas como LIST, ORG, END y REM. También muestra ejemplos de código en ensamblador para contar en un display y medir distancias usando el temporizador TMR0.
El documento describe el ensamblador MPASM que se usa con el entorno de trabajo MPLAB para programar PICs. Explica algunas directivas como LIST, ORG, END y REM y cómo se usan. Luego presenta un ejemplo de código en ensamblador para un PIC16F84A que cuenta hasta 59 y muestra el valor en LEDs, usando directivas como EQU, BSF y MOVWF. Finalmente, discute aspectos del PIC16F84A como su memoria y periféricos.
El documento describe el ensamblador MPASM que se usa con el entorno de trabajo MPLAB para programar PICs. Explica algunas directivas como LIST, ORG, END y REM y cómo se usan. Luego presenta un ejemplo de código en ensamblador para un PIC16F84A que cuenta hasta 59 y muestra el valor en LEDs, y otro ejemplo que muestra dígitos en un display de 7 segmentos.
Este documento proporciona una descripción detallada del PIC16F87, incluyendo:
1) Una explicación de los puertos de entrada/salida y su configuración.
2) Ejemplos de código para configurar los puertos y controlar LEDs y botones.
3) Una discusión sobre el efecto rebote de los botones y cómo eliminarlo en el código.
4) Diferentes implementaciones de una subrutina para pausas de 20 milisegundos.
Este documento habla sobre interrupciones y temporizadores en microelectrónica. Explica que las interrupciones son desviaciones del flujo de control del programa causadas por eventos externos o internos. Cuando ocurre una interrupción, se guarda la dirección actual del programa en la pila y se carga una nueva dirección de interrupción. También menciona algunas directivas de interrupción para PIC y explica conceptos básicos sobre el uso de temporizadores como TMR0, TMR1 y TMR2.
El documento describe el módulo TIMER2 del PIC16F87X. El TIMER2 es un temporizador-contador ascendente de 8 bits que puede usarse como base de tiempo para otros módulos. Tiene un registro de periodo PR2 que, cuando coincide con el valor del contador TMR2, genera una interrupción. El preescaler y postescaler permiten dividir la señal de reloj y la interrupción respectivamente.
este programa hecho en ensamblador por Joaquín berrocal Piris lo uso para el manejo del puente levadizo de madera
Nota: ver Mis proyectos en.
https://www.youtube.com/user/joaquininbp
http://www.slideshare.net/joaquinin1/presentations
Documentos: aquí está el brazo robotico
http://www.slideshare.net/joaquinin1/documents
https://issuu.com/joaquinin
nota importante: desde la utilidad indicada más abajo; poniendo la dirección del archivo en issuu.net he indicando cuantas páginas quieres, puedes bajarte cualquier archivo sin tener que registrarte:
Publicado el 1 abr. 2015
Paginas para descargar:
http://utilidades.gatovolador.net/issuu/
Este documento proporciona información técnica detallada sobre el microcontrolador PIC16F84A, incluyendo sus características de CPU y periféricos, diagrama de bloques, pines de entrada/salida, organización de memoria de programa y datos, y descripción de los registros de propósito especial.
Este documento presenta un resumen de las Normas APA (American Psychological Association) para la redacción de documentos de investigación. Describe conceptos básicos como el lenguaje formal, los márgenes, la paginación, la presentación de cuadros, gráficos y referencias. El objetivo es facilitar la transmisión válida y confiable de información entre los profesionales de investigación siguiendo un formato estandarizado.
El documento describe el protocolo Modbus, desarrollado en 1984 para sistemas de control y supervisión de procesos. Explica que es ampliamente utilizado debido a su simplicidad y especificación abierta. Detalla las características del protocolo como su estructura maestro-esclavo, los tipos de mensajes, las funciones disponibles y la estructura de los mensajes intercambiados.
Este documento proporciona una guía rápida para trabajar con una pantalla LCD y un teclado matricial utilizando un PIC16F877. Explica cómo conectar y configurar la LCD y el teclado, inicializarlos, crear mensajes estáticos y dinámicos en la LCD, y leer teclas del teclado para mostrarlas en la LCD. Incluye ejemplos de código para mostrar una tecla leída del teclado 4x3 y 4x4 en la LCD.
El documento presenta el cronograma de actividades de un taller sobre microcontroladores en C durante 10 semanas. Cada semana se cubrirá un tema teórico y práctico relacionado con microcontroladores, como introducción, simuladores, manejo de periféricos, timers, interrupciones y módulos especiales. Los estudiantes se dividirán en grupos para las prácticas. Deberán entregar varias partes de un proyecto a lo largo del taller y recibirán una calificación final.
El documento presenta el cronograma de actividades de un curso sobre microcontroladores en C. El curso está dividido en 13 semanas que cubren 6 temas principales. Cada semana se divide en días de teoría y práctica, donde los estudiantes son asignados a grupos para las sesiones prácticas. El curso culmina con la entrega de un proyecto en dos partes evaluado en diferentes fechas.
El documento presenta el cronograma de una capacitación sobre microcontroladores dividida en 13 semanas. Cada semana se dedica a la teoría los días lunes y a la práctica los martes. La capacitación cubre temas como introducción a microcontroladores, simuladores, automatizaciones varias, estructura de contadores, TMR0 e interrupciones. El proyecto final se entrega en 3 partes y es evaluado con diferentes porcentajes.
El documento presenta el cronograma de actividades de un taller sobre microcontroladores en C dividido en 10 semanas. Cada semana se abordarán diferentes temas relacionados con microcontroladores como introducción, simuladores, manejo de periféricos, timers, interrupciones, módulo CCP, A/D y USART. También se incluyen fechas para la entrega por parte de grupos de proyectos divididos en 4 partes que representan un porcentaje de la calificación final.
Este documento presenta un cronograma de 13 semanas para un curso sobre microcontroladores. Cubre temas teóricos los días 1 e introduce conceptos prácticos los días 2. Los temas incluyen introducción a microcontroladores, simuladores, automatizaciones varias, estructura de contadores y TMR0 e interrupciones. Los estudiantes entregarán un proyecto en partes evaluadas y habrá dos evaluaciones enviadas por correo.
Este documento trata sobre el módulo USART y la comunicación serial asíncrona. Introduce el protocolo RS-232, explica cómo funcionan el transmisor y receptor asíncronos a nivel de hardware, y describe la configuración y uso del módulo USART en el lenguaje C, incluyendo funciones para la transmisión y recepción de datos.
Este documento describe el módulo de conversión analógico a digital (A/D) de un microcontrolador. Explica los registros relacionados con el módulo A/D, las opciones para la fuente del reloj de conversión, y cómo seleccionar y leer canales analógicos en C. También incluye ejemplos de código C para medir canales analógicos y aplicaciones como un termómetro digital.
Este documento proporciona información sobre el módulo CCP (Captura/Comparación/PWM) de los microcontroladores. Explica los diferentes modos de funcionamiento del módulo CCP como modo captura, comparación y PWM. Incluye diagramas de flujo y tablas sobre los recursos de timer y registros asociados a cada modo.
Este documento proporciona información sobre las características y periféricos de la familia de microcontroladores PIC16F87X, así como sobre el lenguaje C para programar estos microcontroladores. Se describen los tipos de datos, constantes, variables, operadores, funciones y declaraciones de control soportadas por el compilador CCS para esta familia de PICs.
Manejo de perifericos para microcontroladoreLuis Zurita
Este documento describe el manejo de periféricos como displays, pantallas LCD y EEPROM con microcontroladores. Explica cómo mostrar números en displays de 7 segmentos sin usar decodificadores mediante tablas de códigos binarios. También cubre el uso de pantallas LCD, incluyendo sus pines de conexión, librerías de C para inicializar y escribir en ellas, y cómo modificar el puerto de datos.
El documento presenta el cronograma de actividades de una asignatura sobre microcontroladores en C. La asignatura se divide en 13 semanas con temas teóricos los días lunes y prácticos los miércoles. Los temas incluyen introducción a microcontroladores, simuladores, manejo de periféricos, timers e interrupciones, módulo CCP, A/D y USART. También incluye la entrega de un proyecto en dos partes y la evaluación final.
Este documento presenta los resultados de evaluación de varios estudiantes en diferentes asignaturas. Los estudiantes son evaluados en función de su desempeño en diagramas de flujo, lenguaje ASM, simulaciones, montajes y asistencia. Algunos estudiantes obtuvieron las calificaciones máximas en todas las categorías, mientras que otros no completaron algunas tareas y recibieron calificaciones más bajas como resultado. El documento también enumera varios proyectos de automatización realizados por grupos de estudiantes.
Este documento presenta los resultados de varios proyectos de estudiantes. Incluye tablas con los nombres de los estudiantes, los proyectos realizados, las calificaciones obtenidas en diferentes categorías y el porcentaje final. Algunos proyectos incluyen sistemas de control de nivel de agua, mezcladoras de pintura, envasadoras y contadores. El documento también explica los criterios de evaluación utilizados como diagrama de flujo, lenguaje ASM, hardware y asistencia.
En la ciudad de Pasto, estamos revolucionando el acceso a microcréditos y la formalización de microempresarios informales con nuestra aplicación CrediAvanza. Nuestro objetivo es empoderar a los emprendedores locales proporcionándoles una plataforma integral que facilite el acceso a servicios financieros y asesoría profesional.
Business Plan -rAIces - Agro Business Techjohnyamg20
Innovación y transparencia se unen en un nuevo modelo de negocio para transformar la economia popular agraria en una agroindustria. Facilitamos el acceso a recursos crediticios, mejoramos la calidad de los productos y cultivamos un futuro agrícola eficiente y sostenible con tecnología inteligente.
Ofrecemos herramientas y metodologías para que las personas con ideas de negocio desarrollen un prototipo que pueda ser probado en un entorno real.
Cada miembro puede crear su perfil de acuerdo a sus intereses, habilidades y así montar sus proyectos de ideas de negocio, para recibir mentorías .
pueblos originarios de chile presentacion twinkl.pptx
Ejemplos De Timer E Interrupcion
1. ;El objetivo de este programa es mostrar en la práctica el funcionamiento del Watchdog en el PIC 16c84.
;El programa entra en un bucle infinito del que sale tras cumplirse la temporización asignada al watchdog, que en este
;caso serán 36 ms, es decir 2 veces la temporización nominal.
LIST p=16c84
STATUS EQU 03H
OPT EQU 01H
; Programa principal:
ORG 10
bsf STATUS,5 ;Banco de registros 1
movlw b'00001001'
movwf OPT ; Se asigna el preescaler a watchdog con un factor de división de 1:2.
clrwdt ; se inicializa el WD
bucle goto bucle
END
;**** OTRO EJEMPLO ****
; EJEMPLO de interrupciones en el PIC16c84. Se trata de realizar una temporización de 150ms utilizando el reloj
; de 100Khz de un PIC
LIST p=16c84 ; Tipo de pic que vamos a usar
STATUS EQU 03H
INTCON EQU 0BH
TR0_OPT EQU 01H ; TIMER0 en banco 0, OPTION en banco 1
ORG 0 ; Vector de RESET
goto EMPIEZA
ORG 4 ; Vector de interrupciones
goto TRATINT
EMPIEZA
bsf STATUS,5 ; Página de registros 1
movlw b'00000011' ; Prescaler x16 asignado a TMR0
movwf TMR0_OPT
movlw b'10100000' ; Activamos interrupción por TMR0
movwf INTCON ; No es necesario volver a cambiar de página porque INTCON está en p g 0 y 1.
bcf STATUS,5 ; Selección de página de registros 0
movlw d'22'
movwf TMR0_OPT ; Cargamos el TMR0 con el valor 22 decimal
BUCLE goto BUCLE ; Nos quedaremos aquí hasta que se produzca la interrupción
TRATINT ; Aqui se incluir n los tratamientos de las interrupciones, de momento nos limitaremos a poner W a 0
;(para que se vea que se ha producido la interrupción) y esperar a que el WatchDog reinicie el PIC.
movlw 0
FIN goto FIN
END
;*** Otro Ejemplo ****
; Programa que muestra el funcionamiento del timer: Realiza una temporización de 100 ms
list P=16c84 ; tipo de pic
intcon equ 0BH
tmr_opt equ 01H
t0if equ 02h
status equ 03h
org 0
movlw b'00000000'
movwf intcon ; desactiva interrupciones
bsf status,5 ; página 1
movlw b'00000011' ; prescaler asignado al timer con un
movwf tmr_opt ; factor de 16
2. bcf status,5 ; página 0
movlw b'01100100' ; se inicializa TMR0 con 100
movwf tmr_opt
bucle btfsc intcom,t0if ; si el bit t0if del intcon es 1
goto fin ; indica que el timer se ha sobre-
goto bucle ; pasado y entonces se salta a fin
; si no se vuelve al bucle fin
End
;
; EJEMPLO 2.10
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;La interrupción del TMR0.
;
;Se trata de comprobar la interrupción provocada por el TMR0. El programa
;lee el estado de los interruptores conectados a RA0 y RA4 para reflejarlo en
;los leds conectados a RB0 y RB4 respectivamente. Al mismo tiempo el TMR0
;genera una interrupción cada 0.05 seg. (50 mS) que se repetirá 5 veces con objeto
;de hacer intermitencia de 250 mS sobre el led conectado a RB7.
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
Contador equ 0x0c ;Variable para la temporización
org 0x00 ;Vector de Reset
goto Inicio
org 0x04 ;Vector de interrupción
Interrupcion bcf INTCON,T0IF ;Repone flag del TMR0
decfsz Contador,F ;Decrementa el contador
goto Seguir
Con_si_0 movlw 5
movwf Contador ;Repone el contador nuevamente
btfsc PORTB,7 ;Testea último estado de RB7
goto RB7_ES_1 ;Está a 1
bsf PORTB,7 ;Está a 0, activa RB7
goto Seguir
RB7_ES_1 bcf PORTB,7 ;Desactiva RB7
Seguir movlw 0x3c
movwf TMR0 ;Repone el TMR0 con 195
retfie ;Retorno de interrupción
Inicio clrf PORTB ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw b'00011111'
movwf TRISA ;Puerta A se configura como entrada
movlw b'00000111'
movwf OPTION_REG ;Preescaler de 256 para el TMR0
bcf STATUS,RP0 ;Selecciona banco 0
;El TMR0 se incrementa cada 1 uS. Si se emplea un preescaler de 256, deberá sufrir 195
;incrementos para provocar una interrupción cada 50000 uS (50 mS). Si esta se repite 5
;veces, el tiempo total transcurrido es de 250000 uS (250 mS). El complemento del valor
3. ;195 en hex. es 0x3c.
movlw 0x3c
movwf TMR0 ;Carga el TMR0 con 195
movlw 0x05
movwf Contador ;Nº de veces a repetir la interrupción
movlw b'10100000'
movwf INTCON ;Activa la interrupción del TMR0
Loop clrwdt ;Refresca el WDT
btfsc PORTA,0 ;Testea el estado de RA0
goto RA0_ES_1
bcf PORTB,0 ;Desactiva RB0
goto TEST_RB1
RA0_ES_1 bsf PORTB,0 ;Activa RB0
TEST_RB1 btfsc PORTA,1 ;Testea el estado de RA1
goto RA1_ES_1
bcf PORTB,1 ;Desactiva RB1
goto Loop
RA1_ES_1 bsf PORTB,1 ;Activa RB1
goto Loop
end ;Fin del programa fuente
;
; EJEMPLO 2.15
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;Generación de ondas cuadradas de diferentes frecuencias variando el valor del TMR0
;
;La línea de salida RB0 cambiará de estado a una frecuencia determinada por el valor
;introducido mediante los 3 interruptores RA0-RA2:
;
;RA2 RA1 RA0 Frecuencia Periodo Semiperiodo
;--- --- --- ---------- ------- -----------
;0 0 0 0 KHz --- ---
;0 0 1 1 KHz 1000 uS 500 uS
;0 1 0 2 KHz 500 uS 250 uS
;0 1 1 3 KHz 333 uS 166 uS
;1 0 0 4 KHz 250 uS 125 uS
;1 0 1 5 KHz 200 uS 100 uS
;1 1 0 6 KHz 166 uS 83 uS
;1 1 1 7 KHz 143 uS 71 uS
;
;En el tratamiento de interrupción que provocará el desbordamiento del TMR0, se puede
;apreciar como se salva el W y el registro de estado, para recuperarlos posteriormente.
;Es lo que se llama "salvar el contexto"
;
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
Valor equ 0x0c ;Variable de frecuencia
W_Temp equ 0x0d ;W temporal
Status_Temp equ 0x0e ;Registro de estado temporal
org 0x00 ;Vector de Reset
goto Inicio
org 0x04 ;Vector de interrupción
4. goto Interrupcion
;*********************************************************************************
;Tabla: esta rutina devuelve el valor a cargar en el TMR0 según la frecuencia selec-
;cionada. Partiendo de una frecuencia general de 4 MHz, el TMR0 evoluciona cada 1 uS.
;Se selecciona una preescaler de 4. El valor a cargar en TMR0 se obtiene de dividir el
;semiperiodo de la frecuencia deseada entre el preescaler. Al valor obtenido se le
;resta 2 por motivos de sincronismo interno del PIC, se convierte a hex. y se comple-
;menta.
Tabla: addwf PCL,F ;Calcula desplazamiento de la tabla
retlw 0x00 ;0 KHz
retlw 0x86 ;1 KHz
retlw 0xc5 ;2 KHz
retlw 0xda ;3 KHz
retlw 0xe4 ;4 KHz
retlw 0xea ;5 KHz
retlw 0xee ;6 KHz
retlw 0xf1 ;7 KHz
Interrupcion movwf W_Temp ;Salva el W
swapf STATUS,W
movwf Status_Temp ;Salva el registro de estado
movf Valor,W
movwf TMR0 ;Recarga el TMR0
bcf INTCON,T0IF ;Desactiva el flag TMR0
movlw b'00000001'
xorwf PORTB,F ;Bascula RB0
swapf Status_Temp,W
movwf STATUS ;Recupera el registro de estado
swapf W_Temp,F
swapf W_Temp,W ;Recupera el registro W
retfie
Inicio clrf PORTB ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw b'00011111'
movwf TRISA ;Puerta A se configura como entrada
movlw b'00000001'
movwf OPTION_REG ;Preescaler de 4 para el TMR0
bcf STATUS,RP0 ;Selecciona banco 0
movlw b'00100000'
movwf INTCON ;Interrupción TMR0 habilitada
Loop clrwdt ;Refrescar el WDT
movf PORTA,W
andlw b'00000111'
btfss STATUS,Z ;RA0-RA2 = 0 ??
goto Salida_On ;No, salida de frecuencia
bcf INTCON,GIE ;Si, interrupciones OFF, frecuencia OFF
goto Loop
Salida_On call Tabla ;Determina valor a cargar en TMR0
movwf Valor ;Carga la variable
bsf INTCON,GIE ;Interrupciones ON
goto Loop
end ;Fin del programa fuente
5. ;
; EJEMPLO 2.18
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación y/o MicroPIC Trainer
;
;El TMR0 como contador de eventos externos
;
;Un sensor optoelectrónico conectado a RA4 genera un pulso cada vez que un objeto se
;iterpone entre el emisor y el receptor de luz. El TMR0 se encarga de contarlos
;dependiendo del valor del preescaler. Dicho valor se ajusta mediante 3 interruptores
;(RA0-RA2) conectados a la Puerta A, existiendo así 8 pre-divisiones:
;
; I2 I1 I0 División
; -- -- -- --------
; 0 0 0 1:2
; 0 0 1 1:4
; 0 1 0 1:8
; 0 1 1 1:16
; 1 0 0 1:32
; 1 0 1 1:64
; 1 1 0 1:128
; 1 1 1 1:256
;
; El contaje se va visualizando en binario sobre los leds conectado a la Puerta B y
;debe multiplicarse por el valor del preescaler seleccionado, para determinar el número
;total de pulsos. El contador se resetea al poner RA3 a "1". Debe tenerse en cuenta el
;"efecto rebote" que se produce en el interruptor RA4 de la MicroPIC Trainer.
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva vector de interrupción
Inicio clrf PORTB ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw b'00011111'
movwf TRISA ;Puerta A se configura como entrada
movlw b'00110000'
movwf OPTION_REG ;TMR0 contador sensible al descendente de RA4
bcf STATUS,RP0 ;Selecciona banco 0
Loop clrf TMR0 ;Puesta a 0 del contador
Loop1: clrwdt ;Refresca el WDT
btfsc PORTA,3 ;Mira si I3 está activo (RESET)
goto Loop ;Si Cuenta detenida y puesta a 0
movf PORTA,W ;No, leer I2-I0 para formar el nuevo valor
andlw b'00000111' ;del preescaler
bsf STATUS,RP0 ;Selecciona página 1
iorwf OPTION_REG,F ;Actualiza el nuevo valor del preescaler
bcf STATUS,RP0 ;Selecciona página 0
movf TMR0,W ;Lee el valor del contador
movwf PORTB ;Salida a leds
goto Loop1
end ;Fin del programa fuente
;
6. ; EJEMPLO 3.1
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;Ejemplo para MicroPIC Trainer y Trainer PLUS
;
;Introducción al manejo del teclado.
;
;Haciendo uso de las rutinas incluidas en el fichero TECLADO.INC, se trata de leer el tecla-
;do y, visualizar sobre los leds de la puerta B el código binario de la tecla pulsada. La
;visualización se mantiene estable durante dos segundos hasta una nueva pulsación.
;
;Se trata de un ejemplo en el que la Puerta B se reconfigura dinámicamente. Inicialmente es
;configurada como salida para presentación del resultado. Posteriormente, la rutina de
;exploración del teclado reconfigura RB0-RB3 como entradas y RB4-RB7 como salidas.
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
Key_var equ 0x0c ;Inicio de las variables de manejo del teclado
Delay_Cont equ 0x12 ;Variable para la temporización
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva vector de interrupción
include "TECLADO.INC" ;Incluye rutinas de manejo del teclado
;*********************************************************************************
;Delay_var: Esta rutina de propósito general realiza una temporización variable
;entre 50 mS y 12.8". Se emplea un preescaler de 256 y al TMR0 se le carga con 195.
;La velocidad de trabajo es de 4Mhz y por tanto el TMR0 se incrementa cada uS. De
;esta forma, el TMR0 debe contar 195 eventos que, con un preescaler de 256 hace una
;intervalo total de 50000 uS/50 mS (195 * 256). El valor 195 hay que expresarlo
;en Hex. (c3) y como el TMR0 es ascendente habrá que cargar su complemento (3C hex.)
;Dicho intervalo de 50 mS se repite tantes veces como indique la variable "Delay_cont",
;es por ello que el delay mínimo es de 50 mS ("Delay_cont=1) y el máxima de 12.8"
;(Delay_cont=255).
Delay_var: bcf INTCON,T0IF ;Desconecta el flag de rebosamiento
movlw 0x3c ;Complemento hex. de 195
movwf TMR0 ;carga el TMR0
Intervalo clrwdt ;Refrescar el WDT
btfss INTCON,T0IF ;Rebasamiento del TMR0 ??
goto Intervalo ;Todavía no
decfsz Delay_Cont,F ;Decrementa contador de intervalos
goto Delay_var ;Repite el intervalo de 50 mS
return
Inicio clrf PORTB ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw b'00000111'
movwf OPTION_REG ;Preescaler de 256 para el TMR0
bcf STATUS,RP0 ;Selecciona banco 0
Loop clrwdt ;Refresco del WDT
call Key_Scan ;Explora el teclado
movlw 0x80
subwf Tecla,W
btfsc STATUS,Z ;Hay alguna pulsada ??
goto Loop ;No
movf Tecla,W ;Lee el código de la tecla pulsada
movwf PORTB ;Lo visualiza sobre los leds de la Puerta B
movlw .40
7. movwf Delay_Cont
call Delay_var ;Temporiza 2 segundos
clrf PORTB ;Desactiva visualización
goto Loop
end ;Fin del programa fuente
; SEPTIMO2.ASM: Programa que cuenta ininterrumpidamente del 0 al valor
; introducido mediante tres interruptores en RA0, RA1 y RA2.
; Cada 50ms cambia el valor del display.
; Frecuencia del PIC: 4 MHz
LIST P=16C84
RADIX HEX
w EQU 0
f EQU 1
PCL EQU 0x02
PUERTAA EQU 0x05
PUERTAB EQU 0x06
ESTADO EQU 0x03
VALOR EQU 0x12 ; Cota superior del contador
ACTUAL EQU 0x13 ; Valor actual del contaje
TEMP EQU 0x14 ; Variable de temporizaciones
TMR0OPT EQU 0x01
INTCON EQU 0x0B
VALORTMP EQU d'10' ; Valor para la temporizaci¢n
VALORTIMER EQU d'59' ; Valor inicial del TIMER0
; RUTINA PRINCIPAL: Lectura de los interruptores y c lculo del valor a visualizar
ORG 0
goto inicio ; Para saltar el Vector de
; Interrupci¢n
ORG 4 ; Vector de interrupci¢n
goto int ; Interrupci¢n del TIMER0
inicio bsf ESTADO,5 ; Selecci¢n del banco 1
clrw
movwf PUERTAB ; Puerta B salida
movlw 0xff
movwf PUERTAA ; puerta A entrada
bcf ESTADO,5 ; Selecci¢n banco 0
explora movf PUERTAA,w ; Se cargan los
; interruptores en W
movwf VALOR ; Se usa un registro
; auxiliar
comf VALOR,f ; Invertir los niveles de
; interuptores
movlw b'00000111' ; aplicamos una m scara
andwf VALOR,f ; para borrar la parte alta
; en VALOR queda valor superior
; de contaje
clrf ACTUAL ; valor actual de contaje=0
clrf TEMP ; Variable temporizadora=0
; MàDULO CONTADOR -------------------------------------------------------
temporiza clrwdt
bcf ESTADO,5
movf TEMP,f ; Comprueba TEMP
btfss ESTADO,2
goto temporiza ; Si temp <> 0
call visualiza ; Si temp = 0
8. call cargartimer
movlw VALORTMP
movwf TEMP
goto temporiza
; CARGA EL TIMER Y EL PRESCALER-----------------------------------------
cargartimer bcf ESTADO,5
movlw VALORTIMER ; Valor a cargar en el Timer:
movwf TMR0OPT ; 255 - 59 = 196 = Ciclos de contaje
; 196 x 255 = 49980 microsegundos
; A 4Mhz 1 ciclo = 1 microsegundo
; Cada ciclo del TIMER0 son 50ms
bsf ESTADO,5 ; P gina 1
movlw b'10000111' ; Prescaler de 255
movwf TMR0OPT
movlw b'10100000' ; Interrupci¢n por timer0
movwf INTCON
bcf ESTADO,5
return
; TRATAMIENTO DE INTERRUPCIONES ----------------------------------------
int decf TEMP,f
call cargartimer
retfie
; TRATAMIENTO DEL CONTADOR ---------------------------------------------
visualiza bcf ESTADO,5
movfw ACTUAL ; Representa el n£mero actual
call display
movwf PUERTAB ; Incrementa el n£mero
movfw VALOR ; VALOR -> W
subwf ACTUAL,w ; ACTUAL - W ( ACTUAL - VALOR )
btfsc ESTADO,0 ; ¨ACTUAL < VALOR? -> flag C = 0
goto comienzo ; SI: pone a 0 el display
incf ACTUAL,f ; NO: incrementa ACTUAL
return
comienzo clrf ACTUAL
return
; TABLA DE CONVERSION---------------------------------------------------------
display addwf PCL,f ; pcl + W -> W
; El pcl se incrementa con el
; valor de W proporcionando un
; salto
retlw 0x3F ; Retorna con el valor del
; c¢digo del 0
retlw 0x06 ; Retorna con el c¢digo del 1
retlw 0x5b ; Retorna con el c¢digo del 2
retlw 0x4f ; Retorna con el c¢digo del 3
retlw 0x66 ; Retorna con el c¢digo del 4
retlw 0x6d ; Retorna con el c¢digo del 5
retlw 0x7d ; Retorna con el c¢digo del 6
retlw 0x07 ; Retorna con el c¢digo del 7
END
9. ;
; PRACTICA 10
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;
;Otras interrupciones
;
;Los dispositivos PIC pueden provocar interrupción por otras dos causas diferentes además de
;por la del TMR0. Una de ellas es por la detección de una señal de un determinado flanco por
;la entrada RB0/INT. La otra es por el cambio de estado lógico producido en cualquiera de las
;líneas de entrada RB4-RB7.
;
;El ejemplo pretende mostrar la detección y tratamiento de cada una de estas nuevas fuentes de
;interrupción. Cuando se produce la interrupción RB0/INT se activa la salida RA0 durante 1".
;Cuando se produce la interrupción por cambio de estado en RB4-RB7 se activa la salida RA1
;durante 1".
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
Temp equ 0x0c ;Variable para la temporización
org 0x00 ;Vector de Reset
goto Inicio
org 0x04 ;Vector de interrupción
;Programa de tratamiento de la interrupción
Tratamiento btfsc INTCON,INTF ;Ha sido el RB0/INT ??
goto Tratar_INTF ;Si
btfss INTCON,RBIF ;No, ha sido cambio en RB4-RB7 ?
goto Fin_Tratamiento ;No, falsa interrupción
Cambio_RB4_RB7bsf PORTA,1 ;Activa salida RB1
goto Fin
Tratar_INTF bsf PORTA,0 ;Activa salida RB0
;Se hace un delay de 1 segundo antes de reponer los correspondientes flags de interrupción.
;De esta forma se evitan posibles rebotes que puediera haber en las entradas.
Fin movlw .20 ;Comienza una temporización de 1"
movwf Temp ;Inicia una variable temporal
Seguir bcf INTCON,T0IF ;Repone el flag del TMR0
movlw ~.195
movwf TMR0 ;Repone el TMR0 con el complemento de 195
Delay_50mS clrwdt ;Comienza un bucle de temporización de 50mS
btfss INTCON,T0IF ;Fin de los 50 mS ??
goto Delay_50mS ;Todavía no
nop
decfsz Temp,F ;Se ha repetido 20 veces los 50mS ??
goto Seguir ;No
Fin_Tratamiento clrf PORTA ;Si, ha pasado 1". Desconecta las salidas
movf PORTB,W ;Lee estado actual de las entradas RA4-RA7 para reponer
bcf INTCON,RBIF ;el flag de interrupción por cambio en RB4-RB7. Hay que
;hacerlo en este órden
bcf INTCON,INTF ;Repone el flag de interrupción por RBO/INT
retfie ;Retorno de interrupción
Inicio clrf PORTA ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
10. clrf TRISA ;Puerta A se configura como salidas
movlw b'11111111'
movwf TRISB ;Puerta B se configura como entrada
movlw b'01000111' ;Preescaler de 256 asignado al TMR0 y
movwf OPTION_REG ;RB0/INT sensible al flanco ascendente
bcf STATUS,RP0 ;Selecciona banco 0
movf PORTB,W ;Lee el estado inicial de las entradas RB4-RB7
movlw b'10011000'
movwf INTCON ;Activa la interrupcines INTF y RBIF
Loop sleep ;El dispositivo queda en standby
goto Loop
end ;Fin del programa fuente
;
; PRACTICA 8
;
; Autor: Mikel Etxebarria
; (c) Microsystems Engineering (Bilbao)
;
;
;El modo TMR0 como contador de eventos externos
;
;El ejemplo pretende mostrar el funcionamiento del TMR0 en el modo contador. Mediante las
;entradas RA0-RA3 se introduce el número de pulsos a contar. Por RA4 se aplican dichos pulsos
;Cuando se alcance el valor deseado se disparan dos salidas durante un tiempo. La salida RB1 se
;utiliza para desconectar la fuente de entrada de pulsos y RB0 para activar cualquier otro
;dispositivo (p.e. un relé, en led, etc.)
;El WDT se empleará a modo de temporizador para determinar el tiempo de disparo de ambas
;salidas
List p=16F84 ;Tipo de procesador
include "P16F84.INC" ;Definiciones de registros internos
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva vector de interrupción
Inicio clrf PORTB ;Borra los latch de salida
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerta B se configura como salida
movlw b'00011111'
movwf TRISA ;RA0-RA4 entradas
movlw b'00111111'
movwf OPTION_REG ;Preescaler de 256 para el WDT. El TMR0 evoluciona a
;cada flanco descendente aplicado por RA4
bcf STATUS,RP0 ;Selecciona banco 0
Loop movf PORTA,W
andlw b'00001111' ;Lee las entradas RA0-RA3
xorlw b'11111111' ;Complementa el valor leído (el TMR0 es ascendente)
addlw .1
movwf TMR0 ;Carga el TMR0 con el valor leído
bsf PORTB,1 ;Activa la entrada de pulsos a contar
bcf INTCON,T0IF ;Repone el flag del TMR0
Espera clrwdt ;Refresca el WDT
btfss INTCON,T0IF ;Ha finalizado la cuenta ??
goto Espera ;No
11. bcf PORTB,1 ;Desconecta la entrada de pulsos a contar
bsf PORTB,0 ;Activa la salida a relé, led, etc.
clrwdt ;El WDT se refresca y comienza la temporización
sleep ;El modo standby se mantiene hasta que el WDT desborde
;transcurridos aprox. 2" (18mS*256 de preescaler)
bcf PORTB,0 ;Desactiva la salida a relé, led, etc.
goto Loop
end ;Fin del programa fuente