Está en la página 1de 19

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

LABORATORIO N 3 TEMPORIZADOR Y CONTADOR DEL PIC 16F84 1.- Objetivo a) Introducir al alumno en el estudio, programacin y diseo de temporizadores y contadores2.- Fundamento terico La figura que sigue se muestra el temporizador (TMR0) y el temporizador perro guardin (WDT) en diagrama de bloques. Al pi de la figura (en amarillo) los bits relacionados, de cada registro que afecta el ajuste de los temporizadores.

El Preescaler que, est en el centro de la figura, puede ser usado por el TMR0 o por el WDT. La figura anterior muestra el preescaler conectado a TMR0. El bit PSA (bit 3) del OPTION_REG determina a cual de los dos es conectado el preescaler. El preescaler es un contador programable cuyo rango es determinado por los bits PS0, PS1, PS2 (bits 0, 1 y 2) de OPTION_REG. TMR0 es un contador binario de 8 bit que

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

puede contar hasta 256. Cuando el contador rebasa la cuenta de 255 (FFh) a 0 (00h) ocurre una interrupcin por desbordamiento y el bit T0IF (bit 2) del registro INTCON es puesto a 1. El hardware est diseado tal que cuando ambos el GIE (bit 7) y TOIE (bit 5) del registro INTCON son H ("1") la interrupcin ocurre y el PC (program counter) va la direccin 004h, para comenzar la operacin de programa. Una cuenta 256 de TMR0, a veces es corta. Por ejemplo, cuando el reloj interno es 20MHz, la frecuencia de entrada del contador es 5MHz. (Fosc/4). El perodo de este pulso de reloj es de 200ns (1 / 5Mhz = 0.2 s.). Para desbordar el TMR0 se necesitan 0.2 s. x 256 (51.2 s.). Entonces para ampliar este perodo se usa el preescaler. El preescaler se puede usar para dividir la entrada por 2, 4, 8, 16, 32, 64, 128, o 256. Por ejemplo, cuando el preescaler es puesto para dividir por 2, hay 1 pulso de salida por cada 2 pulsos de entrada al preescaler. Si ponemos a 256, habr 1 pulso de salida por cada 256 pulsos entrada. As que, el tiempo de desbordamiento de TMR0 se puede hacer ms largo modificando el valor del preescaler. En el ejemplo anterior cuando el preescaler fue puesto a 256, el tiempo de desbordamiento se hizo 51.2 s. x 256 = 13,107.2 s. (aproximadamente 13 milisegundos). La entrada al temporizador (TMR0) puede ser un reloj externo o el reloj interno. Para usar el reloj externo, el bit T0CS (bit 6) del registro OPTION_REG y bit 4 del registro TRISA debe ser puesto a "1". Esto pondr el pin RA4/T0CKI en el modo entrada de reloj (TMR0 CLOCK IN). El borde de las transiciones de subida o de cada del pulso de reloj, tambin, se pueden seleccionar por el bit T0SE (bit 5) del registro OPTION_REG. As, "0" para el borde creciente y "1" para el borde de cada. En la entrada al temporizador (TMR0) hay un circuito de sincronizacin de reloj. Usando un reloj externo, el conteo del borde de subida y cada de reloj no se sincronizar con el reloj interno, esto afectara la sincronizacin de la interrupcin. Dicho circuito sincroniza la entrada de escritura de TMR0 con el reloj interno. La sincronizacin se alcanza en un mximo de 2 ciclos.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

