Al entrar en el hilo ya estaba muy avanzado, pero pude ver al principio un error en el primer programa, lo que ocurre es que se corrigió en los programas sucesivos por lo que no le di importancia, así que para evitar seguir haciendo referencia a ese programa con el susodicho error lo indico y lo corrijo en el.
Trisa = %11111 ‘Parte del puerto A como entradas
Trisb = %00000000
Portb = %00000000
Porta = %00000 ‘Esto se definió como entradas y aquí se trata como salidas?.
Es contradictorio y puede producir efectos indeseables. Al definir parte del puerto como entrada Trisa = %11111 y luego forzarlo a un estado predeterminado Porta = %00000, esto es algo contradictorio y puede hacer que algún compilador decida redefinir el puerto como salidas. O puede que el compilador lo defina como entrada o como salida según se haga uso de él, esto último puede que haga que funcione el código pero el derroche de memoria a mi parecer no lo justifica.
Hola bigluis, la definición de puertos y programación de módulos en general en el Basic del PSI no tiene lugar predeterminado, se suele colocar fuera del main para no estar reprogramando continuamente el modulo, esto hace que se pierda tiempo de ejecución con código redundante. En Microbasic desde luego no tengo ni idea de que es mejor.
Supongo que estas cometiendo un error, ya que PORTA y TRISA son registros completamente distintos, lo que quiero decir es que, es muy poco probable que el compilador los confunda.
Supongo que tu error es que crees que ambos son el puerto, pero no es así, cuando defines un valor en PORTA, no defines el valor al puerto a sino al registro que esta relacionado con el al que los fabricantes han llamado PORTA, cundo defines un valor a TRISA, tampoco le defines el valor al puerto, sino a un registro llamado TRISA que se encarga de decidir si cada pin es de entrada o de salida, si lo tradujesemos serían puertos triestado.
El error real que se comete es que estas dando una orden innecesaria, simplemente mandas a cero todos los pines que estan como salida.
Huy como ha avanzado esto, llevo 3 dias con un gripazo de muerte y cuando entro de nuevo está casi resuelto el problema. pero tengo una observacion:
Otra cosa que te recomiendo es que no utilices los if, es mejor que iguales el puerto de entrada con el de salida a como sigue:
while 1
if (porta.0 + porta.1 + porta.2 + porta.3) <=2 then
PORTB = PORTA
else
end if
wend
[/quote]
Si se realiza un portB=portA se apagarian todas las salidas cuando en realidad deben de permanecer activas las que en ese momento ya lo estuviesen.
Amigo dogflu me descubro ante tanta sabiduria
, creo que me queda bastante por aprender todavia.
Fermin
[/quote]
No entiendo muy bien tu duda, si lo que deseas es que las salidas previas que has activado permanescan activas simplemente debes quitar la condicion else y lo que tiene adentro, y veras como ninguna salida se apaga al presionar otro boton, pero en el primer post entendí que lo que deseabas era que cada interruptor de entrada active un pin de salida y los demas se apaguen, y si presionabas más de un pin se apagaran todas las salidas por un error.
Supongo que deberías reescribir lo que deseas hacer así podría darte más ayuda.