SlideShare una empresa de Scribd logo
Programacion del PIC 16F877A
USO DEL TIMER2 PARA PWM CON EL PIC 16F877A con el COMPILADOR HI TECH

Buitrón Quispe Carlos E.

Página 1
Programacion del PIC 16F877A

F:ESCRITORIO DECIMO CICLO fuses exporta y grabaPWM.c
#include <htc.h> // Directivas del Preprocesador
//__CONFIG(0x3F32); //Palabra de configuración para el pic 16F877A
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_OFF & LVP_OFF &
CPD_OFF & CP_OFF & DEBUG_OFF & WRT_OFF ); #define _XTAL_FREQ
20000000 //Oscilador Externo de 20MHZ
/* Declaración de variables GLOBALES con inicialización o sin inicialización*/
unsigned int x;
/* Declaración de funciones con o sin parámetros*/
void set_pwm(unsigned int duty); // prototipo de la función
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~ /* FUNCION PRINCIPAL*/
void main(void) // "función main" sin ningún valor de
retorno.
{
/* REGISTROS Y SIMBOLO DEFINIDOS POR EL PROGRAMADOR*/
// ~~~~~~~~~~PASOS PARA CON FIGURAR EL MODULO TIMER 0 ~~~~~~~~~~~
//OPTION_REG=0B10100000;
// voy al BANCO1 y configuro como usare el modulo timer

Buitrón Quispe Carlos E.

Página 2
Programacion del PIC 16F877A
// mediante el registro OPTION_REG.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//T0CS - BIT5: Bit selector de fuente para el TMR0
//1 = Clock externo, pin RA4/T0CKI
//0 =Clock interno (CLKOUT)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//T0SE - BIT4: Bit selector de flanco
//1 = Incrementa en flanco de bajada en pin T0CKI
//0 = Incrementa en flanco de subida en pin T0CKI
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//PSA - BIT3: Bits de asignación del preescaler
//1 = Prescaler es asignado al WATCHDOG
//0 = Prescaler es asignado al modulo Timer0*/
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Si el preescaler vale 1:8 quiere decir por cada 8 eventos o 8 pulsos o 8 ciclos
que sucedan
// Solo aumentará una cuenta en un valor de "uno" en el registro TMR0 (y el
valor máximo de
// Cuentas será 8x256).
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ~~~~~~~´PASOS PARA CON FIGURAR EL REGISTRO INTCON ~~~~~~~~~~
// Es el controlador de Interrupciones, utilizar las banderas:
// bit 2 TMR0IF: Señalizador de desbordamiento del temporizador en TMR0
// 1 = se activa por defecto cuando hay desbordamiento de TMR0 (borrar por

Buitrón Quispe Carlos E.

Página 3
Programacion del PIC 16F877A
software)
// 0 = TMR0 register did not overflow
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// bit 5 TMR0IE: Bit de permiso de interrupción del TMR0
// 1 = Enables the TMR0 interrupt
// 0 = Disables the TMR0 interrupt
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//TMR0=0X00; //Aseguramos que registro de conteo TMR0 está en 0
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//ADCON1 = 0x06;
// Configuro puerto A, para obtener E/S digital.
//TRISA=0XFF; // configuro puerto A como ENTRADA, PIN RA4: T0CKI se debe
leer el estado. //TRISB=0X00; // configuro puerto B como SALIDA.
TRISC=0X00; // configuro puerto C como SALIDA.
CCP1CON = 0b00001100; // Configurar el modulo CCP, utilizar como modo
PWM
T2CON = 0b00000110; // configurar TIMER2 para funcionar el PWM
PR2 = 255; // valor para calcular en resultado de frecuencia. PR = 0 o 255.
set_pwm(512); // iniciar el PWM en 50%. 1024 niveles - 100%, 512 niveles =
50%
x=0; // inicialización para ver como varia los niveles. (Cantidad de niveles)
while(1)
{
x++;
if(x>=1024) x=0;
set_pwm(x);
__delay_ms(10);
}
}

Buitrón Quispe Carlos E.

Página 4
Programacion del PIC 16F877A
void set_pwm(unsigned int duty)
{
CCPR1L = duty>>2;
CCP1CONbits.CCP1X = duty>>1;
CCP1CONbits.CCP1Y = duty;
}

Medida del Frecuencímetro a 1.22Khz
Programa permite medir la intensidad de Luminosidad del Led cuando el Duty cicle llega al 100 el
Led deja de Iluminar y retorna en parpadear hasta alcanzar la máxima iluminación.

Buitrón Quispe Carlos E.

Página 5

Más contenido relacionado

La actualidad más candente

Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
Hamiltonn Casallas
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
Richard Todavia Forjandose
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
Mario César Ramírez Venegas
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
Fernando Aparicio Urbano Molano
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
Hamiltonn Casallas
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
xeleta
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
Hamiltonn Casallas
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
Hamiltonn Casallas
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
Deyvis Gonzales Guevara
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
Jaime E. Velarde
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
guestf09168b
 
Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
Fernando Aparicio Urbano Molano
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
David López
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
Fernando Aparicio Urbano Molano
 