El oscilador del Temporizador Perro Guardin (WDT) es independiente del reloj de la CPU. La interrupcin WDT se produce aproximadamente cada 18 ms. Generalmente, para prevenir un tiempo mayor de la condicin del WDT debe ser reiniciado de vez en cuando va software, usando la instruccin CLRWDT. Ver imagen de la derecha. Si el Temporizador no es reiniciado antes de la interrupcin, la CPU forzar un reinicio a la posicin de direccin inmediatamente despus del encendido (Power up). El preescaler puede ser usado para ampliar el perodo de interrupcin. En este caso, los valores de contador son diferentes del TMR0. El preescaler puede ser puesto a uno de los ocho valores 1, 2, 4, 8, 16, 32, 64 o 128. Cuando se pone a 128, la interrupcin es aproximadamente 2 segundos (18msec x 128 = 2,304msec). La funcin del temporizador perro guardin (WDT) debe prevenir una operacin incorrecta del software. (Ej.: Ejecutar instrucciones que no son parte del programa. Lazo: Ejecutar la misma parte repetidamente). La funcin WDT no es siempre necesaria. Si hay un error en el programa, por lo general, puede reconocerse que hay un mal funcionamiento por el modo en el que ste se desarrolla (esto, no se realiza del modo que se esperaba). Si el WDT reinicia el PIC, no se puede ser capaz de entender, que hizo que, el programa funcionara mal.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

El registro TMR0. Los PICs poseen un registro llamado TMRO, es un temporizador -contador de 8 bits. El registro TMR0 es un temporizador especial del mdulo Timer0. El mdulo Timer0, tiene las caractersticas que se indican a continuacin: Temporizador/contador de 8 bit Capacidad de Lectura/Escritura Software de 8 bits con Preescaler programable Seleccin de Reloj Interno o externo Interrupcin por desbordamiento (al pasar de) FFH a 00H Seleccin del Borde (de subida o bajada) para el reloj externo El registro TMR0, es un temporizador especial del mdulo Timer0, es decir, es un contador de 8 bits cuyo contenido, se incrementa con una frecuencia constante en cada oscilacin de su seal de reloj Ftmr0 programable por hardware. Por su estructura de 8 bits, el mximo de la cuenta est en 256 (podemos contar hasta 2 8 = 256 valores, entre 0 y 255). Este registro TMR0, tambin puede usarse de modo que, permita contar eventos externos, segn el valor del bit 5 (TOCS) del registro OPTION. Si este bit 5 est a 1, TMR0 cuenta pulsos de entrada por RA4 y se le llama Contador, por el contrario, si el bit 5 est a 0, TMR0 (como ya se ha descrito ms arriba) cuenta pulsos internos de reloj de frecuencia constante (en modo temporizador) y se le llama Timer. Si nos interesa, se puede insertar un divisor de frecuencia programable (preescaler). Como se ha dicho, este divisor puede ser utilizado indistintamente como preescaler del TMR0 o como postscaler del WDT (Watch Dog Timer), segn lo programemos por software. A diferencia de otros registros, el valor que contiene el registro TMR0 se incrementa continuamente. De modo que, si asignamos el valor 10, despus de un ciclo de instruccin, el contenido del registro comienza a ser incrementado a 11, 12, 13 y as

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

sucesivamente con una cadencia constante y totalmente independiente de la ejecucin del resto del programa. Una vez alcanzado el valor 255, en la cuenta siguiente, se desborda el registro TMR0, es decir, es puesto a cero automticamente, cuando pasa de FFh a 00h, comenzando entonces a contar nuevamente desde cero y no desde el valor originalmente cargado. Adems, en el momento de pasar por cero, se activa la bandera TOIF, bit 2 del registro INTCON por desbordamiento del TMR0, generndose la interrupcin, slo si el Control Global de Interrupciones est activado GIE = 1, INTCON bit 7. La frecuencia de conteo es directamente proporcional a la frecuencia de reloj aplicada al dispositivo que, como se ha dicho, puede ser modificada, programando adecuadamente los bits de configuracin del preescaler. La primera figura, es un diagrama simplificado de los bloques del mdulo Timer0 y preescaler. La informacin adicional est disponible en el "Manual de Referencia de la Familia PIC de Gama Media MCU" (DS33023).

