Problema con velocidad de PIC 18F4550

Hola a todos, estoy montando un circuito con pic 18f4550 y un lcd de 2x16. En el inicio del programa hago parpadear un led, espero un segundo, y lo hago parpadear nuevamente. Pero cuando monto el circuito en el protoboard, el lapso entre los parpadeos pareciera ser la decima parte de un segundo (claramente no espera un segundo real entre parpadeos).

Esto me lleva a la idea de que hay algun problema con la parte de frecuencia. Estoy usando un cristal de 20mhz, con dos capacitores de 15pf (tambien probe con los de 22pf y hace lo mismo).

Tambien el LCD muestra las palabras incompletas o caracteres que no deberian mostrarse. Ejemplo: Quiero escribir "Led Apagado" y escribe "LDapGo" o similar.

Aqui esta el codigo de fuente, el cual es realmente basico ya que solo quiero probar que funcione lo primordial.

DEFINE OSC 20
TRISC = 1
TRISD.0 = 0
DEFINE BUTTON_PAUSE 100

DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
define LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 2

encender var portc.6
apagar var portc.1
led var portd.0

pulsadores var byte

pause 10
high led
pause 100
low led
pause 100
high led
pause 100
low led

pause 1000 (esta pausa en la prueba del circuito se nota claramente que no es ni por casualidad un segundo entero, es mucho menor. Lo mismo con la otra)

high led
pause 100
low led
pause 100
high led
pause 100
low led

pause 1000

Lcdout $fe, 1, "LED: Apagado"

ProgramStart:

Button encender,0,255,0,pulsadores,1,pulseenc
Button apagar,0,255,0,pulsadores,1,pulseapa

goto ProgramStart

pulseenc:

high led
Lcdout $fe, 1, "LED: Encendido"
goto programstart
return

pulseapa:
low led
Lcdout $fe, 1, "LED: Apagado"
goto programstart
return
END


El funcionamiento del encendido y apagado del LED con los pulsadores de entrada funciona correctamente.

Muchas gracias a todo y espero sus consejos!
 
Atrás
Arriba