Está en la página 1de 8

13/11/2016

Timer1PICMICROCONTROLADORES

MICROCONTROLADORES
ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

InicioTimer1PIC

Timer1PIC
Compartir:

Enestecasoseverelusodeltimer1PICcomocontadorycomotemporizador,
enloquesiguesecomentarparaelcasodelPIC16F877Aporloqueesmuy
importante que se tenga a mano la hoja de datos del PIC16F877A, para el
caso de utilizar algn otro microcontrolador PIC el procedimiento ser muy
similaraloaqucomentado,laprogramacinserealizarconelXC8.
El timer1 PIC es un temporizador contador de 16 bits, el registro TMR1 es el
temporizador contador timer1 PIC en si, es donde se guardan los valores del
timer1PIC,cuandoesutilizadocomotemporizador,susvaloresaumentarande
unoenunoentre0y65535concada4ciclosdereloj,noolvidarquecadaciclo
de instruccin del microcontrolador PIC es realizado en 4 ciclos de reloj, por
ejemplosielosciladorconelqueestfuncionandoelmicrocontroladorPICes
de 4MHz, entonces el registro TMR1 aumentar en una unidad cada 1us, si el
registro TMR1 se incrementa en 100 unidades habrn transcurrido
100us cuando es utilizado como contador el temporizador timer1 PIC ya no
aumenta su valor de uno en uno en cada 4 ciclos de reloj, sino que lo har
medianteelflancodesubidaoelflancodebajadadealgunasealquelleguea
unpinespecialdelPICconectadoaltimer1PIC,estepinesidentificadocomo
T1CKIqueenelPIC16F877Aeselpin15oRC0,estopuedevariardeacuerdo
almicrocontroladorPICutilizado,perosiempresellamarT1CKI.

Convirtase
en
distrituidor
Zettabox

Vendiendo
nuestros
servicioscloud
ganarhastaun
20%de
comisinpor
vent

ElregistroTMR1deltimer1PICpuedeserledoyescrito,puedeserprescaladoparaqueeltiempoensuincrementodevalorenunaunidadsea
mayor,eltimer1PICcuandoalcanzasuvalormximode65535sereinicia,volviendoaincrementarsusvaloresde0a65535,ademscuando
llegaasuvalormximoysereiniciapuedeproducirunainterrupcin,locualsedecideporprograma.

Timer1AVRcomocontador
ParaelPIC16F877AelregistroTMR1deltimer1PICestformadopor16bitsporloquesepuedecontardesde0hasta65535,alutilizartimer1
PIC como contador este no aumentar sus valores o su cuenta con cada ciclo de instruccin, en este caso el timer1 estar conectado al pin
T1CKIpordondeseleharllegarunaseal,lacualalcambiardeestadodeunbajoaunalto,estoesporflancodesubida,harqueeltimer1
PICseincrementeenunaunidad,estosincrementosensucuentasernsiempreporcadaflancodesubida,porejemplocadavezquelasealque
llegaalpinT1CKIpasedeunbajoaunaltoode0a1,elregistroTMR1aumentarenunaunidad,deestamaneraselepuedeutilizarcomo
contador,cuandolasealpasedeunaltoaunbajoode1a0elregistroTMR1noaumentarsuvaloronoseincrementar.
LaprogramacindelTimer1PICcomocontadorsehacemedianteelbit1oelbitTMR1CSdelregistroT1CON.

PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

1/8

13/11/2016

Timer1PICMICROCONTROLADORES

Losbits7y6noseutilizanporloqueselesponea0.

MICROCONTROLADORES

Losbits5y4sonparaelegirunprescaler,mediantelascombinacionesdeestosbitssepuedenelegirlosprescaler1,2,4u8.

ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO
Elbit3esparacuandosequiereconectarunosciladorindependientealtimer1PIC,esteociladorsedebecolocarentreelpinT1OSO(pin15)yel
pinT1OSI(pin16)paraestohayqueponerestebita1.


