Está en la página 1de 3

Por eso cuando quieres seleccionar el TRISA Ó EL TRISB haces BSF STATUS, RP0, mientras que si

quieres seleccionar PORTA ó PORTB haces BCF STATUS,RP0. Recuerda que el RP0 te permite
seleccionar el banco 0 ó el 1. Por tanto, antes de seleccionar un TRIS, habrá que poner antes la
línea de código BSF STATUS,RP0, y lo dicho para un PORT.

Al mover parece que no hace falta hacer un BSF STATUS,RP0 para seleccionar el TRISA.

El PORTA tiene 5 pines y el PORTB 8 pines. Poner a set un bit de TRISA significa poner el pin
correspondiente del PORTA como entrada, mientras que poner a cero un bit de TRISA significa
poner el pin correspondiente del PORTA como salida. Lo mismo para TRISB y PORTB.
Cuando haces 0x00 estás apuntando al 00h de la memoria.

Para mover un literal al registro de trabajo, no hace falta crearlo en una constante primero,
basta con hacer MOVLW 0x0F por ejemplo, si se quiere pasar el 0F al registro de trabajo.

BCF PORTA,0 pone a 0 el pin 0 del PORTA (el pin 0 del PORTA se llama RA0).

BCF PORTB,0 pone a 0 el pin 0 del PORTB (el pin 0 del PORTB se llama RB0).

Los literales se suelen mover a los registros TRISA y TRISB, y no a los PORTA y PORTB.

BCF STATUS,RP0 La rutina necesita un retraso entre que RB0


MAIN está en alto y luego se pone a bajo. Cada
BSF PORTB,0 línea es procesada a una velocidad de ms
CALL DELAY para cada 4MHz de la oscilación del cristal. El
BCF PORTB,0 parpadeo sería demasiado rápido.
CALL DELAY
GOTO MAIN

COUNT1 EQU 08h Asigna el alias COUNT1 al registro con dirección 08h.

DELAY DELAY no es un comando que exista, sino que lo estoy definiendo como
LOOP1 una subrutina. Es subrutina porque tiene el END al final. LOOP1 es una
DECFSZ COUNT1,1 etiqueta, no un comando. DECFSZ primero decrementa 1 en COUNT1 y
GOTO LOOP1 como sigue sin ser cero, va al GOTO LOOP1, de forma que se vuelve a
DECFSZ COUNT2,1 repetir el DECFSZ. Vuelve a decrementar 1, COUNT1 sigue sin ser cero,
GOTO LOOP1 luego se ejecuta de nuevo GOTO LOOP1. Así sucesivamente hasta que
RETURN COUNT1 es cero, entonces en ese momento saltará a la línea 4. El
END COUNT1,1 el 1 significa que se guarda el resultado en el mismo registro, si
pusiera COUNT,0 se guardaría el resultado en el registro W. El RETURN
sirve para salir de la subrutina y volver al programa principal.

Pines de I/O
PORTA PORTA

TIERRA para los pines ALIMENTACIÓN para los


lógicos y de I/O pines lógicos y de I/O

PORTB PORTB

Puede ser seleccionado como un pin externo de interrupción


Puede ser seleccionado como un pin externo de interrupción

También podría gustarte