Código PIC16F84 en Ensamblador: Control de LEDs con Switches y Contador
Código en ensamblador para PIC: definición de registros y configuración de puertos
A continuación se presenta el código en ensamblador para un microcontrolador PIC, que define los registros, configura los puertos de entrada y salida y controla los LEDs mediante pulsadores.
Definición de registros
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 85H
TRISB EQU 86H
CONT EQU 0CH
Inicio del programa
ORG 0X00
GOTO INICIO
ORG 0X05
Configuración de puertos
INICIO bsf STATUS,5 (ir al banco 1)
clrf TRISA (todas las salidas en 0)
clrf TRISB
bsf TRISB,5 (pone el bit 5 en 1)
bsf TRISB,6 (pone el bit 6 en 1)
bsf TRISB,7 (pone el bit 7 en 1)
bcf STATUS,5 (salir del banco 1 y entrar al banco 0)
Rutina principal MOST3
MOST3 movlw b'00000011' (W = 3)
movwf CONT (CONT = W)
bsf PORTB,4 (LR = 1)
bcf PORTB,3 (LN = 0)
bcf PORTB,2 (LA = 0)
bcf PORTB,1 (LV = 0)
movwf PORTA (DP = CONT)
btfsc PORTB,7 (¿SW1 = 0?)
GOTO MOST3
Rutina de pausa
PAUSA btfss PORTB,5 (¿SW3 = 1?)
GOTO REINI
decf CONT,1 (CONT--)
movlw b'00000010' (W = 2)
xorwf CONT,0 (XOR entre CONT y W, resultado en W)
btfss STATUS,2 (si Z = 1, saltar)
GOTO MOST1
bcf PORTB,4 (LR = 0)
bsf PORTB,3 (LN = 1)
bcf PORTB,2 (LA = 0)
bcf PORTB,1 (LV = 0)
movf CONT,0 (W = CONT)
movwf PORTA (DP = CONT)
GOTO PAUSA
Rutina MOST1
MOST1 movlw b'00000001' (W = 1)
xorwf CONT,0 (XOR entre CONT y W, resultado en W)
btfss STATUS,2 (si Z = 1, saltar)
GOTO MOST0
bcf PORTB,4 (LR = 0)
bcf PORTB,3 (LN = 0)
bsf PORTB,2 (LA = 1)
bcf PORTB,1 (LV = 0)
movf CONT,0 (W = CONT)
movwf PORTA (DP = CONT)
GOTO PAUSA
Rutina MOST0
MOST0 movlw b'00000000' (W = 0)
xorwf CONT,0 (XOR entre CONT y W, resultado en W)
btfss STATUS,2 (si Z = 1, saltar)
GOTO SEGUIR
Rutina SEGUIR
SEGUIR bcf PORTB,4 (LR = 0)
bcf PORTB,3 (LN = 0)
bcf PORTB,2 (LA = 0)
bsf PORTB,1 (LV = 1)
movf CONT,0 (W = CONT)
movwf PORTA (DP = CONT)
Rutina de reinicio
REINI btfsc PORTB,5 (¿SW2 = 0?)
GOTO REINI
GOTO MOST3