Elbit2esparahacerqueeltimer1PICcuandoesprogramadocomocontadortrabajeenformasincronizadaconelsistemainternodelpic.
Elbit1(TMR1CS),conestebitseeligesieltimer1PICserutilizadocomocontadorocomotemporizador,alponerestebita1TMR1CS=1se
elige la opcin de utilizar el timer1 PIC como contador, al ponerlo a 0 se elige la opcin de utilizarlo como temporizador, el aumento en las
cuentasdeltimer1PICsersiempreporflancodesubidadelasealenelpinT1CKI.
Elbit0(TMR1ON)alponerestebita1sehabilitaelusodeltimer1PIC,cuandoestebitesta0eltimer1PICestardesactivado.

Timer1PICcomocontadorejemplo
Elcircuitoutilizadoeselquesemuestraenlasiguienteimagen,lasealqueingresaporelpinT1CKIsegeneraconlaayudadeunfotorresistor,
cada vez que el fotorresistor disminuya su valor al pin T1CKI le llegar un alto, esto es un flanco de subida, lo que provocar que el
registroTMR1aumenteenunaunidad,lacuentadeltimer1PICirdesde0hasta65535,severdeformaindirectalosvaloresdeltimer1,se
harquecadavezqueeltimer1aumenteen8000unidadesseenciendaunleddelpuertob,seempezarconlosledsdelpuertobtotalmente
apagados.
SeutilizarunledmasconectadoalpinRD1seharqueesteledestencontactoconelfotorresistorparaqueseaesteelquegenerelosaltosy
bajosquellegarnalpinT1CKI,conloqueencadaflancodesubidaseincrementeelvalordelregistroTMR1,elledseharparpadearcada
20ms.
LaprogramacinserhechaenelXC8porqueestepermitetrabajardirectamenteconlosregistros,deestamanerasepuedeunofamiliarizarmas
conelmicrocontroladorPIC

ConfiguracindelregistroT1CONparaelejemplo
Losbits7y6noseutilizanporloqueselesponea0,elprescalerserde1paraquelosvaloresdelregistroTMR1seincrementenenunaunidad
encadaflancodesubidaqueocurraenelpinT1CKI,porloquelosbits5y4sepondrna0,noseusarningnosciladorexternoporloqueel
bit3sepondra0,elconteoserenformaasncronaporloqueelbit2sepondra1,elbit1sepondra1porqueseutilizareltimer1PICen
PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

2/8

13/11/2016

Timer1PICMICROCONTROLADORES

modocontadoryelbit0sepondra1parahabilitareltimer1PIC.

MICROCONTROLADORES

LuegoelregistroT1CONenelXC8quedaras:

ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO
T1CON=0b00000111//timer1piccomocontadorasncrono
ElprogramarealizadoenelMPLABXC8paraelusodeltimer1piccomocontadoreselsiguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

/////////////////////////////////////////////////
/////////////////////////////////////////////////
//////**microcontroladoresmrelberni.com**///////
/////////**timer1PICcomocontador**//////////
/////////////////////////////////////////////////

//bitsdeconfiguracinparaelPIC16F877A
#pragmaconfigFOSC=XT//OscillatorSelectionbits(XToscillator)
#pragmaconfigWDTE=OFF//WatchdogTimerEnablebit(WDTdisabled)
#pragmaconfigPWRTE=ON//PowerupTimerEnablebit(PWRTenabled)
#pragmaconfigBOREN=ON//BrownoutResetEnablebit(BORenabled)
#pragmaconfigLVP=OFF//LowVoltage(SingleSupply)
#pragmaconfigCPD=OFF//DataEEPROMMemoryCodeProtectionbit
#pragmaconfigWRT=OFF//FlashProgramMemoryWriteEnablebits
#pragmaconfigCP=OFF//FlashProgramMemoryCodeProtectionbit

#define_XTAL_FREQ4000000//cristalutilizadode4Mhz
#include"xc.h"

