Problema con Bascom 8051 en el programa en basic

Holaa todos, les comento que soy novato en la programacion y bueno estoy haciendo un proyecto de fin de año para el colegio y me exigen que use el 8051, opte por basic porque es el que mas se, utilizando el bascom 8051.

Mi problema es puramente de programacion

El programa que quiero armar (que en parte esta armado) es que laburando con "IF" van llegando a 4 entradas al micro 16 combinaciones posibles... , y con cada una en especial el micro tendra que activar algunos bits de otros puertos

If p1 = &H01 (00000001) Cuento solo los 1ros cuatro desde la derecha then
P2.3 = 1 (ejemplo)
end if
If P1 = &H02 then (00000010)
P2.4 = 1
end if
If P1 = &H03 then (00000011)
P2.5 = 1

A partir de ahi biene el problema, si conocen como trabaja el bascom 8051, el simulador tiene una serie de lamparitas q uno prende y apaga que son los puertos (1 o 0) .... si yo aprieto el codifo &H01, todo joya, bien, lo saco, y ahora aprieto el siguente, &H02, tambien todo joya, ahora aprieto el siguente (Sin sacar el anterior porque lo uso en el q sigue) pongo &H03 y me "reconoce" y prende el p2.5 y P2.4 a la ves, cuando en realidad el codigo &H03 tiene que hacer prender solo P2.5, me explico? ,de todas las maneras q yo ponga el codigo, me lo mexcla con otro IF , ya probe haciendo variantes, constantes...no se me ocurre nada! Si alguien me da una mano, le agradeceria mucho. Saludos y Gracias
 
Típico error en los bits... sobre todo en el simulador, puedes darme todo el código fuente, desearía ver las variables que tienes y cual es el Loop al que hace referencia
 
Si estube pensando que podia ser error en el simulador, voy a hacer una serie de pruebas, creo que en la realidad no voy a tener ese problema, porque los 4 bits de los codigos llegan simultenamente, por lo que no deberia haber problema... saludos
 
Bueno probe el micro y funciona igual que en el bascom, osea mal :S si alguien me puede ayudar... a que el if interprete q solo y solo si aparece tal codigo haga tal cosa... saludos
 
Me explicarias como es esa tecnica? Yo le asigne a cada codigo 0000 --- 1111 una accion y quiero que cuando aparesca tal codigo el micro haga SOLO esa accion, no se si me explico? Gracias
 
Nadie sabes como podria arreglar mi problema? Si mando 0001 quiero que haga una accion y si mando 0011 quiero que haga otra (un ejemplo) pero si mando 0001 y despues le actualizo el bit faltante para llegar a 0011 me hace las 2 acciones usando la instruccion If, ya nose que hacer :S saludos
 
Atrás
Arriba