hola que tal, tengo un problema con mi codigo y/o simulacion de un generador de pulsos cuadrados(pwm) por software, es regulable con un potenciometro configurado con el adc, para modificar el periodo de los pulsos, lo estoy generando con un pic 16f877, el problema es que en la simulacion, los pulsos no son completamente cuadrados, tienen un tipo de rampa, o inclinacion, no se como corregir ese error; el codigo es demaciado simple y me gustaria que porfavor me ayudaran a detectar el problema, aqui les dejo el codigo, es en PICC.
#include <16f877.h>
#device adc=10
#fuses NOWDT, PUT
#use delay(clock=4000000)
#byte portb=0x06
#byte trisb=0x86
void main(){
int x,y;
do{
trisb=0x00;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
x=read_adc();
y=1023;
portb=0x01;
delay_ms(x);
portb=0x00;
delay_ms(y-x);
portb=0x00;
}
while(true);
}