intmain(void){
TRISDbits.TRISD1=0;//enelpinRD1seconectaelledqueparagenerarlaseal
//enelpinT1CKI
PORTDbits.RD1=0;//Elledseiniciaapagado
TRISB=0;//PuertoBcomosalidaparaverindirectamentelosincrementosdeTMR1
PORTB=0;//ElpuertoBseiniciaa0

T1CON=0b00000111;//timer1piccomocontadorasncrono
TMR1=0;//seiniciaa0

while(1){//ciclodeprograma
if(TMR1==0){//cuandoeltimer1sepongaa0,todoslosledsdel
PORTB=0;//puertoBseapagan
}

switch(TMR1){//observalosvaloresquevatomandoTMR1
case8000://cuandoelregistrotmr1es8000
PORTB=0b00000001;
break;
case16000://cuandoelregistrotmr1es16000
PORTB=0b00000011;
break;
case24000://cuandoelregistrotmr1es24000
PORTB=0b00000111;
break;
case32000://cuandoelregistrotmr1es32000
PORTB=0b00001111;
break;
case40000://cuandoelregistrotmr1es40000
PORTB=0b00011111;
break;
case48000://cuandoelregistrotmr1es48000
PORTB=0b00111111;
break;
case56000://cuandoelregistrotmr1es56000
PORTB=0b01111111;
break;
case60000://cuandoelregistrotmr1es60000
PORTB=0b11111111;
break;
}//transcurren50ms

PORTD^=(1<<1);//ElledenRD1secolocasobreelfotorresistor
__delay_ms(20);//esteledcambiadeestadocada20ms,deesta
}//formaselograenviaraltosybajosalpinT1CKI
return0;
}

La siguiente es la imagen del circuito de prueba para el uso del timer1 PIC como contador, se puede ver el led que est en contacto con el
fotorresistor.

PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

3/8

13/11/2016

Timer1PICMICROCONTROLADORES

MICROCONTROLADORES
ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

TemporizadorcontadorPIC:Timer1comotemporizador.
Se ver en este caso el uso del temporizador contador pic timer1 como temporizador, normalmente el registro TMR1 del timer1 PIC ir
aumentando su valor en una unidad con cada ciclo de instruccin del microcontrolador PIC, y para estos microcontroladores a cada ciclo de
instruccin le toma 4 ciclos del oscilador que se est utilizando, si se usa por ejemplo un cristal de Fosc=4Mhz para el que cada ciclo del
osciladorserde0,25us,entoncescadaciclodeinstruccintardar4vecesestevalor,esdecir4*(0,25us)loquevieneaser1us,aestosele
llamaciclomquinaTCM=4/Fosc,entonceselregistroTMR1aumentarenunaunidadencadamicrosegundocuandoelosciladoresde4Mhz.
ComoelregistroTMR1esde16bitsesteaumentardesde0odesdealgnvalorqueselepongacomovalorinicialhastaunmximode65535,
porejemplosivadesde0hasta65535habrntranscurrido65535usluegovolvera0peroenesavueltaa0transcurre1usmas,porlocualen
irde0a65535yvolvera0transcurren65536usnosiempreseutilizaunaFOSC de 4Mhz esto puede variar, por lo que como consecuencia
variareltiempoquetrascurreparaqueelregistroTMR1aumentesuvalorenunaunidad.
EltemporizadorcontadorpicTMR1cuentaconloqueseconocecomoprescalerestohacequelafrecuenciadelosciladorFOSCsedividaporeste
prescaler,conloqueselograqueeltimer1pictardeunpocomasenaumentarsuvalorenunaunidadelprescalerpuedetomarelvalorde1,2,
4o8estosvaloresseeligenprogramandolosbits4y5delregistroT1CON.

Enlasiguientetablasepuedeverlascombinacionesdelosbits5y4paraobtenerlosdiferentesvaloresdelosprescalerparaeltimer1PIC.

PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

4/8

13/11/2016

Timer1PICMICROCONTROLADORES

MICROCONTROLADORES
ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

