You are on page 1of 25

.

Unidad III:
MICROCONTROLADOR
MARZO 2015

Objetivo:
El estudiante elaborar programas en lenguaje
ensamblador a partir de un ambiente integrado de
desarrollo, a fin de resolver problemas bsicos de
ingeniera.

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Constantes Numricas y Alfanumricas.


Repertorio de Instrucciones.
Saltos Condicionales.
Comparacin de Registros.
Otras Directivas.
Subrutinas.
Retardos.
Pantalla de Cristal lquido.
Timer 0 (TMR0).
Bits de Configuracin del TMR0.
3

Constantes Numricas y
Alfanumricas
TIPO

SINTAXIS

EJEMPLO

Decimal

Dcantidad
dcantidad
.cantidad

D100
d100
.100

Hexadecimal

Hcantidad
hcantidad
<cantidad>H
<cantidad>h
0x<cantidad>

H100
h100
100H
100h
0x0C

Octal

Ocantidad
ocantidad

O100
o100

Binario

Bcantidad
bcantidad

B100
b100

ASCII

Acaracter
acaracter
caracter

AB
aB
B

String o Cadena de Caracteres

string

Hola!!
4

Repertorio de Instrucciones
El set de instrucciones del PIC16F84 est compuesto por
35 instrucciones, que se clasifican como:

Instrucciones de carga.
Instrucciones aritmticas.
Instrucciones lgicas.
Instrucciones de bit.
Instrucciones de salto.
Instrucciones para manejo de subrutinas.
Instrucciones especiales.

Repertorio de Instrucciones
INSTRUCCIONES DE CARGA
Instruccin MOVLW
Esta instruccin mueve al registro W un valor inmediato
determinado por 'k'.
Sintaxis:
movlw k
'k' es el valor que se quiere mover al registro 'W'
Ejemplo: Cargar en W el valor 31 decimal.
movlw 0x1F

Antes

Despus
6

Repertorio de Instrucciones
Instruccin MOVWF
Esta instruccin mueve el valor del registro W al registro
indicado por 'f'.
Sintaxis:

movwf f

Repertorio de Instrucciones
Ejemplo: Cargar en W el valor 10 decimal y transferirlo a la
direccin 0x0C de la RAM.
movlw .10
movwf 0x0C

0x0C

0x0D

0x0C

0x0D

Antes
Antes

Despus
Despus
8

Repertorio de Instrucciones
Instruccin MOVF
Esta instruccin mueve el registro indicado por 'f'.
Sintaxis:

movf f,d

Donde 'd' es el que determina donde se almacenar el


resultado, de modo que si 'd'=0 el resultado de la operacin
se guardar en el registro W, pero si 'd'=1 el resultado de la
operacin se guardar en el registro 'f'.

Repertorio de Instrucciones
Ejemplo: Almacenar en la direccin 0x0C el valor 255
decimal, en la 0x0D el valor 8, finalmente copiar el
contenido de la direccin 0x0C a la 0x0E.
movlw
movwf
movlw
movwf
movf
movwf

.255
0x0C
.8
0x0D
0x0C,0
0x0E

0
1
?

0
1
?

0
1
?

0
1
?

1
?

0
1
?

0
1
?

0
1
?

0x0C

1
?

1
?

1
?

1
?

1
?

1
?

1
?

1
?

0x0D

?
0

?
0

?
0

?
0

?
1

?
0

?
0

?
0

0x0E

1
?

1
?

1
?

1
?

1
?

1
?

1
?

1
?

10

Repertorio de Instrucciones
Instruccin CLRW
Esta instruccin borra el contenido del registro W'.
Sintaxis: clrw.
Instruccin CLRF
Esta instruccin borra el contenido del registro especificado
por la direccin 'f'.
Sintaxis: clrf f

f' es la direccin del registro a borrar.


11

Repertorio de Instrucciones
INSTRUCCIONES DE BIT
Instruccin BCF
Esta instruccin borra un bit b del registro 'f'.
Sintaxis: bcf f,b 'b' es el bit a borrar.
Instruccin BSF
Esta instruccin pone a uno un bit del registro 'f'.
Sintaxis: bsf f,b 'b' es el bit a activar (set).
12

Repertorio de Instrucciones
Ejemplo: Escriba un cdigo que haga lo siguiente: a) Borre
el contenido del registro 0x0C; b) borre el bit 0 del
registro 0x0E y; c) active el bit 5 del registro 0x0D.
clrf
bcf
bsf

0x0C
0x0E,0
0x0D,5

0x0C

0
?

0
?

0
?

0
?

0
?

0
?

0
?

0
?

0x0D

1
?

0x0E

?
0

13

Repertorio de Instrucciones
Ejercicio 1:
Escriba el cdigo en ensamblador que entre al banco 1,
configure los 5 pines del puerto A como entrada, y solo los 2
pines menos significativos del puerto B como salida.

TIEMPO: 5 MIN
08:51:55 p.m.

14

