Código PIC16F84 en Ensamblador: Control de LEDs con Switches y Contador

Electrónica2,66 KB

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

Descargar

PDF Word HTML