hola foreros ahora vengo con la solucion a mi problema con el 16f88 y sourceboost se que muchos usan en el foro el ccs y como simulador proteus (como bien lo dijo firepic) wno io uso sourceboost aunq ya pienso en dejarlo un poco de lado puesto que tiene muchas desventajas si alguien me puede decir si ccs tiene una version libre les agradeceria mucho
bueno siguiendo con lo mio aki les dejo el programa y algunas explicaciones del mismo en sourceboost:
#include "control_pwm.h"
#pragma DATA _CONFIG , _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _MCLR_ON & _INTRC_IO
void main()
{
unsigned short pot1,pot2;
init();
pwm_init();
while(1)
{
pot1=adc_measure(0);
pwm_send(1,pot1); //muestra la modulacion de channel Ra0
delay_ms(10);
}
}
//////////////////////////////////pwm 16f88///////////////////////////////////
void pwm_init()
{
t2con=0000100b;
pr2=11111111b;
}
void pwm_send(char channel,unsigned short prom_val)
{
if (channel==1)
{
ccpr1l=prom_val>>2;
ccp1con=(prom_val & 0x03)<<4|0x0F;
}
}
void interrupt(void)
{
}
void init(void)
{
trisa=10000001b;
trisb=00000000b;
porta=0;
portb=0;
adc_init();
}
//*****configuracion de adc para el 16F88*****//
void adc_init(void)
{
//Oscillator configuration -------------------------------------------------
osctune = OscTConfig;
osccon = OscCConfig;
//Port configuration -------------------------------------------------------
option_reg = OptConfig;
ansel=11111111b;
adcon1=10000000b;
adcon0.5=0;
adcon0.4=0;
adcon0.3=0;
adcon0.ADCS1=1; // Select Tad = 32 * Tosc
adcon0.ADCS0=1; // (esto depende del X-tal aquí 10 MHz, deben trabajar hasta 20 MHz
adcon0.ADON =1; // Activa el modulo ADC
adcon0.1=0;
adcon0.2=1;
}
short adc_measure(char channel)
{
// Clear channel selection in adcon0
adcon0 &= 11000111b;
// Shift channel value to appropriate position
channel = (channel & 0x07) << 3;
// Move it to appropriate position in adcon0
adcon0 |= channel;
// Wait required acquisition time (see datasheet)
delay_10us(4);
// Startconversion
adcon0.GO = 1;
// Wait until done
#ifndef DEBUG
while (adc_go) ;
#endif
#ifndef DEBUG
delay_10us(4);
#endif
adcon0.GO = 0;
short retval;
retval = (short)adresh;
retval = retval << 8;
retval |= adresl;
return retval;
}
como ven he agregado la funcion interrupt siempre es necesaria en sourceboost tmb cambie el set_pwm por pwm_send; mmm la funcion es la misma solo que se reduce considerablemente en comparacion a la otra como ven son los registros de pwm del 16f88 y en la parte del adc en el programa anterior la configuracion de los puertos era buena solo se debia agregar el option_reg y tmb hay que configurar los osciladores: osctune y osccon con esta confiuracion basta y hay que tener en cuenta q los pines que son usados como entradas y no estan concetado es recomendable mandarlos a tierra es algo que es bueno repètirlo aunque mucho ya lo saben

bueno foreros creo que este es mi primer aporte en el foro.... una cosa mas que quisiera agregar a titulo personal: 16f88 es el pic mas comodo que existe ahora pues tiene muchas cosas q el 16f873a tiene y posee oscilador interno

bueno espero les sirva y si quieren algun otro detalle me avisan

; no olviden mi pregunta gente hablaos