You are on page 1of 43

Sistemas Digitales II

Ingeniería Electrónica
Ing. Sandra Aznarán Guevara
Tema: Microcontrolador
ARQUITECTURA HARVARD
16F628A
13 BITS 7 BITS
ALGUNOS TIPS PARA REPASAR Y RECORDAR

 Suma Binaria Aritmética: (add)


0+0 =0 0+ 1+=1
1 +0 =1 1 + 1 = 0 y llevo acarreo (Carry) para la siguiente cifra

 Suma Binaria Lógica: (ior)


0+0=0 0+1=1
1+0=1 1+1=1

 OR Exclusiva: (xor)
Bits iguales producen como resultado un cero (A = B = 0)
Bits diferentes producen como resultado un uno (A ≠ B = 1)
SISTEMAS DE NUMERACIÓN
Decimal Hexadecimal Binario
(Formato 4 bits BCD)
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
REGISTROS Y BANCOS
DIRECTIVA EQU
 La directiva EQU permite asignar a un registro o constante, un nombre asociado que facilita su
entendimiento.
 Ejemplo:
DATOX EQU 20H
DATOY EQU 21H
STATUS EQU 03H
F EQU 01H

INCLUDE .INC
El uso del INCLUDE, nos permite incluir en nuestro proyecto, una plantilla que nos ahorra el
trabajo de declarar todos los registros de Funciones Especiales (SFR).

Es importante destacar, que en esta plantilla, todos los registros están declarados en mayúscula.
Por lo que durante la elaboración de un programa, se debe respetar este formato.
Ejemplo:
INCLUDE <P16F84.INC> ó INCLUDE P16F84.INC
ESTRUCTURA DE UN PROGRAMA

Encabezado
En general un programa está estructurado en tres
grandes partes:
Configuración, 1) Encabezado: Define el tipo de PIC con que se está
Declaración de trabajando, Bloque de declaraciones de variables y
Registros, Datos, constantes,
Constantes.
2) Configuración de registros especiales: Registro
OPTION, INTCON, TMR0, puertos A y B, EECON,
STATUS.
org
3) Cuerpo del programa: Aquí están contenidas todas las
Cuerpo del Programa instrucciones relacionadas a la ejecución de un
programa bajo un diseño individual, realizado por el
programador.
end
ESTRUCTURA DE UN PROGRAMA
1. En todo programa se debe incluir cual es el tipo de PIC que se empleará, incluir librerías y configurarlo:
List P= 16F84A ; Tipo de PIC a utilizar
include < p=16F84.inc> ; Librería asociada al PIC que se está utilizando

2. Al escribir un programa se realizan y organizan las instrucciones en columnas:


 1ra Columna: nombrar variables o colocar etiquetas.
 2da Columna: aplicar la instrucción.
 3ra Columna: contiene los datos necesarios para que pueda ejecutarse dicha instrucción.
 4ta Columna: contiene comentarios, no tomados en cuenta por el microcontrolador.

Ejemplo: Defina a la variable M en la posición de memoria expresada en 15H


1raC 2daC 3raC 4taC
M equ 15H ; Define a la variable M en la posición 15H

3. Se emplean signos para efectuar determinadas consideraciones, por ejemplo: (;) que se emplea para
colocar comentarios. El programa no toma en cuenta todo lo que está en una línea luego de dicho
símbolo.
ESTRUCTURA DE UN PROGRAMA

1ra Columna 2da Columna 3ra Columna 4ta Columna

Etiquetas Instrucciones Operandos Comentarios

RESULTADO equ 0FH ;Declaro al registro


;RESULTADO
;En la posición 0FH
org 00H

INICIO
bsf STATUS,5
movlw FFH ; Configuramos los registros
movwf TRISA ; asociados a los puertos A y B
movlw 00H
movwf TRISB

4. Un programa siempre empieza con la instrucción “org” y termina con “end”


¿Cuál se entiende mejor? Con recomendaciones

Sin recomendaciones List P=16F84 ;Tipo de procesador


