Sei sulla pagina 1di 9

m 

     

  






  


  

  

  



 

  
  










1. MEDIANTE EL TIMMER 1 CREAR UNA RUTINA DE 10HZ


PARA ENCENDER Y APAGAR UN LED.

a) Realizar el cálculo para obtener el periodo respectivo

Tciclo = n*m*(4/Fosc)

TMAX = 8*65536(4/Fosc)

Si F=10Hz

TMAX = 1/F

TMAX =1/10hz

TMAX = 0.1 segundos

0.1s = 8*65536*4/Fosc

Fosc=20.9Hz

b) Como configuraría los bits del registro T1CON

Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit7

00011010

6 (control de TMR1), debe configurarse con el valor: XX011010b


donde X puede
ser 1 o 0.

6 Bits 5-4 en 0-1, para que la señal externa de 2 Hz se convierta


a 1 Hz

6 Bit 3 en 1, para habilitar al sistema oscilador.


6 Bit 2 en 0, para sincronizar con el flanco ascendente del
oscilador.

6 Bit 1 en 1, para seleccionar entrada por el pin RC0.

6 Bit 0 en 0, deja en OFF al timmer.

c) Donde se guardan los valores del timmer 1

El Timmer 1 es un módulo temporizador/contador de 16 bits, que


consiste en dos registros de 8 bits (TMR1H y TMR1L) que son de
lectura y escritura. Este módulo incrementa su cuenta desde
0×000 hasta 0xFFFF y al desbordarse vuelve a 0×0000.

d) Elaborar un programa que realice esta rutina en microbasic

program ejrcicio1deber
main:
TRISC=$0
T1CON=%01100000
TMR1H=0
if Tmr1H=50 then
PORTC=1
delay_ms(50)
end if
goto main
end.
¬. REALIZAR UN PROGRAMA PARA QUE CADA VEZ QUE SE
PRESIONE EL PULSANTE SE INCREMENTE EL VALOR NUMÉRICO
EN UN PAR DE DISPLAYS DE 7 SEGMENTOS, QUE EN EL ESTADO
INICIAL SE OBSERVA 00.

æ Como configuraría los bits del registro T1CON.

El pre divisor de frecuencia es un divisor de frecuencia de los impulsos


que se aplican al TMR1.
El rango de división lo eligen los bits TICKPS1 y TICKPS0 según la tabla:

TICKPS1 TICKPS0 RANGO DEL


PREDIVISOR

0 0 1:01

0 1 1:0¬

1 0 1:04

1 1 1:08

Tabla 1: Rango de predivisión.

Cuando los impulsos proceden de un reloj externo, es preciso que el bit


T1OSCEN tenga valor 1, en cuyo caso los pines RC0/T1OSO/TICKI y
RC1/T1OSI/CCP2 actúan como entradas del oscilador externo.
El bit TMR1ON comanda el funcionamiento del timer1. En caso de tener
0 en dicho bit, el TMR1 no trabajaría.
El bit TMR1CS selecciona la fuente de los impulsos de conteo.
Si su valor es igual a cero lógico 0L elige el reloj interno y si su valor es
igual a uno lógico 1L el reloj externo se aplica por los pines RC1 y RCO.
El bit T1SYNC# determina la sincronización o no de los impulsos de reloj
externo con los del reloj interno, según valga 0 o 1 respectivamente,
permitiendo que el funcionamiento del TMR1 sea como contador
síncrono.
Para el programa los bits del registro T1CON se resuelven de la
siguiente manera:

REGISTRO T1CON

TICKPS1 TICKPS0 T1OSCEN T1SYNC# TMR1CS TMR1ON

X X 0 0 1 0 1 1

Tabla 2: Registro T1CON

æ Código del programa

program deber2
dim x,y as byte
dim k as byte
dim I,J as word
x=0
y=0
I=0
k=0
main:
Trisc =$FF
Trisb =$0
trisa =$0
T1CON.TMR1CS = 0 'asigna el reloj interno al timer1, incrementa
T1CON.T1CKPS0 = 0 'factor del preescales del timer1, 0
T1CON.T1CKPS1 = 0 'factor del preescales del timer1, 0
T1CON.TMR1ON = 0 'parado el contador del TMR1
PIE1.TMR1IE = 0 'desactiva las interrupciones del timer1
Intcon= $0
while true
porta= 1
portb = x
delay_us(100)
porta= 2
portb= y
delay_us(100)
inc(I)
if I=2000 then
IF TMR0 <> k THEN
k=TMR0
if k=j then
inc(y)
end if
if y=10 then
y=0
inc(x)
else
if x=10 then
x=0
end if
end if
TMR0=0
end if
end if
I=0
J=0
wend
end.
end.

æ Que debe alterar en el programa para que funcione si se


presiona ¬, 4 u 8 veces respectivamente.

Lo único que se debe cambiar en el programa son los bits del registro
T1CON como se muestra en la primera tabla:

1.-Para dos pulsaciones quedaría TICKPS1=0 y TICKPS0=1.


2.-Para cuatro pulsaciones quedaría TICKPS1=1 y TICKPS0=0.
3.-Para ocho pulsaciones quedaría TICKPS1=1 y TICKPS0=1.

æ Que pin del microcontrolador se usa para ingresar los


pulsos.

Debemos hacer uso del pin RC0.

3. MEDIANTE EL TIMER ¬ CREAR UNA RUTINA 10HZ PARA