La tabla anterior debe despejar las posibles dudas al principiante, respecto del registro TMR0 y el mdulo Timer0. El registro TMR0 est localizado en la direccin 01h y el mdulo Timer0, es un mdulo que tiene asociados los registros TMR0, OPTION_REG, TRISA e INTCON, como muestra la tabla. En los PIC's de gama media, el mdulo Timer0 es un mdulo interno de los micros y el registro TMR0, como ya se ha mencionado, es un registro de 8 bits que interviene en las operaciones de interrupciones producidas por el mdulo Timer0 que veremos con detalle.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

El mdulo Timer0. El mdulo Timer0 es un dispositivo que como se ha descrito (ver imagen), puede funcionar de dos formas: como contador de pulsos externos o como temporizador para calcular intervalos de tiempo. El denominado mdulo Timer0 en las hojas de datos (descrito ms arriba), es un Temporizador/Contador de 8 bits habitual en los microcontroladores PIC16F84 (en otros modelos, es posible encontrar mdulos adicionales de 8 16 bits cuyo funcionamiento bsico, es el mismo). Antes de explicar el funcionamiento y uso con ejemplos del Timer0, para evitar confusiones, debemos definir los tres conceptos siguientes:

Frecuencia de oscilacin (Fosc): Es la frecuencia externa del PIC (mediante un cristal de cuarzo, un resonador, etc.).

Frecuencia interna (Fint): Es la frecuencia del reloj interno de instrucciones, generada a partir de la frecuencia de oscilacin externa.

Frecuencia TMR0 (Ftmr0): Es la frecuencia constante, despus del preescaler, a la entrada del TMR0.

Nota.- En los microcontroladores PIC, la frecuencia Fint difiere de la frecuencia Fosc, ya que para mantener la compatibilidad con los diseos originales es necesario dividirla por cuatro. El tiempo empleado en una temporizacin se puede calcular a partir de un ciclo de instruccin (es decir, si estamos trabajando con un XT de 4 Mhz, es una instruccin por cada microsegundo, 1s), segn la formula:

Cuando los pulsos provengan del reloj interno (Fint), el Timer0 se utilizar para

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

generar interrupciones peridicas mediante una cuenta programada. Puesto que conocemos la frecuencia de funcionamiento y en base a un valor que cargaremos en el contador del timer TMR0 podremos temporizar eventos. Cuando dicha seal provenga de una fuente externa (patilla RA4/T0CKI) del microcontrolador (Fext), es especialmente til para contar el nmero de pulsos que dicha seal genera en el tiempo ya que cada pulso de dicha seal incrementa el valor del TMR0. El esquema simplificado del Timer0, se puede ver en la figura que sigue:

El Timer0, usado como temporizador, puede contar perodos de tiempo exactos, acumulndolos en un registro auxiliar, cada vez que ocurra un pulso de entrada podemos consultar el registro auxiliar y comparar el incremento acumulado desde el anterior pulso. Conocidos los perodos, podemos calcular el tiempo transcurrido. Adems como se describi ms arriba, de las dos formas de reloj descritas, tambin podemos configurar que el disparo de la seal, sea por flanco ascendente o descendente. Esto lo podemos realizar con los siguientes bits de control:

T0SC (Timer0 Select Clock) (bit5) del registro OPTION: Indica el origen del reloj del contador, oscilador interno (1) o seal externa (0).

T0SE (Timer0 Set Edge) (bit4) del registro OPTION: Cuando se selecciona seal externa, indica el flanco activo que se usar (1 ascendente; 0 descendente).

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

El preescaler. Un circuito adicional en el Timer0, es el preescaler, este circuito, nos permite modificar la frecuencia del reloj de entrada del Timer0, dividiendo sta y generando una nueva seal de menor frecuencia a su salida que, ser la seal de reloj (Ftmr0) de entrada al registro TMR0. El preescaler, es una ayuda para cuando la seal de entrada es una frecuencia demasiado alta para nuestros propsitos y necesitamos reducirla. El preescaler es un divisor de frecuencia programable que, se utiliza normalmente para lograr tiempos largos y se puede aplicar al TMR0 o al WDT, esto se configura en el bit PSA (bit3) del registro OPTION. Para configurar el preescaler del registro TMR0, como veremos en la siguiente seccin, usaremos 4 bits del registro OPTION, el PSA y tres bits que nos permiten dividir la frecuencia de una seal de entrada por 2, 4, 8, 16, 32, 64, 128 o 256. En caso de utilizar un divisor por 1, la seal de salida es la de entrada sin ningn cambio. Por ejemplo, si usamos como oscilador externo del PIC un cristal de 4Mhz, entonces el reloj interno de instrucciones funciona a

