Hola. Mi estimados master de PBP.
Estoy trabajando en un proyecto de contador de monedas, me llega una señal digital al puerto A.0 al A.3 y con eso determino que moneda es y la cuento
Escribo para pedir ayuda. ya estoy a punto de tirar la toalla y renunciar a los PIC.
El problema que tengo es que no puedo leer la señal de entrada de PIC16F876A en el Puerto A.0 al A.3 y con esta señal. Tengo entendido que el puerto A tiene aplicaciones analógicas y que lo tengo que poner a digital, y que tengo que definir si es de entrada o salida. Estoy seguro que en esta parte esta mi error porque esta misma practica ya la logre pero con el puerto B del mismo PIC recibiendo las señales en el B.0 al B.3 y todo camino OK
Tengo un Oscilar de 4Mhz Externo y estoy programando con un MasterPorg.
Ya cheque con un Pic16f870 y es lo mismo
Anexo mi programa en MicroPICBASIC. Saludos y muchas gracias de antemano por la ayuda que me puedan brindar.
TRISA = 1 ;defino el puerto A como entradas (0= Salida, 1=Entrada)
ADCON1 = 7 ; Apaga los comparadores de voltaje
@ device XT_OSC
@ device WDT_OFF
@ device PWRT_ON
define osc 4
uno var porta.0 ; chanel 1
dos var porta.1 ; chanel 3
cinco var porta.2 ; chanel 4
diez var porta.3 ; chanel 6
x var BYTE
define LCD_DREG PORTc ;define los bit de Datos para el LDC en el Pto C
define LCD_DBIT 4 ;empesando por el C4 al C7
define LCD_RSREG PORTc ;define el bit de Registro del LCD en el Pto C.2
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTc ;define el bit de Enable del LCD en el Pto C.3
DEFINE LCD_EBIT 3
Inicio:
clear
lcdout $FE, 1
x = 0
display:
lcdout $FE,1
lcdout $FE, $80, "CUENTA MONEDAS"
pause 50
espera:
if uno = 0 then goto cuentauno
if dos = 0 then goto cuentados
if cinco = 0 then goto cuentacinco
if diez = 0 then goto cuentadiez
goto espera
cuentauno:
gosub norebote
x = x + 1
gosub imprime
goto espera
cuentados:
gosub norebote
x = x + 2
gosub imprime
goto espera
cuentacinco:
gosub norebote
x = x + 5
gosub imprime
goto espera
cuentadiez:
gosub norebote
x = x + 10
gosub imprime
goto espera
imprime:
pause 25
lcdout,$FE, $C1
lcdout, "$ ", dec x, ".00 pesos"
return
END
norebote:
if uno = 0 then norebote
if dos = 0 then norebote
if cinco = 0 then norebote
if diez = 0 then norebote
pause 25
return