Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NACIONAL
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.
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:
Programa principal:
Subrutina Cpuertos:
Subrutina
LEER:
Subrutina Gtime
Subrutina TMR0
Rtcon 0x88
Rth 0xd1
Rtl 0x20
2.-DIAGRAMA DEL CIRCUITO
3.-CÓDIGO Y SIMULACIÓN
DIRECCION CODIGO ETIQUETA NEMONICO
001000 INICIO:
001004 ETQ
001010 PUERTOS
00101E LEER
00101E ETQ2
00102A ETQ1
001036 PWM
00104C GTIME
001050 ETQ3
001062 TMR
00106E ETQ4
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
𝟏𝒎𝒔 ∗ 𝟐𝟓𝟔
= 𝟏𝟔𝟐𝒅 ∴ 𝟐𝟓𝟔 − 𝟏𝟔𝟐 = 𝟗𝟒𝒅 𝒄𝒐𝒏𝒗𝒊𝒓𝒕𝒊𝒆𝒏𝒅𝒐 𝒂 𝑯𝒆𝒙𝒂𝒅𝒆𝒄𝒊𝒎𝒂𝒍 𝟓𝑬𝒉
𝟏. 𝟓𝟕𝟒𝒎𝒔
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
𝟏𝒎𝒔 ∗ 𝟔𝟓𝟓𝟑𝟔
= 𝟏𝟐𝟎𝟎𝟐𝒅 ∴ 𝟔𝟓𝟓𝟑𝟔 − 𝟏𝟐𝟎𝟎𝟐
𝟓. 𝟒𝟔𝒎𝒔
= 𝟓𝟑𝟓𝟑𝟒𝒅 𝒄𝒐𝒏𝒗𝒊𝒓𝒕𝒊𝒆𝒏𝒅𝒐 𝒂 𝑯𝒆𝒙𝒂𝒅𝒆𝒄𝒊𝒎𝒂𝒍 𝑫𝟏𝟏𝑬𝒉
1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0
TMR0H TMR0L
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.