14 Fusibles Programables
14 Fusibles Programables14 Fusibles Programables
14 Fusibles Programables
Jaime E. Velarde
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación práctica
Gerardo C
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
Fernando Aparicio Urbano Molano
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
Hamiltonn Casallas
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
Derlis Hernandez Lara
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
Victor Fernando Monroy Dipp
 

La actualidad más candente (20)

Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887Arquitectura Microcontrolador PIC16F887
Arquitectura Microcontrolador PIC16F887
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 
14 Fusibles Programables
14 Fusibles Programables14 Fusibles Programables
14 Fusibles Programables
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación práctica
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 

Destacado

Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
José Tomás Diarte Añazco
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicaciones
Carlos Tovar
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
freddymadriz
 
Microcontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos aoMicrocontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos ao
hector8764
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
Francisco Nieva Ricaldi
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Miguel Angel Corona Lòpez
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Miguel Angel Corona Lòpez
 

Destacado (7)

Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicaciones
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Microcontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos aoMicrocontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos ao
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
 

Similar a Uso del timer2 para pwm con el pic 16 f877a con el compilador hi tech

Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
Luis Zurita
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
David Narváez
 
Nueva secuencia
Nueva secuenciaNueva secuencia
Nueva secuencia
Cosmico Mitico
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
Diego Rojas Ruiz
 
INTERRUPCIONES.ppt
INTERRUPCIONES.pptINTERRUPCIONES.ppt
INTERRUPCIONES.ppt
TIRZOANTONIOMEDINACA1
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
Jair BG
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
Jair BG
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5
georgemanson69
 
Timers 2
Timers 2Timers 2
Timers 2
georgemanson69
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Tarea final
Tarea finalTarea final
Tarea final
tomas francisco
 
Controlando el tiempo
Controlando el tiempoControlando el tiempo
Controlando el tiempo
guest02693a
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
Jair BG
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
Jair BG
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
Luis Zurita
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examen
Jair BG
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
Luis Zurita
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009
Jair BG
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
Jair BG
 

Similar a Uso del timer2 para pwm con el pic 16 f877a con el compilador hi tech (20)

Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Nueva secuencia
Nueva secuenciaNueva secuencia
Nueva secuencia
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
INTERRUPCIONES.ppt
INTERRUPCIONES.pptINTERRUPCIONES.ppt
INTERRUPCIONES.ppt
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 
Compare capture pwm mode 5
Compare capture pwm mode 5Compare capture pwm mode 5
Compare capture pwm mode 5
 
Timers 2
Timers 2Timers 2
Timers 2
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Tarea final
Tarea finalTarea final
Tarea final
 
Controlando el tiempo
Controlando el tiempoControlando el tiempo
Controlando el tiempo
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
 
Micc final sept05 2009 soluc
Micc final sept05 2009 solucMicc final sept05 2009 soluc
Micc final sept05 2009 soluc
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examen
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
 
Micc final feb14_2009
Micc final feb14_2009Micc final feb14_2009
Micc final feb14_2009
 
Micc final sept05_2009
Micc final sept05_2009Micc final sept05_2009
Micc final sept05_2009
 

Más de Carlos Buitron Quispe

Programación orientada a objetos en vb 2012
Programación orientada a objetos en vb 2012Programación orientada a objetos en vb 2012
Programación orientada a objetos en vb 2012
Carlos Buitron Quispe
 
COMUNICACION SERIAL DSPIC30F3014 Y MATLAB
COMUNICACION SERIAL DSPIC30F3014 Y MATLABCOMUNICACION SERIAL DSPIC30F3014 Y MATLAB
COMUNICACION SERIAL DSPIC30F3014 Y MATLAB
Carlos Buitron Quispe
 
Uso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi techUso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi tech
Carlos Buitron Quispe
 
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENESSISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
Carlos Buitron Quispe
 
Tutorial de programacion en c para pic16 f877a
Tutorial de programacion en c para pic16 f877aTutorial de programacion en c para pic16 f877a
Tutorial de programacion en c para pic16 f877a
Carlos Buitron Quispe
 
000191
000191000191

Más de Carlos Buitron Quispe (6)

Programación orientada a objetos en vb 2012
Programación orientada a objetos en vb 2012Programación orientada a objetos en vb 2012
Programación orientada a objetos en vb 2012
 
COMUNICACION SERIAL DSPIC30F3014 Y MATLAB
COMUNICACION SERIAL DSPIC30F3014 Y MATLABCOMUNICACION SERIAL DSPIC30F3014 Y MATLAB
COMUNICACION SERIAL DSPIC30F3014 Y MATLAB
 
