Lo que hace el código siguiente es mostrar un numero en la pantalla de 7 segmentos dependiendo de el swich que se levante, para esto se necesitan 3 switch conectados a tierra y unas resistencias (yo las puse de 10k) que van a VCC usando la inversa es decir cuando se levante el switch habrá corriente y cuando este abajo no habrá corriente, ustedes pueden modificarlo y hacerlo de forma directa lo interesante es el código...
LISTP=16F84A
#INCLUDE <P16F84A.INC>
RADIX HEX
AUXILIAR EQU 0X0C
CONTADOR EQU 0X0D
ORG 0
GOTO INICIO
ORG 5
INICIO BSF STATUS,RP0 ;NOS PASAMOS AL BANCO 1
MOVLW B'00000010'
MOVWF TRISB
MOVLW B'00111' ;CONFIGURAMOS 3 PUERTOSA ENTRADA
MOVWF TRISA ;APLICAMOS LA CONFIGURACION AL PUERTO A
BCF STATUS,RP0 ;NOS PASAMOS AL BANCO 0
BORRAR MOVLW B'11111111'
MOVWF PORTB
SEGUIR MOVLW B'00001' ;CARGAMOS EL PUERTO A EN W
XORWF PORTA ;COMPARAMOS W CON EL PUERTOA (IF W == PUERTOA)
BTFSS STATUS,Z ;RESULTADO DEL FLAG Z (IF W==PUERTOA THEN Z=0 ELSE Z=1)
GOTO PROBAR2 ;SI Z ES IGUAL A 1 ENTONCES VAMOS A SEGUIR
MOVLW B'11110010';DIBUJAMOS EL 1
MOVWF PORTB ;CARGAMOS W AL PUERTO B
GOTO SEGUIR
PROBAR2 MOVLW B'00010'
XORWF PORTA ;COMPARAMOS W CON EL PUERTOA (IF W == PUERTOA)
BTFSS STATUS,Z ;RESULTADO DEL FLAG Z (IF W==PUERTOA THEN Z=0 ELSE Z=1)
GOTO PROBAR3 ;SI Z ES IGUAL A 1 ENTONCES VAMOS A SEGUIR
MOVLW B'01001000';DIBUJAMOS EL 2
MOVWF PORTB
GOTO SEGUIR
PROBAR3 MOVLW B'00100'
XORWF PORTA ;COMPARAMOS W CON EL PUERTOA (IF W == PUERTOA)
BTFSS STATUS,Z ;RESULTADO DEL FLAG Z (IF W==PUERTOA THEN Z=0 ELSE Z=1)
GOTO BORRAR ;SI Z ES IGUAL A 1 ENTONCES VAMOS A SEGUIR
MOVLW B'01100000';DIBUJAMOS EL 3
MOVWF PORTB ;CARGAMOS W AL PUERTO B
GOTO SEGUIR ;NOTA 0=ENCENDIDO 1=APAGADO
END