ASM 16F84A - Controlar una pantalla de 7 segmentos by linkgl
Publicado: 24 Feb 2011, 05:42
Bueno para los que no conozcan de electrónica este ASM es un poco diferente al que conocemos común mente como FASM, NASM, MASM y TASM, este ASM esta hecho para procesadores de la compañía microchip que nos provee este microcontrolador PIC, el código esta hecho para el 16F84A pero podría funcionar perfectamente en otros microcontroladores de gama media.
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...
Agradecimientos especiales a Konanxp
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...
Agradecimientos especiales a Konanxp
Código: Seleccionar todo
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