Fint = 4Mhz /4 = 1 Mhz = 1 s.

Si el Timer0 usa la seal del reloj interno y la pasamos por el preescaler configurado para una divisin por 4, la seal a la salida del preescaler ser Fpresc = 250 Khz. La configuracin se realiza con los siguientes bits de control:

PSA (Post Scaler Assignament) (bit3) del registro OPTION: Indica si el postscaler es asignado "1" al WDT o "0" al Timer0.

PS2:0 (bit2:0) del registro OPTION: Indican el valor del divisor a utilizar en el postscaler (consultar tabla para los valores).

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

Nota de Microchip: Al alimentar el PIC o despus de un overflow por WDT, el postscaler esta asignado al WDT. Si se asigna el postscaler al Timer0, es posible que ocurra un reset por el WDT (incluso aun deshabilitado). Por esto se recomienda usar CLRWDT antes de reasignar el postscaler: clrwdt ;borra postscaler y WDT ;reloj externo por flanco de caida ;preescaler 1:4 asignado al Timer0 Registro OPTION

movlw b'11110001'

movwf OPTION_REG

Para el clculo del divisor de frecuencia en PS2 - PS1 - PS0, usaremos la tabla siguiente:

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

Aprovechamos este punto para insertar la tabla de los registros pertenecientes a INTCON, ya que nos ayudarn a comprender mejor los Bits implicados en el proceso de temporizadores con el TMR0.

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

Temporizaciones con TMR0. Veamos en la practica, como hacer una temporizacin con el registro TMR0. Por lo descrito, el tiempo empleado en una temporizacin se puede calcular a partir de un ciclo de instruccin, es decir, si usamos un XT de 4 Mhz, 1 instruccin por cada microsegundo, necesitaremos el valor del divisor de frecuencia (el que se selecciona con los bit's PS2, PS1 y PS0) y tambin el complemento del valor cargado en TMR0 (es decir 255 - TMR0), la ecuacin que nos permite realizar el clculo es la que siguiente: Temporizacin = Ciclo de instruccin * (255-TMR0) * Divisor de Frecuencia [1]

Generalizando: Retardo = 4 * Tosc (s) * (256 - Valor cargado en TMR0) * (Rango del preescaler) . . . . [2] 1) Supngase que necesitamos una temporizacin de 1s (1000 milisegundos), si usamos un cristal XT de 4 Mhz y a dems como divisor de frecuencia seleccionamos 8 (los bits PS2, PS1, PS0 = 0, 1, 0). Sabemos que, 1 seg. = 1000 ms = 1000000 s y como 1 ciclos/s es el tiempo empleado en ejecutarse una instruccin, aplicando la ecuacin anterior, tenemos: 255 - TMR0 = Temporizacin (en microsegundos) / (1 ciclo/S * Div. de Frec.)

que sustituyendo:

255-TMR0 = 1000000 s/(1 ciclo/s * 8)

255-TMR0 = 1000000 /(8 ciclos) 255-TMR0 = 125000 ciclos 255-TMR0~= 125 ciclos Por lo tanto TMR0 se debe cargar con: 255 - TMR0 = 125, que despejando nos proporciona el valor de TMR0 = 255 - 125 = 130 (82h). El valor que se debe cargar en TMR0 es 82h. Entonces empezar a contar los 130

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

ciclos necesarios para desbordarse, produciendo as la interrupcin. El tiempo empleado es el previsto, 1000000s = 1s.

