Está en la página 1de 7

TEMA 4: JUEGO DE INSTRUCCIONES

DEL PIC
1. Conceptos básicos
1.1 Código máquina vs lenguaje ensamblador
- El único lenguaje que entienden los microcontroladores es el lenguaje o código máquina formado
por ceros y unos del sistema binario.
- En los microcontroladores PIC de gama media, todas las instrucciones del lenguaje máquina tienen
14 bits de longitud.
- Facilitar la programación -> lenguajes ensambladores, en los cuales las instrucciones son
representadas por símbolos mnemotécnicos.

1.2 Lenguaje ensamblador: generalidades


- Particulares para cada microprocesador o microcontrolador.
- Código fuente (*.asm), -> TRADUCIRLO a lenguaje máquina -> ENSAMBLADOR (*.hex)

- El modelo de programación de un microprocesador es la información que necesita el programador


para usar el sistema (memoria, instrucciones, direccionamiento, tiempo ejecución)
- 16f877a tiene un juego de 34 instrucciones -> Procesador RISC.
- Muchas instrucciones se ejecutan en 1 ciclo de máquina (TCM) -> 4 ciclos de reloj (TOSC)
- Las órdenes de saltos y llamadas a subrutinas se ejecutan en 2 TCM -> 8 TOSC
- Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.
- Cualquier registro del microcontrolador puede ser fuente o destino de las instrucciones.
- No es posible hacer transferencias de memoria a memoria en una única instrucción; hay que usar el
registro W como puente.
1.3 Estructuro de las instrucciones

1.4 Instrucciones orientadas a dato tamaño Byte

Para saber si dos números son = -> Xor

INCSZ Y DECFSZ -> condicionales -> if, else y


bucles

DECF E INF -> contar

CLRWDT -> no lo usamos

ADDWF -> sumo lo de W con lo de la memoria


COMF -> cambiar 0 por 1 y viceversa
Las órdenes de saltos utilizan dos ciclos de máquina
MOVEF -> para saber si un dato es 0. Bucles, operaciones aritméticas
Para comparar números -> restando

1.5 Instrucciones orientadas a dato tamaño BIT

BTFSC -> comprueba del registro


el bit que lleva, si es 0, salta 1
orden

BTFSS -> lo mismo pero si es 1

1.6 Instrucciones literales y de


control
1.7 Modos de direccionamiento
- Acceso de información en la memoria de datos organizada en 4 bancos
- Esto da lugar a tres modos de direccionar los datos:
o Direccionamiento inmediato: El operando de la instrucción es el propio dato.
o Direccionamiento directo: El operando de la instrucción es la dirección del dato.
- Direccionamiento indirecto: cuando la instrucción toma la dirección del dato de FSR.
- La RAM está organizada en bancos -> seleccionar previamente el banco
- Selección del banco con los bits IRP, RP1 y RP0 del registro STATUS.
- Direccionamiento directo: selección con los bits RP1 y RP0.
- En el direccionamiento indirecto, el banco se selecciona con el bit IRP y el bit más significativo del
registro de funciones especiales FSR, donde debe estar la dirección del registro que se quiere
direccionar
- La lectura o escritura del dato en el registro apuntado por FSR se realiza al leer o escribir el dato en
el falso registro INDF.

1.8 Cosas a tener en cuenta de mis apuntes


- MOVLW -> L de literal, se llama así el dato. W de registro de trabajo, es el destino.
- Comentarios precedidos por ;
- Etiquetas -> una forma de ir a la dirección donde está cargada el código. Si está bien escrito se
resalta.
- El resultado es mejor sobrescribirlo en W
- No puedo intercambiar lo que hay en la dirección 50 por la 60 directamente. Tengo que sacar el 50 a
otra parte, meter el 60, y devolver el 50 al hueco del 60.
- No podemos cargar la memoria de datos directamente, tiene que pasar por el registro de trabajo
siempre. No podemos sumar directamente, pero si dirección + W
- RETORNO está ligado con CALL. Se guarda en la pila a donde tiene que volver
- Antes de hacer un salto, comprobar que estamos dentro de la página que queremos, pues la orden
de salto solo se mueve dentro de esa página.
- Comprobar siempre antes de empezar que estoy en la página que quiero
- Al acabar poner un GOTO FIN
- FSR -> contiene una dirección
- INDF -> contiene el dato de esa dirección
- Si el resultado es > 225 -> hay overflow
- Cuando pongo ORDEN, algo -> si el algo es 1, significa que sobrescribo en la dirección, si es 0,
sobrescribo en W
1.9 Estructuras que son siempre así
 COMPROBAR BANCO EN DIRECCIONAMIENTO DIRECTO
Depende del banco que quiera tengo que utilizar BSF o BCF.
BSF pone a 1, BCF pone a 0

INICIO BSF STATUS, RP0 ; PONE A 1


BSF STATUS, RP1 ; PONE A 1 -> 11 -> BANCO 3

 COMPROBAR BANCO EN DIRECCIONAMIENTO INDIRECTO


INICIO BCF STATUS, IRP

 PARA TERMINAR
FIN GOTO FIN

1.10 Repertorio de instrucciones

También podría gustarte