STATUS equ 03H ; Zona de declaraciones
PORTA equ 05H
List= 16F84 PORTB equ 06H
org 00H TRISA equ 85H
goto inicio TRISB equ 86H
inicio Bsf 03H,5 W equ 00H
movlw 1FH F equ 01H
movwf 85H
movlw 00H org 00H
movwf 86H
bcf 03H,5 INICIO
movlw b’11110000’ bsf STATUS,5 ;Se pasa a banco1
movwf 06H movlw 1FH
movf 05H,0 movwf TRISA ; Se configura puerto A
ExploPA Btfsc 05H,3 movlw 00H
goto ExploPA movwf TRISB ; Se configura puerto B
goto INVPB bcf SATUS,5 ; Se regresa al banco 0
INVPB comf 06H,1 movlw b’11110000’
End movwf PORTB ; Se escribe valor
movf PORTA,W
End
EJEMPLO:
Organización de la Memoria
FORMATO DE SISTEMAS DE NUMERACIÓN ADMITIDOS POR EL
MICROCONTROLADOR

Tipo de Sistema Formato Sigla Significado


Registro. Puede ser
Decimal D’126’ cualquiera que el
F (File)
.126 programador desee dentro
del rango permitido.

Binario B’10011011’ k Constante. Valor fijo.

W (work) Registro de trabajo principal.


Hexadecimal H’AE’
AEH Destino del Registro.
0xAE Si d vale 1, el resultado
se guardará en el Registro
que el programador haya
d (destiny)
escogido.
Si d vale 0, el resultado
se guardará en el Registro
de trabajo principal "w"
GAMA MEDIA
(14 BITS  REG. INSTRUCCIONES)
MOVLW
Sintaxis: MOVLW K

Ejemplo:

MOVLW 100 ; entonces W=100

MOVWF
Sintaxis: MOVWF F

Ejemplo:

MOVWF 01H ; copia el valor del acumulador en la dirección 01H


MOVF
Sintaxis: MOVF F,d
Mueve el contenido de un registro al acumulador o al propio registro
Ejemplo:
SI EDAD=38

MOVF EDAD,0 ; entonces W=38


MOVF EDAD,1 ; entonces EDAD=38

BCF
Sintaxis: BCF F,b
Pone a cero el bit b del registro F.

Ejemplo:

BCF PORTA, RA4


BCF PORTA, 4
BSF
Sintaxis: BSF F,b
Pone a 1 el bit b del registro F
Ejemplo:

BSF PORTA, RA0


BSF PORTA, 0

INCF
Sintaxis: INCF F,d
Incrementa en 1 el registro F

Ejemplo:
Si tenemos un registro DIA=7, Aplicamos la instrucción:

INCF DIA, 0 ; entonces DIA=7 y W=8


DECF
Sintaxis: DEC F,d
Decrementa en 1 el registro F
Ejemplo:
Tenemos un registro REG=4
DEC REG, 0 , entonces REG=4 y W=3

INCFSZ
Sintaxis: INCFSZ F,d
Incrementa en 1 el registro F y si el valor de d es cero entonces salta a
otra instrucción.

Ejemplo:

INCFSZ VALOR, w
INSTRUCCIÓN 1 ; si W diferente de 0
INSTRUCCIÓN 2 ; si W=0
DECFSZ
Sintaxis: DECFSZ f,d
Decrementa el registro F y si resultado es 0 se salta una instrucción.
Ejemplo:
DECFSZ VALOR, w
INSTRUCCIÓN 1 ; si W diferente de 0
INSTRUCCIÓN 2 ; si W=0

INCFSZ
Sintaxis: INCFSZ F,d
Incrementa en 1 el registro F y si el valor de d es cero entonces salta a
otra instrucción.

Ejemplo:

INCFSZ VALOR, w
INSTRUCCIÓN 1 ; si W diferente de 0
INSTRUCCIÓN 2 ; si W=0
BTFSC
BTFSS
ADDLW

ADDWF
SUBLW

SUBWF

CLRW
CLRF

CALL
GOTO

RETURN
RETLW
RLF
RRF
SWAPF
ANDLW
ANDWF

IORLW
XORLW
XORWF
SLEEP
COMF
RESUMEN:
RESUMEN:
EJEMPLO :

En el siguiente ejemplo se muestra algunas


operaciones al respecto y los diferentes
sistemas de numeración que se puede
utilizar: decimal, hexadecimal ó binario.
Muchas Gracias por
su atención.