Uso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi techUso del timer0 para el pic 16 f877a con el compilador hi tech
Uso del timer0 para el pic 16 f877a con el compilador hi tech
 
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENESSISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
SISTEMA RECONOCIMIENTO DE OBJETOS APLICANDO PROCESAMIENTO DE IMAGENES
 
Tutorial de programacion en c para pic16 f877a
Tutorial de programacion en c para pic16 f877aTutorial de programacion en c para pic16 f877a
Tutorial de programacion en c para pic16 f877a
 
000191
000191000191
000191
 

Uso del timer2 para pwm con el pic 16 f877a con el compilador hi tech

  • 1. Programacion del PIC 16F877A USO DEL TIMER2 PARA PWM CON EL PIC 16F877A con el COMPILADOR HI TECH Buitrón Quispe Carlos E. Página 1
  • 2. Programacion del PIC 16F877A F:ESCRITORIO DECIMO CICLO fuses exporta y grabaPWM.c #include <htc.h> // Directivas del Preprocesador //__CONFIG(0x3F32); //Palabra de configuración para el pic 16F877A __CONFIG( FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_OFF & LVP_OFF & CPD_OFF & CP_OFF & DEBUG_OFF & WRT_OFF ); #define _XTAL_FREQ 20000000 //Oscilador Externo de 20MHZ /* Declaración de variables GLOBALES con inicialización o sin inicialización*/ unsigned int x; /* Declaración de funciones con o sin parámetros*/ void set_pwm(unsigned int duty); // prototipo de la función //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ /* FUNCION PRINCIPAL*/ void main(void) // "función main" sin ningún valor de retorno. { /* REGISTROS Y SIMBOLO DEFINIDOS POR EL PROGRAMADOR*/ // ~~~~~~~~~~PASOS PARA CON FIGURAR EL MODULO TIMER 0 ~~~~~~~~~~~ //OPTION_REG=0B10100000; // voy al BANCO1 y configuro como usare el modulo timer Buitrón Quispe Carlos E. Página 2
  • 3. Programacion del PIC 16F877A // mediante el registro OPTION_REG. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //T0CS - BIT5: Bit selector de fuente para el TMR0 //1 = Clock externo, pin RA4/T0CKI //0 =Clock interno (CLKOUT) //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //T0SE - BIT4: Bit selector de flanco //1 = Incrementa en flanco de bajada en pin T0CKI //0 = Incrementa en flanco de subida en pin T0CKI //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //PSA - BIT3: Bits de asignación del preescaler //1 = Prescaler es asignado al WATCHDOG //0 = Prescaler es asignado al modulo Timer0*/ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //Si el preescaler vale 1:8 quiere decir por cada 8 eventos o 8 pulsos o 8 ciclos que sucedan // Solo aumentará una cuenta en un valor de "uno" en el registro TMR0 (y el valor máximo de // Cuentas será 8x256). ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ~~~~~~~´PASOS PARA CON FIGURAR EL REGISTRO INTCON ~~~~~~~~~~ // Es el controlador de Interrupciones, utilizar las banderas: // bit 2 TMR0IF: Señalizador de desbordamiento del temporizador en TMR0 // 1 = se activa por defecto cuando hay desbordamiento de TMR0 (borrar por Buitrón Quispe Carlos E. Página 3
  • 4. Programacion del PIC 16F877A software) // 0 = TMR0 register did not overflow //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // bit 5 TMR0IE: Bit de permiso de interrupción del TMR0 // 1 = Enables the TMR0 interrupt // 0 = Disables the TMR0 interrupt //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //TMR0=0X00; //Aseguramos que registro de conteo TMR0 está en 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ADCON1 = 0x06; // Configuro puerto A, para obtener E/S digital. //TRISA=0XFF; // configuro puerto A como ENTRADA, PIN RA4: T0CKI se debe leer el estado. //TRISB=0X00; // configuro puerto B como SALIDA. TRISC=0X00; // configuro puerto C como SALIDA. CCP1CON = 0b00001100; // Configurar el modulo CCP, utilizar como modo PWM T2CON = 0b00000110; // configurar TIMER2 para funcionar el PWM PR2 = 255; // valor para calcular en resultado de frecuencia. PR = 0 o 255. set_pwm(512); // iniciar el PWM en 50%. 1024 niveles - 100%, 512 niveles = 50% x=0; // inicialización para ver como varia los niveles. (Cantidad de niveles) while(1) { x++; if(x>=1024) x=0; set_pwm(x); __delay_ms(10); } } Buitrón Quispe Carlos E. Página 4
  • 5. Programacion del PIC 16F877A void set_pwm(unsigned int duty) { CCPR1L = duty>>2; CCP1CONbits.CCP1X = duty>>1; CCP1CONbits.CCP1Y = duty; } Medida del Frecuencímetro a 1.22Khz Programa permite medir la intensidad de Luminosidad del Led cuando el Duty cicle llega al 100 el Led deja de Iluminar y retorna en parpadear hasta alcanzar la máxima iluminación. Buitrón Quispe Carlos E. Página 5