ENCENDER
Y APAGAR UN LED

El Timer 2 es un temporizador de 8 bits que tiene la particularidad de tener


un preescalador y un post-escalador. Además este módulo cuenta con un
registro de
periodo PR2 que marca el valor máximo que puede alcanzar la cuenta del
registro TMR2. A diferencia de los otros temporizadores, el temporizador
Timer 2 no
incrementa su cuenta hasta llegar a 0xFF y después al desborde sino que
incrementa su
cuenta desde 0×00 con cada ciclo de instrucción hasta que el valor del
registro TMR2
coincide con el del registro PR2 y después, en el siguiente ciclo reinicia la
cuenta
desde 0×00.
Este módulo cuenta con un preescalador y un post-escalador. El
preescalador tiene la
misma función que en los otros dos timers y sirve como divisor de
frecuencia antes de
cada incremento. El post-escalador funciona como un divisor de frecuencia
después de
cada coincidencia entre los registros TMR2 y PR2. Si el post-escalador es
1:1 la
bandera de interrupción TMR2IF se habilitará en cada coincidencia entre
TMR2 y PR2,
en cambio si por ejemplo el post-escalador es 1:16, la interrupción se
presentará cada 16
coincidencias.
Carga y Temporización
La temporización del Timer 2 está dada por la siguiente expresión:
TempTMR2 = [Preescaler*(PR2+1)*Postscaler]*Tinstr
Donde
Preescaler = Valor del preescalador
PR2 = Valor cargado al registro PR2
Postscaler = Valor del post-escalador
Tinstr = 4/frecuencia de oscilación
TempTMR2 = Temporización dada en segundos
La temporización máxima que puede alcanzar el Timer 2 es la misma que
alcanza el
Timer 0. Utilizando el oscilador interno del pic 16f628 la temporización
máxima sería
de 65536uS.Si se desea otra temporización se puede lograr cargando el
valor necesario
al registro PR2.
PR2 = [([TempTMR2/(4/fosc)])/(Preescaler*Postscaler)]-1
]
a) Que diferencia existe entre prescaler y postscale
Este módulo cuenta con un preescalador y un post-escalador. El
preescalador tiene la
misma función que en los otros dos timers y sirve
como divisor de frecuencia antes de cada incremento. El post-escalador
funciona como
un divisor de frecuencia después de cada coincidencia
entre los registros TMR2 y PR2. Si el post-escalador es 1:1 la bandera de
interrupción
TMR2IF se habilitará en cada coincidencia entre TMR2 y PR2, en cambio si
por
ejemplo el post-escalador es 1:16, la interrupción se presentará cada 16
coincidencias.
Fija cuantas veces debe resetearse el timer antes de provocar una
interrupción.
b) como configurar el registro T¬CON
Registro T2CON
------ TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
Distribución de los bits del registro T2CON
T2CKPS1 y T2CKPS0 sirven para seleccionar el rango de división del
prescaler.
T2CKPS1 T2CKPS0 Rango de Prescaler
0 0 1:1
0 1 1:4
1 x 1:16
El bit TMRON sirve para permitir (1) o prohibir (0) el funcionamiento del
TMR2.
TOUTPS3, TOUTPS2, TOUTPS1 y TOUTPS0 determinan el rango por el que
se
divide la frecuencia dl postscale.
TOUTPS3-
TOUTPS0
Rango de
Postscale
0000 1:1
0001 1:2
«.. 1:3
1111 1:16
c) Donde se guardan los valores del Timer¬
El prescaler y el postscale se ponen en 0 cuando se escribe TMR2, también
al escribir el
T2CON y Reset, sin embargo al escribir en T2CON no se borra el TMR2.
El TMR2 tiene asociado un Registro de Periodo PR2 donde se guarda los
valores que
ocupa la dirección 92h.
El valor de TMR2 vale 0 cuando se produce un reset.
d) Elaborar el programa que realice esta rutina en mikrobasic
program deber
dim a as byte
a=0
main:
TrisC = $FF 'programa de timer2
Trisb = $0 'SALIDA
T2CON = %00000100
TMR2=0
intcon= $0
lazo:
if TMR2= 50 then
PORTB.1=0
else
portb.1=1
end if
goto lazo
END.

4. PUEDE SER UTILIZADO EL TIMER ¬ COMO CONTADOR


EXTERNO,
DEBE EXPLICAR SU RESPUESTA, MÁXIMO 4 LÍNEAS.

EL TIMER 2 NO PUEDE ser utilizado como contador externo puesto que no


tiene
ningún pin asignado a esta función.
Las señal de reloj del timer 2 es interna Fosc/4, y antes de ser aplicada
pasa por un
predivisor de frecuencia con rangos de división desde 1:1, 1:4 y
1:16pasando por los 16
valores posibles.

CONCLUSIONES
El timer1 puede utilizarse como un contador y como temporizador esto se
lo hace
escribiendo en la palabra de registro T1CON donde se configura cada uno
de los bits
según como queramos utilizarlo. El preescalador tiene la misma función
como divisor
de frecuencia antes de cada incremento.
El Timer2 no es un contador externo.

BIBLIOGRAFÍA
- www.datasheet.com "Datasheet micro 16f877A"
-
http://www.eng.uwi.tt/depts/elec/staff/feisal/ee33a/resources/peripherals.
pdf




Potrebbero piacerti anche