Si el prescaler elegido es por ejemplo de 8 y la FOSC=4Mhz, entonces la frecuencia de trabajo del temporizador Ftemp ser de
Ftemp=FOSC/(4*prescaler),eltiempoquetardarahoraeltemporizadorenaumentarunaunidadserlainversadeestevalorlocualse
conoce como periodo del temporizador Ttemp=(4*prescaler)/(FOSC) por lo que en este caso Ttemp=(4*8)/(4Mhz) de donde Ttemp=8us,
esto quiere decir que ahora el temporizador aumentar en una unidad cada 8us y en este caso entonces el registro TMR1 para ir de 0 a
65535tardar65535*Ttemp=65535*8usloqueesiguala524280us=524,28msasparalosdemsprescaler.
Al utilizar los prescaler se tiene la ventaja de lograr temporizar tiempos mas largos pero muchas veces se vuelven demasiado largos si el
registroTMR1seiniciaa0,porlocualparalograrlastemporizacionesquesequierenporejemplode500mssetendraqueutilizarunprescaler
adecuadoeiniciarelregistroTMR1aunvalortambinadecuado.
Utilizando una regla de 3 simple se llega a la siguiente ecuacin que ayudar a encontrar el valor inicial adecuado a cargar en el
registroTMR1paraobtenerlastemporizacionesbuscadas.
TMR1=216Tretardo*(Fosc/(4*prescaler))1
DondeTMR1eselvalorinicialacargarenesteregistroparaobtenerlatemporizacinbuscada,2 16porqueeltimer1PICesde16bits,Tretardoes
eltiempoquesequiereobtenerconeltemporizador,Fosceslafrecuenciadelosciladorodelcristalutilizado,yprescalerserelprescalerelegido
segnlatablaanterior.
Porejemplosisequieretemporizar500ms,enestecaso500msseraeltiempoderetardo,ysielmicrocontroladorPICtrabajaconunoscilador
de4Mhz,habrqueelegirentrelosposiblesprescalerquesetienen,reemplazarenlaecuacinanterioryversielnmeroobtenidoestaentre0y
65535,deseraslaeleccindelprescalerescorrecta,delocontrariohabrqueutilizarotro,porejemplosiseeligeunprescalerde8setendra:
TMR1=65535(500ms)(1Mhz)/81
TCNT1=3035
El valor obtenido est entre 0 y 65535 por lo que 3035 sera el valor inicial a cargar en el registro TMR1 para obtener una temporizacin de
500ms con el timer1 PIC, esto quiere decir que si se inicia el timer1 PIC con 3035 y un prescaler de 8, cuando aumente su valor de 3035 a
65535habrntranscurrido500ms.
Losresultadosobtenidossernusadosenelejemplodelautilizacindeltimer0piccomotemporizador.
Esteprocesoserelqueseseguircuandoseutiliceeltimer1AVRcomotemporizador.
LaprogramacindelTimer1PICcomotemporizadorsehacemedianteelbit1oelbitTMR1CSdelregistroT1CON.

Losbits7y6noseutilizanporloqueselesponea0.
Losbits5y4sonparaelegirunprescaler,mediantelascombinacionesdeestosbitssepuedenelegirlosprescaler1,2,4u8.
Elbit3esparacuandosequiereconectarunosciladorindependientealtimer1PIC,esteociladorsedebecolocarentreelpinT1OSO(pin15)yel
pinT1OSI(pin16)paraestohayqueponerestebita1.
Elbit2esparahacerqueeltimer1PICcuandoesprogramadocomocontadortrabajeenformasincronizadaconelsistemainternodelpic,enel
modotemporizadornosetomaencuenta.
PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

5/8

13/11/2016

Timer1PICMICROCONTROLADORES

El bit1 (TMR1CS), Al poner este bit a 0 se elige la opcin de utilizar el timer1 PIC como temporizador, al ponerlo a 1 se elige la opcin de
utilizarlocomocontador.

MICROCONTROLADORES

Elbit0(TMR1ON)alponerestebita1sehabilitaelusodeltimer1PIC,cuandoestebitesta0eltimer1PICestardesactivado.
ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

Timer1PICcomotemporizadorejemplo
Elcircuitodeejemploutilizadoparaverelusodeltimer1PICcomotemporizadoreselsiguiente,seharcambiarelestadodelpinRB7cada
500ms,seutilizarnlosresultadosobtenidoscuandosecomentosobreelprescalerdeltimer1PIC,seobtuvoqueparatemporizar500msse
utilizaelprescalerde8yelregistroTMR0setienequecargarenuniniciocon3035,estoesTMR0=3035.
LaprogramacinserhechaenelXC8porqueestepermitetrabajardirectamenteconlosregistros,deestamanerasepuedeunofamiliarizarmas
conelmicrocontroladorPIC