2) Calculemos en este caso, el mximo retraso que es posible obtener con el mdulo Timer0, usando la seal interna de reloj de un PIC genrico que usa un cristal de 4 Mhz. El mayor retraso se puede obtener con el mayor divisor del preescaler 256 (PSA2,1,0 = 111), un valor 0 para el TMR0 (contar desde 0 a 255 antes del desbordamiento, es decir, 256 incrementos). Como Fosc= 4 Mhz el retraso mximo es: Retardo - TMR0 = (256 * 256) * (4/ 4 Mhz) = 65,566 ms 3) En esta ocasin, utilizando el mdulo Timer0 vamos a crear una funcin que genere un retardo de un milisegundo, el cual incrementa un contador cuyo valor se muestra por el PORTC de un PIC16F877. Ahora, veamos como realizar una funcin de retardo. Debemos tener en cuenta que el reloj es de 20 Mhz, entonces segn la formula [2], 1 (20x10^6) = 0.05 s ; los ciclos para hacer 1 ms

1 ms = x * 0.05

; y despejando x

x= 1000 / 0.05 = 20.000 ciclos. Por lo tanto, necesitamos 20.000 ciclos para hacer 1 ms. Si, cada instruccin toma 4 ciclos en realizarse, las instrucciones que necesitamos son: 20.000/4 = 5.000 instrucciones para tener nuestro retardo de 1 ms (en el caso de contar ciclos de

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

instruccin en lugar de los pulsos en RA4). Un ciclo de instruccin = 4 * Fosc

Que, multiplicado por un numero X, obtendremos que, Retardo = Un ciclo de instruccin * X Retardo_R = 4 * Fosc * TMR0 Segn esta expresin, debemos considerar que el tiempo mximo sera: luego:

Retardo_R = 4 * Fosc * 256 tendramos: 256 s.

Ahora si tenemos un clock de 4MHz conectado al PIC

Adems sabemos que el modulo timer 0 posee un preescaler que servira para amplia el retardo. Si lo usamos debemos configurar el bit PSA a 0 . Si seteamos el bit PS2, PS1 y PS0 a 1 el preescaler tendra un valor de 256. Retardo_T0_Pre = 4 * Tosc * TMR0 * Preescaler.

Retardo_T0_Pre = 4.0.25 s * 256 * 256 = 65536 s = 65.536 ms Con esto no alcanzamos a generar un segundo. Sin embargo podemos usar un registro que sirva para efectuar varios bucles. En tal caso, podramos lograr retardos mayores: Retardo = Bucle * Retardo_T0_Pre

Retardo = Bucle * 65,536 ms 1000 ms = Bucle * 65,536

; Como el Retardo debe ser 1segundo ;Bucle = 15.25

Como vemos generar el retardo es bastante fcil teniendo en cuenta que hemos de

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

definir una rutina que se encargue de comparar o contar las veces que el TMR0 produce los desbordes hasta llegar a 256 cuentas. Resumiendo Sabemos que, la bandera T0IF del registro INTCON (bit2) que se pone a 1 siempre que hay un desborde en el Registro TMR0 es decir cuando pasa de 255 a 0. Esta bandera puede servir nuestros intereses ya que una vez producido el desborde el bit T0IF permanece en "1" y es necesario que lo pongamos a "0". Otro punto importante a recordar es que, debemos cargar el TMR0 con el valor apropiado para conseguir el retardo deseado. Supongamos que se necesita un retardo de 10 us. Entonces nuestro algoritmo sera: T0IF = 0 Poner (256 - 246) 10 en el registro TMR0 Comprobar cuando T0IF sea 1 Se ha cargado el TMR0 con 10 ciclos de instruccin (10 s), lo que supone 10 cuentas de desbordamiento del TMR0, porque 10 cuentas = 1 T0IF. La que sigue podra ser una formula para el clculo del retardo que necesitamos: Retardo = Ciclo_instruccin * Valor_TMR0 * Valor_Preescaler * Bucle

Esto nos indica que puede haber otras soluciones. Segn lo descrito, el registro OPTION_REG debera configurarse as: OPTION_REG = 1100 0110 ;

