TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: zden en 15 de Enero de 2004, 12:42:00

Título: No me funciona en 16f818 y si en 16f84a por que?
Publicado por: zden en 15 de Enero de 2004, 12:42:00
Estoy haciendo un temporizador cíclico con un digito y regulable por potenciómetro y el programa en el 16f84a me funciona, sin  embargo con el 16f818 se me queda el digito en cero y moviendo el potenciómetro no rula, no se si es que hay que definir las entradas y salidas a analógicas y si es ese el problema como se definen.

DEFINE OSC 4
TRISB=0
TRISA=1
B0 VAR BYTE
B1 VAR BYTE
T VAR BYTE
contador var byte
contado var byte
contador = 0
contado = 0
tiempo var byte
t = 0
B0=0
B1=0
t=0
INI:
LOOP:
pot porta.2,4,contado
if contado<> contador then t = 0
contador = contado
IF CONTADOR >= 6 THEN CONTADOR = 5
TIEMPO = CONTADOR * 49
CODIGO1:
LOOKUP CONTADOR,[%00111111,%00000110,%01011011,%01001111,%01100110,_
%01101101,%01111101,%00000111,%011111111,%01100111,%11111111],PORTB
if t < tiempo and contador > 0 then
high porta.0
low porta.1
pause 199
t = t + 1
endif
if t >= tiempo then
low porta.0
high porta.1
pause 199
t = t + 1
endif
if t = 1000 then t = 0
goto loop
CODIGO:
PAUSE 20
GOTO CODIGO1
Título: RE: No me funciona en 16f818 y si en 16f84a por que?
Publicado por: elreypic en 15 de Enero de 2004, 14:38:00
Que tal zden, mira es bien sencillo. Debido a que este micro contiene 5 canales analógicos que estan en el puerto A, para ser usados con el ADC, necesitas configurarlos como digitales, ya que por default estan configurados como analógicos, para hacer esto, simplemente agrega la siguiente linea en tu programa principal, es decir antes del LOOP. Ejemplo:

ADCON1 = 6

LOOP:



"NO BUSQUES PRETEXTOS PARA NO HACER LAS COSAS, MEJOR BUSCA RAZONES PARA HACERLAS"
Título: RE: No me funciona en 16f818 y si en 16f84a por que?
Publicado por: zden en 15 de Enero de 2004, 15:06:00
Lo añadí pero el potenciómetro sigue sin hacer caso