ConfiguracindelregistroT1CONparaelejemplo
Losbits7y6noseutilizanporloqueselesponea0,elprescalerserde8porloquelosbits5y4sepondrna1,noseusarningnoscilador
externoporloqueelbit3sepondra0,elbit2seponea0porqueenelmodotemporizadornosetomaencuenta,elbit1sepondra0porque
seutilizareltimer1PICenmodotemporizadoryelbit0sepondra1parahabilitareltimer1PIC.
LuegoelregistroT1CONenelXC8quedaras:
T1CON=0b00110001//timer1piccomotemporizadorprescalerde8
ElprogramarealizadoenelMPLABXC8paraelusodeltimer1piccomotemporizadoreselsiguiente:

PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

6/8

13/11/2016
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

Timer1PICMICROCONTROLADORES

/////////////////////////////////////////////////
/////////////////////////////////////////////////
//////**microcontroladoresmrelberni.com**///////
///////**timer1PICcomotemporizador**////////
/////////////////////////////////////////////////
ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

//bitsdeconfiguracinparaelPIC16F877A
#pragmaconfigFOSC=XT//OscillatorSelectionbits(XToscillator)
#pragmaconfigWDTE=OFF//WatchdogTimerEnablebit(WDTdisabled)
#pragmaconfigPWRTE=ON//PowerupTimerEnablebit(PWRTenabled)
#pragmaconfigBOREN=ON//BrownoutResetEnablebit(BORenabled)
#pragmaconfigLVP=OFF//LowVoltage(SingleSupply)
#pragmaconfigCPD=OFF//DataEEPROMMemoryCodeProtectionbit
#pragmaconfigWRT=OFF//FlashProgramMemoryWriteEnablebits
#pragmaconfigCP=OFF//FlashProgramMemoryCodeProtectionbit

#define_XTAL_FREQ4000000//cristalutilizadode4Mhz
#include"xc.h"

intmain(void){
TRISBbits.TRISB7=0;//pinRB7comosalidadigital,secolocarelled
PORTBbits.RB7=0;//Elledseiniciaapagadoyparpadeacada500ms

T1CON=0b00110001;//timer1piccomotemporizadorprescalerde8
TMR1=3035;//seiniciaaestevalorparaobtener500ms

while(1){//ciclodeprograma
if(TMR1==65535){//cuandoeltimer1llegueaestevalorhabrnpasado500ms
PORTB^=(1<<7);//elledcambiardeestadocadams
TMR1=3036;//secarganuevamenteeltimer1picconestevalor
}//paraseguirobteniendo500ms

}
return0;
}

MICROCONTROLADORES

Elusodeltimer1PICcomotemporizadoresmuchomaseficazsiseutilizamediantelasinterrupciones,estetemaseveenlaseccinde
interrupcionesconelPIC.
Sihelogradoayudarteencuantoalusodeltimer1PICcomocontadorytemporizadorcomparteesteenlaceparapoderayudaramuchas
personasmas.MuchasGracias.
Atte:MrElberni.
Compartir:


Buscar

MASDEELECTRNICAAQU

mrelbernitutoriales.com
http://microcontroladoresmrelberni.com/timer1pic/

PolticayprivacidaddeCookies

7/8

13/11/2016

Timer1PICMICROCONTROLADORES

mrelbernitutoriales.com

MICROCONTROLADORES

ListadeReproduccinMicrocontroladoresPIC
Microcontroladores PIC 1...

ProgramacindeMicrocontroladoresPIC,AVR,ARDUINO

ListadeReproduccinMicrocontroladoresAVR
Microcontrolador AVR 1 ...

GoogleMaps

Datos de mapas 2016 Google


50 km

Compartir
0

PolticayprivacidaddeCookies

http://microcontroladoresmrelberni.com/timer1pic/

8/8

También podría gustarte