Hola, me alegro que hayas conseguido hacer andar ese codigo, yo aunque llevo 2 años o mas con esto de la programacion aun estoy muy muy verde, probablemente porque mis estudios y conocimientos no tienen nada que ver con este mundo, pero bien por falta de base academica, edad tardia en la que he empezado ya que a los 47 años no creo que haya mucha gente que sin tener relacion con este mundo se proponga programar, o simplemente porque no tengo capacidad de asimilacion(no todos valemos), el caso es que por necesidad laboral y de superacion aqui estoy peleandome con estos bichos que lo poco que he aprendido me ha costado y me cuesta horrores, y sin ser quien para dar consejos me gustaria comentar lo siguiente:
Cuando empezé en esto, como muchos pretendia hacer mi codigo entendible(al menos para mi) y acostumbraba a escribir decenas y decenas de lineas de codigo ya que uno al ser novato piensa linealmente, quiero decir que segun uno lo va pensando en la cabeza va prolongando y repitiendo codigo y mas codigo inecesariamente con lo que el aprendizaje se hace largo y pesado, incluso por momentos nos perdemos en nuestro propio codigo, de la lectura de manuales, y creo que en todos lo recalcan me hizo ver que no es practico trabajar con el nombre de los pines es mucho mas facil declarar variable para ellos y como en este caso trabajar con A, B y C para las columnas y UNO,DOS,TRES,CUATRO para las filas, que recordar donde he conectado portb.1.
Aqui tienes un ejemplo de uso de una rutina con codigo que seguro en cuanto veas entenderas perfectamente y mas resumido ya que con el codigo que presentas al hacerse mas pèsado su seguimiento limitas posibles respuestas.
Teclado:
v = 0
lcdout $fe,1," Teclee Codigo :"
GOSUB BARRIDO
DIG1 = TECLA
PAUSE 200
v = 1
GOSUB BARRIDO
DIG2 = TECLA
PAUSE 200
v = 2
GOSUB BARRIDO
DIG3 = TECLA
PAUSE 200
v = 3
dig1=dig1*100
dig2=dig2*10
codigo=dig1+dig2+dig3
lcdout $fe,1,codigo
pause 500
BARRIDO:
pause 200
HIGH A : HIGH B : HIGH C
LOW A
IF UNO = 0 THEN LCDOUT $FE,$C9+v, "1":TECLA = 1 :RETURN
IF DOS = 0 THEN LCDOUT $FE,$C9+v, "4":TECLA = 4 :RETURN
IF TRES = 0 THEN LCDOUT $FE,$C9+v, "7":TECLA = 7 :RETURN
IF cuatro = 0 THEN goto Teclado '*
HIGH A
LOW B
IF UNO = 0 THEN LCDOUT $FE,$C9+v,"2" :TECLA = 2 :RETURN
IF DOS = 0 THEN LCDOUT $FE,$C9+v,"5" :TECLA = 5 :RETURN
IF TRES = 0 THEN LCDOUT $FE,$C9+v,"8" :TECLA = 8 :RETURN
IF cuatro = 0 THEN LCDOUT $FE,$C9+v,"0" :TECLA = 0:RETURN
HIGH B
LOW C
IF UNO = 0 THEN LCDOUT $FE,$C9+v,"3" :TECLA = 3 :RETURN
IF DOS = 0 THEN LCDOUT $FE,$C9+v,"6" :TECLA = 6 :RETURN
IF TRES = 0 THEN LCDOUT $FE,$C9+v,"9" :TECLA = 9 :RETURN
IF cuatro = 0 THEN
high c
goto Inicio