Esto se puede traducir como: MSB 1 Todas las resistencias de carga (Pull up) desconectadas 1 Flanco para la interrupcin ascendente 0 Pulsos de reloj interno Fosc/4

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

0 Cada flanco ascendente incrementa TMR0 0 Divisor de frecuencia se asigna al TMR0 1 \ 1 LSB 0 / } Valor del preescaler = 128

El programa que cumpla lo considerado, puede ser el siguiente: list p=16f84 ;Comando que indica el Pic usado

include "p16f84.inc" ;Etiquetas genricas para el Pic16F84

CONTA EQU 0x20

;Variable CONTA en direccin 0x20 hexadecimal

ORG 0x00

;Inicio del programa en la posicin cero de memoria

inicio: BSF STATUS,RP0 BCF STATUS,RP1 ;Ir banco 1

CLRF TRISA

;PORTA salida

MOVLW b'11000110'

;Configuracin del modulo TMR0

MOVWF OPTION_REG ;Preescaler = 128

BCF STATUS,RP0 BCF STATUS,RP1 CLRF PORTC

;Ir banco 0

;PORTC = 0

bucle: CALL retardo INCF PORTC,F ;Llama la rutina de retardo ;Incrementa el valor del PORTC

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

GOTO bucle

;Ir bucle

retardo: MOVLW d'64' MOVWF CONTA

;T = 4 * Tosc * Valor de TMR0 * Preescaler ;Cargar el valor de CONTA para 1 segundo

espera1: CLRF INTCON MOVLW d'134' MOVWF TMR0 ;Deshabilitar interrupciones ;Cargar el valor de TMR0 para 122 cuentas ;(Complemento)

espera: BTFSS INTCON,T0IF GOTO espera DECFSZ CONTA,F GOTO espera1 RETURN ;Decrementar el registro CONTA hasta cero ;Si no es cero: ir a espera1 ;retorno de call ;Esperar desborde del TMR0

END

3. PRACTICA EN LABORATORIO Horario 8:30 10:00 a) Realizar un programa para cronometrar la vuelta que da un auto de carrera el tiempo se deber visualizar en minutos, segundos y decimas de segundo, mediante 6 displays de 7 segmentos. b) Realizar un programa para contar 24 chocolates enviando una seal para que una maquina encajonadora cierre el cajn con los 24 chocolates. Desplegar en displays de 7 segmentos. c) Realizar un programa para visualizar en un odmetro el conteo de 0 a 8000

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

rpm de un motor de corriente continua. Visualizar en displays de 7 segmentos. d) Realizar un temporizador programable con retardo a la desconexin de 0 a 60 segundos mediante la seleccin de 6 bits. Se deber visualizar la temporizacin en displays de siete segmentos. e) Realizar un programa para visualizar en displays de siete segmentos un contador para un juego de futboln. Se debe introducir primero una ficha y apretar un boton de inicio de juego, los jugadores recibiran 5 pelotas, una vez empezado el juego y luego de recibir la suma de 5 pelotas en cualquier arco, el sistema deber totalizar la cantidad de puntos obtenidos por cada jugador. Y desplegar con un sealizador

intermitente de 1000 mseg. al ganador del juego hasta introducir otra ficha. f) Realizar un programa para un decodificador hexadecimal de seis dgitos sin usar circuitos de mediana escala de integracin. Los nmeros sern visualizados en displays de siete segmentos. El tiempo de conteo ser de 500 mseg. g) En una fabrica de pernos, se necesita contar 100 pernos de una tolva de menos de 10 segundos, el alimentador posee un sensor

alimentacin en

