Sei sulla pagina 1di 12

INSTITUTO POLITÉCNIC O

NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA

MECÁNICA Y ELÉCTRICA

MICROPROCESADORES

PRACTICA 7

6CM4

7 / M AY O / 2 0 1 8

J O S E D AV I D J UA R E Z G O M E Z
 OBJETIVOS
1.- Se busca que el alumno identifique y configure el registro TMR0.
2.- También que observe el comportamiento de los ADCON y T0CON.

 MARCO TEÓRICO
El Timer0 se puede utilizar como temporizador/contador de 8bits o 16bits, cuando
trabaja con el reloj interno del pic18f4550 se llama temporizador y cuando trabaja
con pulsos que recibe de forma externa a través del pin RA4/T0CKI trabaja como
contador.
El módulo Temporizador/Contador presenta las siguientes características
 Registro Contador de 8bits o 16bits seleccionable por Software.
 Ambos registros de Lectura/Escritura.
 8 Bits dedicados al Prescaler programable por Software.
 Fuente de Reloj Interno o Externo (Seleccionable por Software).
 Flanco seleccionable del reloj Externo.
 Interrupción por desbordamiento.
OPERACIÓN DEL TIMER0
El timer0 puede operar como temporizador o contador, este modo se selecciona a
través del bit T0CS del registro T0CON. En el modo temporizado, el conteo del
registro TMR0 se incrementa de forma ascendente a cada ciclo de reloj interno
hasta su valor máximo de 255 (0xFF), en este preciso instante el registro se
desborda y se reinicia a 0. Sin embargo, en el modo contador el incremento se
realiza a través de un flanco ascendente o descendente del pin RA4/T0CKI, el
flanco esta determinado por el bit T0SE del registro T0CON. También, se puede
seleccionar un prescaler en cada modo del TIMER0 para poder realizar el
incremento cada 1, 2, 3, 4,… ciclos de reloj, todo esto depende del valor de los
bits PSA y T0PS[2;0] del registro T0CON. Por último, se puede habilitar un evento
de interrupción para cada desbordamiento del TMR0 a través de los
bits TMR0IE y TMR0IF del registro INTCON.

A continuación se describe los PASOS para configurar el Temporizador o Contador


Deshabilitar la Interrupción GLOBAL (para evitar Interrupciones falsas).

 Configurar la Fuente de reloj para el TIMER0 a través del bit


 Configurar el Prescaler a través de los bits T0PS2:T0PS0.
 Seleccionar el flanco de la fuente de Reloj (solo en modo Contador).
 Poner en Marcha el TIMER0 escribiendo en el bit TMR0ON.
 Escribir en los registros TMR0H:TMR0L para configurar el Tiempo de
Interrupción.
 Habilitar la Interrupción por Desbordamiento escribiendo el bit TMR0IE.
 Habilitar la Interrupción GLOBAL (GIE y PEIE).

Para poder calcular el PERIODO de Interrupción por Desbordamiento del TIMER0,


es necesario las siguientes Fórmulas

1.- ENUNCIADO
Elabore el diagrama de flujo y el listado de una rutina que genere intervalos de un milisegundo
empleando el temporizador TMR0.

Elabore el diagrama de flujo y el listado de un programa que lea el puerto PORTB y utilizando la
rutina del TIMER0 elaborada en el punto anterior, genere una onda en la línea RA1 de acuerdo a la
siguiente tabla:

El sistema contemplará la siguiente estructura:


Un programa principal encargado de manejar las siguientes subrutinas:
a) Cpuertos. - para la configuración de puertos, interrupción y el temporizador.
b) LEER. - para la lectura de parámetros de velocidad del motor.
c) PWM. - para la generar la señal PWM haciendo uso de la rutina elaborada

1.- DIAGRAMA DE FLUJO

Programa principal:

Hace el llamado a la subrutina encargada de la


programación de puertos.

Hace llamado a las subrutinas LEER y PWM

Subrutina Cpuertos:

Encargada de la configuración de puertos.

PORTA: cuatro líneas de entrada y cuatro de


salida.
PORTB: ocho líneas de entrada

Subrutina
LEER:

Lee los cuatro bits más significativos del Puerto


PORTB y a partir del dato leído, establece en
los registros RL y RH la cantidad de
milisegundos en estado bajo y en estado alto
para la modulación de ancho de pulso.
Subrutina PWM.
Genera la modulación de ancho de pulso empleando los
valores contenidos en los registros RH y RL para determinar
el tiempo en estado alto y en estado bajo respectivamente.

Hace uso de la subrutina Gtime para mantener los tiempos


en estado alto y estado bajo de la señal durante tiempo
establecido en la variable R6.

Subrutina Gtime

Configura el timer TMR0 para un tiempo de un


milisegundo y genera un ciclo de espera cuya
duración depende del valor almacenado en R6.

Subrutina TMR0

Recibe los parámetros de configuración de


los registros Rth, Rtl y Rtcon.

Rtcon 0x88
Rth 0xd1
Rtl 0x20
2.-DIAGRAMA DEL CIRCUITO

3.-CÓDIGO Y SIMULACIÓN
DIRECCION CODIGO ETIQUETA NEMONICO

001000 INICIO:

001000 EC?? F??? CALL PUERTOS

001004 ETQ

001004 EC?? F??? CALL LEER

001008 EC?? F??? CALL PWM

00100C EF?? F??? GOTO ETQ

