Problema con RB0 PIC 16F877A

Estoy haciendo un programa para controlar la velocidad de un motor de DC, Estoy trabajando con la modalidad de PWM.
Lo que quiero es configurar el RB0, para que cada vez que presione un push boton el duty cicle aumente 10%. EL punto es que no se como configurar ese PIN; Por cierto lo estoy haciendo en C,
AYUDA!


//const uns8 alfas[10] = {30, 60, 90, 120, 105, 75, 45, 100, 130, 90};
//const uns8 alfas[10] = {30, 60, 90,100,110,120,130,135,140,155}; // vector del ciclo de trabajo
uns8 i;

#include "INT16CXX.h"
#pragma origin 4

interrupt serverX(void)
{
int_save_registers



if(TMR2IF)
{
TMR2IF = 0;
CCPR1L = 0x18;
}
int_restore_registers
}


//****************************************************
//****************************************************

void act_RB0 (void)
{
TRISB.0=1;


}




void CCP1_init(void)
{
CCP1CON = 0x3C; // Modo PWM. DC1B0 = 0; DC1B1 = 0.
CCPR1L = 0x18; // primera posicion. Primero el pulso al 10%
}

void TMR2_init(void)
{
T2CON = 0x05; //Prescalador 1: 4
PR2 = 0xF9; // Fpwm = 1kH = 249
}



/*void TMR1_init(void)
{
T1CON = 0x0E; //Reloj externo, oscilador habilitado
//Pre-escalador 1:1, no sincornizado,
//Timer apagado

TMR1L = 0x00; //Retraso de 1 segundo @ 32768 Hz
TMR1H = 0x50;
}

*/
void INTERRUPTS_init(void)
{
PIR1 = 0X00; //aSEGURO QUE NO SE GENERE NINGUNA INTERRUPCION
PIR2 = 0X00;
PIE1 = 0X00;
PIE2 = 0X00;
INTCON = 0X00;
INTE=1;



PEIE = 1; //TMR1 es un periferico

GIE = 1; //ACTIVO INTERRUPCIONES QUE DESEO
;
TMR2IE = 1;
}

void main(void)
{
i = 0;
TRISC.2 = 0; //PIN CCP1 de salida configuración de salida
INTERRUPTS_init();
//TMR1_init();
TMR2_init();
CCP1_init();


TMR2ON = 1; //enciendo TMR2
while(1)
{
}
}

Esto es lo que tengo de mi programa ...
 
Última edición:
Atrás
Arriba