De hecho no tenbgo errores en la compilacion, y cuando lo simulo en proteus en mi circuito; me enciende cuando presiono una vez y me muestra el led que enciendo en el lcd. Pero cuando le doy click nuevamente en el pulsador no me cambia a "off" y tampoco se apaga el led. La unica forma que me cambie es que presione otro pulsador.
este es el codigo que tengo ahora.
Device =16F877
Xtal = 4
Dim sec As Byte
Dim aux As Byte
TRISA.0=1
TRISA.1=1
TRISA.2=1
TRISB.0=0
TRISB.1=0
TRISB.2=0
Symbol uno=PORTA.0
Symbol dos=PORTA.1
Symbol tres=PORTA.2
Symbol led0=PORTB.0
Symbol led1=PORTB.1
Symbol led2=PORTB.2
Input PORTA
Output PORTB
LCD_DTPin = PORTD.4
LCD_RSPin = PORTD.2
LCD_ENPin = PORTD.3
LCD_Interface = 4
LCD_Lines = 2
LCD_Type = 0
All_Digital = On
TRISB=0
pantalla:
Cls
Print At 2,1, "led0 : ON OFF "
Print At 3,-3, "led1 : ON OFF "
Print At 4,-3, "led2 : ON OFF "
inicio:
If PORTA=0 Then
ElseIf uno=0 And dos=0 And tres=0 Then
GoTo inicio
ElseIf uno=1 And dos=0 And tres=0 Then
GoTo op1
ElseIf uno=0 And dos=1 And tres=0 Then
GoTo op2
ElseIf uno=0 And dos=0 And tres=1 Then
GoTo op3
EndIf
conteo:
PORTA= 1
While PORTA=0 'mientras no presionen ningun pulsador el PIC se mantendra en este bucle, hasta que se presionen alguno de ellos
Wend
DelayMS 40 'Tiempo necesario para evitar rebotes
aux = PORTA '^ aux 'recordemos que 1 xor 1=0, 0 xor 1 = 1 y 0 xor 0 = 0, se encenderian los pines que estan apagados y apagaria los encendidos.
'es decir al presionar un pulsador se produce un cambio de estado en las salidas
If (aux.0+aux.1+aux.2)=3 Then
'Contamos cuantas salidas deberian estar activas, si son menos de 2.
PORTB=aux 'En el puerto B se encenderan los pines necesarios
Else 'de lo contrario
aux=PORTB 'se guradara el estado anterior de PORTB en aux
End If
While PORTA<>0 'El PIC se mantendra en este bucle hasta que se suelten todos los pulsadores.
Wend
op1:
PORTB.0=1
PORTB.1=0
PORTB.2=0
Print At 2,1, "led0:-ON- OFF "
Print At 3,-3, "led1 : ON -OFF-"
Print At 4,-3, "led2 : ON -OFF-"
DelayMS 200
GoTo inicio
op2:
PORTB.0=0
PORTB.1=1
PORTB.2=0
Print At 2,1, "led0: ON OFF "
Print At 3,-3, "led1:-ON- OFF "
Print At 4,-3, "led2 : ON -OFF-"
DelayMS 200
GoTo inicio
op3:
PORTB.0=0
PORTB.1=0
PORTB.2=1
Print At 2,1, "led0 : ON -OFF- "
Print At 3,-3, "led1 : ON -OFF- "
Print At 4,-3, "led2 :-ON- OFF "
DelayMS 200
GoTo inicio