Repertorio de Instrucciones
Instruccin GOTO
Esta instruccin realiza un salto incondicional a la direccin
especificada por 'k o la etiqueta especificada. Si k=$, el
salto se produce a la misma posicin.
Sintaxis: goto k

15

Repertorio de Instrucciones
DIRECTIVAS
END
Indica el fin del programa.
EQU
Asigna el valor de <expr> a la etiqueta <label>
Sintaxis:
<label>
EQU <expr>
ORG
Indica al ensamblador la direccin de memoria de programa
donde debe ensamblarse las instrucciones del cdigo
fuente.
Sintaxis:
ORG
<expr>
16

Repertorio de Instrucciones
Ejemplo: Escriba un programa que transfiera el dato que
llega por los interruptores del puerto A hacia los
leds conectados en el puerto B. NOTA: Use
etiquetas para referirse a direcciones de memoria.

17

Repertorio de Instrucciones
PORTA
PORTB
STATUS

EQU
EQU
EQU

0X05
0X06
0X03

ORG 0
Configura
bsf
STATUS,5
movlw .31
movwf PORTA
movlw 0xE0
movwf PORTB
bcf
STATUS,5
Inicio
movf PORTA,0
movwf PORTB
goto Inicio
END

; PORTA vale 5
; PORTB vale 6
; STATUS vale 3
;Almacena instrucciones a partir
; de la dir 0 de la mem. de prog.
;Banco 1
;nmero binario 11111
;TRISA como entrada
;nmero binario 11100000
;5 bits del TRISB como salida
;Banco 0
;Lee el puerto A
;Manda el dato al puerto B
;Vuelve a leer PORTA (ciclo)
18

Repertorio de Instrucciones
__CONFIG
Indica la configuracin elegida para el grabado del pic.
Sintaxis:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST
Indica el tipo de procesador utilizado
INCLUDE <P16F84A.INC>
Indica el fichero donde se localizan las etiquetas que
nombran a los diferentes registros y el valor que le
corresponde a cada uno.
19

Repertorio de Instrucciones
Ejemplo: Repita el ejemplo anterior haciendo uso de la
librera de etiquetas P16F84A.inc.
LIST P=16F84
INCLUDE <P16F84A.INC>
ORG 0
Configura
bsf
STATUS,RP0
movlw .31
movwf PORTA
movlw 0xE0
movwf PORTB
bcf
STATUS,RP0
Inicio
movf PORTA,W
movwf PORTB
goto Inicio
END

;Banco 1
;nmero binario 11111
;TRISA como entrada
;nmero binario 11111100
;5 bits del TRISB como salida
;Banco 0
;Lee el puerto A
;Manda el dato al puerto B
;Vuelve a leer PORTA (ciclo)
20

Repertorio de Instrucciones
INSTRUCCIONES ARITMTICAS
Registro STATUS: Contiene el estado aritmtico de la ALU,
el estado del reset y los bits para seleccin del banco.

21

Repertorio de Instrucciones
Instruccin ADDLW
Esta instruccin suma el valor 'k' al registro 'W' .
Sintaxis: addlw k
donde 'k' es el valor que se desea sumar al registro W.
Ejemplo: Escriba un cdigo que haga sume un 20h al
contenido del registro W.
addlw 0x20

1
0

0
1

22

Repertorio de Instrucciones
Instruccin ADDWF
Suma el registro W con el registro indicado por 'f'.
Sintaxis: addwf f,d
si 'd'=0 el resultado de la suma se guardar en el registro
W, pero si 'd'=1 el resultado ser en el registro 'f'.
Ejemplo: Escriba un cdigo que almacene en 0x0D la suma
del contenido del registro 0x0C mas 20h.
?
0
1

?
0

?
1

?
0
1

?
0
1

?
0

?
0

?
0

0x0C

0x0D

?
1

?
0

?
1

?
1

?
1

?
0

?
0

?
0

0x0E

movlw 0x20
addwf 0x0C,0
movwf 0x0D

23

Repertorio de Instrucciones
Instruccin SUBLW
Esta instruccin resta el valor del registro W a un valor
inmediato determinado por 'k'.
Sintaxis: sublw k , donde 'k' es el valor que se quiere restar
al registro 'W (k-W).
Instruccin SUBWF
Realiza la resta del registro 'W' al registro 'f' (f-W).
Sintaxis: subwf f,d , donde 'd' es el que determina dnde
se almacenar el resultado, de modo que si 'd'=0 el
resultado de la operacin se guardar en el registro W,
pero si 'd'=1 el resultado de la operacin se guardar en 'f'.
24

Repertorio de Instrucciones
Instruccin DECF
Esta instruccin decrementa en una unidad el registro
indicado por 'f'. Si 'd'=0 el resultado W, pero si 'd'=1 el
resultado 'f'.
Sintaxis: decf f,d
Instruccin INCF
Esta instruccin incrementa en una unidad el registro
indicado por 'f'. Si 'd'=0 el resultado W, pero si 'd'=1 el
resultado 'f'.
Sintaxis: incf f,d
25

You might also like