001010 PUERTOS

001010 0E0F MOVLW 0X0F

001012 6EC1 MOVWF ADCON1

001014 0E00 MOVLW 0X00


001016 6E92 MOVWF TRISA

001018 0EFF MOVLW 0XFF

00101A 6E93 MOVWF TRISB

00101C 0012 RETURN

00101E LEER

00101E ETQ2

00101E 5081 MOVF PORTB,W

001020 0BF0 ANDLW 0XF0

001022 E1?? BNZ ETQ1

1024 9280 BCF PORTA,1

001026 EF?? F??? GOTO ETQ2

00102A ETQ1

00102A 6E00 MOVWF RH

00102C 3A00 SWAPF RH,1

00102E 5000 MOVF RH,W

001030 0810 SUBLW 0X10

001032 6E01 MOVWF RL

001034 0012 RETURN

001036 PWM

001036 C000 F003 MOVFF RH,R6

00103A 8280 BSF PORTA,1

00103C EC?? F??? CALL GTIME

001040 C001 F003 MOVFF RL,R6

001044 9280 BCF PORTA,1

001046 EC?? F??? CALL GTIME


00104A 0012 RETURN

00104C GTIME

00104C 0E88 MOVLW 0X88

00104E 6E02 MOVWF RTCON

001050 ETQ3

001050 0ED1 MOVLW 0XD1

001052 6E04 MOVWF RTH

001054 0E20 MOVLW 0X20

001056 6E05 MOVWF RTL

001058 EC?? F??? CALL TMR

00105C 0603 DECF R6,1

00105E E1?? BNZ ETQ3

001060 0012 RETURN

001062 TMR

001062 C004 FFD7 MOVFF RTH,TMR0H

001066 C005 FFD6 MOVFF RTL,TMR0L

00106A C002 FFD5 MOVFF RTCON,T0CON

00106E ETQ4

00106E A4F2 BTFSS INTCON,2

001070 EF?? F??? GOTO ETQ4

001074 94F2 BCF INTCON,2

001076 9ED5 BCF T0CON,7

001078 0012 RETURN


SE AGREGARON LAS VENTANAS COMO:
REGISTROS

Aquí se observó cómo se almacenaban las


localidades para almacenar los datos del T0CON
ADCON0, ADRESH Y ADRESL.

Se agregó el watch para observar cómo era el cambio en el registro w e introducir valores
en el ADRESH y ADRESL para su simulación.

CALCULOS 8 BITS

0 1 0 X 0 1 0 1

TMR0ON T08B TOCS TOSE PSA T0PS2 T0PS1 T0PS0

𝟏𝒎𝒔 ∗ 𝟐𝟓𝟔
= 𝟏𝟔𝟐𝒅 ∴ 𝟐𝟓𝟔 − 𝟏𝟔𝟐 = 𝟗𝟒𝒅 𝒄𝒐𝒏𝒗𝒊𝒓𝒕𝒊𝒆𝒏𝒅𝒐 𝒂 𝑯𝒆𝒙𝒂𝒅𝒆𝒄𝒊𝒎𝒂𝒍 𝟓𝑬𝒉
𝟏. 𝟓𝟕𝟒𝒎𝒔
0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0

TMR0H TMR0L
CALCULOS 16 BITS

0 0 0 X 1 X X X

TMR0ON T08B TOCS TOSE PSA T0PS2 T0PS1 T0PS0

𝟏𝒎𝒔 ∗ 𝟔𝟓𝟓𝟑𝟔
= 𝟏𝟐𝟎𝟎𝟐𝒅 ∴ 𝟔𝟓𝟓𝟑𝟔 − 𝟏𝟐𝟎𝟎𝟐
𝟓. 𝟒𝟔𝒎𝒔
= 𝟓𝟑𝟓𝟑𝟒𝒅 𝒄𝒐𝒏𝒗𝒊𝒓𝒕𝒊𝒆𝒏𝒅𝒐 𝒂 𝑯𝒆𝒙𝒂𝒅𝒆𝒄𝒊𝒎𝒂𝒍 𝑫𝟏𝟏𝑬𝒉

1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0

TMR0H TMR0L

Se pasó el programa al microcontrolador con el programa:

Y oprimiendo el botón RB5, enseguida reset


de la placa de desarrollo

Y la conexión física
RESULTADOS

 CONCLUSIÓN
En esta práctica aprendí a configurar el TMR0, así como también a configurar los registros
ADCON0, T0CON TMR0H y TMR0L de tal manera que la interrupción duro 1 ms, y que con
el PUERTO B se controlaba la señal en el PUERTO A y este a su vez modulaba la velocidad
de un motor, y el ADCON0 controlaba las interrupciones internas por desbordamiento u
externas generados por un pulso, mientras que el T0CON se configuro de tal manera que
podía trabajar con el reloj interno del PIC y no uno externo y a una cierta escala
predefinida pudiendo generar el tiempo deseado de 1 ms, y en los registros TMR0H y
TMR0L se ponían las variables que se decrementaran para generar el tiempo deseado.

 BIBLIOGRAFÍA / WEB GRAFÍA


*SISTEMAS DIGITALES: Ingeniería de los microprocesadores 68000
Antonio García Guerra y Enrique Fenoll Comés
Capítulos 4,5 y 6
*Abel, P. (1996). Lenguaje Ensamblador y Programación para IBM PC y Compatibles. Prearson Educación

Potrebbero piacerti anche