fotoelctrico de alta velocidad que se encarga de realizar el conteo. Realizar un programa para que enve una seal cuando termine de contar los 100 pernos, el conteo ser visualizado por medio de displays y los diez segundos por medio de un led. h) Realizar un programa para monitorear una carrera de perros, el tiempo record por una vuelta esta comprendida en 90 segundos, el sistema debe accionar una cmara ultra rpida cuando un sensor de color blanco detecte a la liebre, 10 metros antes de que llegue a la meta, de tal forma que en 10 segundos debe tomar 30 fotos instantneas para determinar los puestos de llegada de los perros. Visualizar el conteo de los segundos y el flasheo de la cmara fotogrfica en un osciloscopio virtual. i) Realizar un programa para una maquina contadora de agujas, la cual funciona cuando un sensor detecta al menos 100 agujas en el sistema de alimentacion, la maquina podr contar hasta 9999 agujas, mximo. j) Realizar un programa para contar en un tablero electrnico de volley ball los a una velocidad de 10 segundos como

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

puntos

obtenidos por cada equipo, el programa debe incluir un pulsador para los

puntos simples, por cada equipo. Y una bocina para indicar que cada set termin. Horario 10:30 12:00

a)

Realizar el conteo de 4 digitos hasta 8000, el conteo se har cada 10 unidades en intervalos de 50 milisegundos, cuando llegue a 7700 deber enviar una seal intemitente, indicando que se va a completar el conteo.

b)

Un sensor

detecta el desplazamiento angular que tiene

una bobina de

aluminio de 100 cms. de radio, la cual gira a 10 rpm. Calcular y visualizar en displays de siete segmentos, la longitud en metros de la bobina desenrollada cada segundo. c) Realizar un programa para generar a la salida del microcontrolador una

onda triangular a una frecuencia de 45 Hz. La frecuencia se visualizar en un osciloscopio. d) Realizar un programa para contar en un tablero electrnico de basketball los puntos obtenidos por cada equipo, el programa debe incluir puntos simples y

dobles, los cuales sern accionados por dos pulsadores individuales, por cada equipo. e) Realizar un programa para una maquina contadora de billetes, la cual funciona cuando tiene al menos el peso de 4 billetes para contar, la cual detecta en forma binaria, la maquina podr contar hasta 9999 billetes a una velocidad de 7

segundos como mximo. f) Realizar un programa para controlar el tiempo de 1 minuto que se le da 4 concursantes para que puedan responder la pregunta formulada, en la cual el jurado podr habilitar mediante cuatro canales el tiempo para su respuesta, la seleccin de canales se har solo una vez y dirigido a un solo concursante, el tiempo de descuento se visualizara en displays descontando los segundos hasta llegar a cero, en la cual de cuatro focos, solo un foco de 220V indicara que el concursante escogido deber responder. g) Realizar un programa para monitorear una carrera de perros, el tiempo

UNIVERSIDAD TECNICA DE ORURO FACULTAD NACIONAL DE INGENIERIA CARRERA: INGENIERIA ELECTRICA ELECTRONICA LABORATORIO DE MICROPROCESADORES (ELT 3912) _____________________________________________________________________________

record por una vuelta esta comprendida en 120 segundos, el sistema debe accionar una cmara ultra rpida cuando un sensor de color blanco detecte a la liebre, 10 metros antes de que llegue a la meta, de tal forma que en 10 segundos debe tomar 30 fotos instantneas para determinar los puestos de llegada de los perros. Visualizar el conteo de los segundos y el flasheo de la cmara fotogrfica en un osciloscopio virtual. h) Realizar un programa para contar en 1 minuto la mayor cantidad de peces que entran a un estanque, suponiendo que cada pez nada a una frecuencia de 3 Hz, pasado el minuto una exclusa se cierra automticamente durante 5 segundos para evacuar a los peces a otro lugar y luego se inicia nuevamente el ciclo, el conteo se visualizara en displays y pasado el minuto se accionar una alarma para cerrar la exclusa. i) Realizar un programa para visualizar el conteo de una bandada de patos, mediante un sensor fotoelctrico de alta velocidad, los cuales salen de un caadn uno por uno a una velocidad de 7 mseg, por lo menos en la bandada existen 1200 patos. j) Realizar un programa para una maquina contadora de granos de soya, la cual cuenta hasta 999.999 granos a una velocidad de 30 segundos.

También podría gustarte