Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mmapuntes PDF
Mmapuntes PDF
Introducción
Competencias Específicas
Conoce, comprende y aplica la arquitectura del microcontrolador PIC 16F877
PIC
Utiliza los recursos del microcontrolador a través del lenguaje ensamblador
(Microprogramación)
Simula en MPLAB y Proteus sistemas basados en el microcontrolador 16F877
Microcontrolador
Circuito integrado programable que contiene los elementos básicos de un
computador.
2 39
3 38
4 37
5 36
6 35
7 34
8 33
9 32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
El MC en un Sistema de Control
20 21
Señal de
Señal de Mando
Referencia Variable
Controlada
Actuadores Planta
Programación del MC
Escribir el programa en lenguaje ensamblador o en lenguaje C. En el curso
usaremos el lenguaje ensamblador.
Depurar el programa
Obtener el programa en lenguaje máquina
Grabar el programa en el microcontrolador
Arquitectura
Atributos del sistema visibles al programador en lenguaje ensamblador:
Registros de Trabajo
Modos de direccionamiento
Conjunto de Instrucciones
Sistema de Interrupciones
Organización
Unidades funcionales e interconexiones que materializan una Arquitectura
(Hardware)
El Microcontrolador PIC 16F877
CPU RISC. Tiene 35 instrucciones.
Cada instrucción es de una sola palabra de 14 bits.
Máxima frecuencia de reloj 20 MHz.
Todas las instrucciones a excepción de las de salto se ejecutan en un ciclo de
instrucción.
Memoria de programa Flash de 8Kx14 words
Memoria de datos RAM de 368 bytes
Memoria de datos EEPROM de 256 Bytes
5 puertos de entrada/salida: A, B, C, D, E con 6, 8, 8, 8, 3 líneas
respectivamente
3 timers: 2 de 8 bits y 1 de 16 bits
2 módulos de captura-comparación-PWM
ADC de 10 bits de 8 canales
Puerto paralelo esclavo
Comunicación serial USART, SPI/I2C
Diagrama de Bloques
Memoria
de Memoria de Timer 2
Memoria
Programa Datos
EEPROM Timer 1
(Flash) (SRAM)
256x8 CCP1 CCP2
8Kx14 368x8 Timer 0
Puertos de MSSP
ADC USART
Entrada/Salida SPI/I2C
Microprocesador
Circuito integrado que contiene una unidad central de procesamiento CPU
Diagrama de bloques de la CPU
Memoria de Programa
Circuito digital que almacena Instrucciones.
Memoria de Datos
Circuito digital que almacena los Datos.
Contenido
13 0
Arreglo
Celdas de 14 bits,
lineal Posiciones
de
celdas ...
Dirección
Combinación binaria que Identifica a una posición de memoria
1FFE H 1FE H
1FFF H 1FF H
Dato
Combinación binaria a ser procesada
Instrucción
Combinación binaria que para el Procesador Central es una orden a ser ejecutada
Formato de Instrucción
13 0
Un Word de 14 bits
Programa
Secuencia de Instrucciones
Dirección Contenido
0000 H Instrucción 1
0001 H Instrucción 2
0002 H Instrucción 3
0003 H Instrucción 4
0004 H Instrucción 5
0005 H Instrucción 6
... ...
1FFE H
1FFF H
1007 H 3CA9
1008 H 0077
1009 H 24B2
100A H 09C1
100B H 180D
100C H 1160
... ...
Función de la CPU
10001100100111
01110001010100
00011101010100
11101010100011
01010100000111
11101000100011
00001101010011
Diagrama de Flujo
INICIO
0000 → PC
Carga de la
instrucción FETCH
PC + 1 → PC
Ejecución
Ejecución
3. La Memoria del MC
Tipos de Memoria
8Kx14 de memoria FLASH de programa
368 bytes de memoria SRAM (RAM estática) de datos
256 bytes de EEPROM (RAM no volátil), también para datos
Memoria FLASH
Almacena programas. Es direccionada por el contador de programa PC
Memoria SRAM
Almacena datos
Registros de Funciones Especiales
Configuran y permiten el acceso a los recursos del microcontrolador
Memoria EEPROM
El acceso se realiza a través de los registros SFR:
10D EEADR 00
10F EEADRH
10C EEDATA 256 bytes
10E EEDATH
18C EECON1
18D EECON2
FF
Modos de Direccionamiento
Modo de direccionamiento inherente
Modo de direccionamiento literal
Modo de direccionamiento directo
Modo de direccionamiento indirecto
Direccionamiento Inherente
No necesita ningún operando. Ejemplo: SLEEP
Direccionamiento Literal
MOVLW 0x2
CPU
IR
3002 MOVLW 0x2
W 00
CPU
IR
3002 MOVLW 0x2
W 02
1
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
Direccionamiento Directo
MOVWF 0x20
CPU
Memoria de Datos
IR
MOVWF 0x20 Dirección Contenido
00A0 00 H
01 H
20
... ...
1F H
20 H 5D
... ...
W 03 03
FE H
FF H
CPU
Memoria de Datos
IR
MOVWF 0x20 Dirección Contenido
00A0 00 H
01 H
20
... ...
1F H
20 H 03
... ...
W 03 03
FE H
FF H
2
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
Direccionamiento Indirecto
FSR (Registro de selección de File) actúa como puntero.
Toda instrucción que usa el registro INDF realmente accede al registro referenciado
por el registro FSR.
CPU
Memoria de Datos
CLRF INDF
Dirección Contenido
IR 000 H EA
0180 001 H 96
...
00 020 H 12
021 H 36
...
FSR 20 1FE H 00
0020 1FF H 00
CPU
Memoria de Datos
CLRF INDF
Dirección Contenido
IR 000 H EA
0180 001 H 96
...
00 020 H 00
021 H 36
...
FSR 20 1FE H 00
0020 1FF H 00
3
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
Nomenclatura
Campo Descripción Campo Descripción
Bit selector de destino: d = 0: El resultado
f Dirección de registro (de 00h a 7Fh) d se almacena en W. d = 1: El resultado se
almacena en el registro f. Por defecto d=1.
W Registro de trabajo (acumulador) PC Contador de programa.
b Dirección de bit dentro de un registro de 8 bits TO Bit de tiempo expirado.
k Campo de literal, dato constante o etiqueta PD Bit de baja potencia.
No importa “0” o “1”. El ensamblador generará
X el código con x=0. Es recomendable esta forma
de uso por compatibilidad.
Conjunto de Instrucciones
4
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
5
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
6
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
7
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
8
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
9
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
10
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
Ejemplo 1
Escribir un programa en lenguaje ensamblador que sume números de 16 bits según
el esquema:
(21)(20)+
(23)(22)
-----------
(23)(22)
#include <p16f877.inc>
MOVF 0x20,W
ADDWF 0x22,F
BTFSC STATUS,C
INCF 0x23,F
MOVF 0x21,W
ADDWF 0x23,F
End
11
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
1. Procedimientos
La pila
12
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
13
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
Ejemplo 3
Escribir un programa de multiplicación de números de 8 bits
#include <p16f877.inc> RRF MR,F
;(26)-Multiplicando BTFSC STATUS,C
;(28)-Multiplicador CALL SUMA16
;(25)(24)-Resultado CALL DESPLAZA16
;(29)-Contador DECFSZ CNT,F
MD EQU 0X26 GOTO OTRO_BIT
MR EQU 0X28 BUCLE:
MD_H EQU 0X27 GOTO BUCLE
PR_H EQU 0X25 SUMA16:
PR_L EQU 0X24 MOVF MD,W
CNT EQU 0X29 ADDWF PR_L,F
MOVLW 0X8D BTFSC STATUS,C
MOVWF MD INCF PR_H,F
MOVLW 0XB5 MOVF MD_H,W
MOVWF MR ADDWF PR_H,F
MOVLW 0X00 RETURN
MOVWF PR_H DESPLAZA16:
MOVWF PR_L BCF STATUS,C
MOVWF MD_H RLF MD,F
MOVLW 0X08 RLF MD_H,F
MOVWF CNT RETURN
OTRO_BIT: END
14
Curso: Microcontroladores y Microprogramación – Clases Prácticas Profesor: Wildor Ferrel Serruto
2. Manejo de tablas
Ejemplo 4
Escribir el programa que convierte una cifra BCD en código 7 segmentos
#include <p16f877.inc>
CIFRA EQU 0X20 a
MOVLW 6
MOVWF CIFRA f b
CALL BCD_A_7SEG g
BUCLE:
GOTO BUCLE e c
BCD_A_7SEG:
MOVF CIFRA,W
ADDWF PCL,F d
; -gfedcba
RETLW B'00111111' ; Codigo 7 seg para la cifra 0
RETLW b'00000110' ; Codigo 7 seg para la cifra 1
RETLW b'01011011' ; Codigo 7 seg para la cifra 2
RETLW b'01001111' ; Codigo 7 seg para la cifra 3
RETLW b'01100110' ; Codigo 7 seg para la cifra 4
RETLW b'01101101' ; Codigo 7 seg para la cifra 5
RETLW b'01111101' ; Codigo 7 seg para la cifra 6
RETLW b'00000111' ; Codigo 7 seg para la cifra 7
RETLW b'01111111' ; Codigo 7 seg para la cifra 8
RETLW b'01101111' ; Codigo 7 seg para la cifra 9
END
15
1. Puertos de Entrada/Salida
Patillaje
Registros de los Puertos de Entrada/Salida
PUERTO B
Pines RB3:RB0 Pines RB7:RB4
PUERTO C
Pines RC<2:0>, RC<7:5> RC<4:3>
PORT D PORT E
2. Sistema de Interrupciones
Las interrupciones permiten a dispositivos externos o eventos externos forzar un
cambio en la secuencia de ejecución del programa. Cuando ocurre una
interrupción, la ejecución del programa salta a la dirección 004.
El programa a partir de la dirección 004 se llama rutina de servicio de interrupción
(ISR) y termina en una instrucción de retorno de interrupción (RETFIE). Con esta
instrucción se regresa al programa principal a la dirección que había sido
almacenada automáticamente en la pila.
La fuente de interrupción se identifica por su flag asociado. Existe también, un bit
de habilitación asociado a cada fuente de interrupción y un bit habilitador
global que puede inhabilitar todas las interrupciones.
Si dos o más fuentes de interrupción están habilitadas, la ISR debe determinar
cuál es la fuente activa.
Fuentes de Interrupción
Lógica de interrupción
3. El Timer 0
Principio de funcionamiento de un Timer
Desbordamiento
Esquema descriptivo
Características
Temporizador/contador de 8 bits
Se puede leer y se puede escribir
Pre-escalador programable de 8 bits
Selección de reloj interno o externo
Interrupción por desbordamiento de FFH a 00H
Selección de flanco para el reloj externo
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
1. El Tiimer 0
Caracteerísticas
Temporizador/c contador de 8 bits
Permitte lectura
a y escriturra
Pre-esscalador programa
p able de 8 bits
Fuente de reloj seleccion nable externa o intterna
Puede e producir interrupcción por desbordam
d miento (C
Cambio de
e FFh a 00
0h)
Flancoo seleccio
onable pa ara el relo
oj externo
Esquem
ma Descrriptivo
Registroo OPTIO
ON_REG
G
0 - Interru
upción poor flanco de
d bajada a del pin INT.
T0CS – Bitt de selec
cción de reloj del timmer 0
1 – Los puulsos para
a el timer 0 ingresann por el pin RA4.
0 - Reloj interno (Fo
osc/4).
T0SE – Bit de seleccción de flaanco de la fuente del timer 0
1 – Incremmento en el flanco o de bajadda en el pin
p
0 - Incremmento en el flanco de subida a en el pin
n
PSA – Bit de asigna ación de pre-escal
p ador
1 – El pre-escalado or se asignna al wathhdog
0 - El pre--escaladoor se asign
na al timer 0
PS2, PS1, PS0 – Bit de
d selecc ción del fa
actor de pre-escala
p amiento
Pre-escaalador asignado
a al Timeer 0 (PSA
A=0)
2
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Pre-escaalador asignado
a al Watcchdog (P
PSA=1)
3
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
; El Time
er se ha desbordado
d o
2. El Tiimer 1
Caracteerísticas
Temporizador/c contador de 16 bitss
Permitte lectura
a y escriturra
Fuente de reloj seleccion nable externa o intterna
Puedee producir interrupc ción por desbordam
d miento (C
Cambio de
e FFFFh a 0000h)
Se puede reiniccializar de
esde los módulos
m CCP
Registro
o contador de 16 bitts
Modos de opera
ación
• Con reloj interno
o
• Con reloj externo
o
• Con reloj externo
o y circuitto oscilador
Esquem
ma Descrriptivo
4
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Timer 1 operan
ndo con reloj
r inteerno
Timer 1 operan
ndo con reloj
r externo
5
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Registroo T1CON
6
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Lectura
a del Tim
mer 1 en corrida libre
; Todas l
las interr
rupciones están inh
habilitada
as
MOVF TMR1H,
T W ; Leer el byte alto
o
MOVWF TMPH ;
MOVF TMR1L,
T W ; Leer el byte bajo
o
MOVWF TMPL ;
MOVF TMR1H,
T W ; Leer el byte alto
o
SUBWF TMPH, W ; Sustraer
r
BTFSC STATUS,Z ; ¿Difere
encia no es
e 0?
GOTO CONTINUE
C ectura de 16 bits
; Buena le
;
; TMR1L h
ha generad
do acarreo
o entre la
as lectura
as del byt
te alto y bajo.
7
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
; La nuev
va lectura
a será cor
rrecta.
MOVF TMR1H,
T W ; Leer byt
te alto
MOVWF TMPH ;
MOVF TMR1L,
T W ; Leer byt
te bajo
MOVWF TMPL ;
requiere, se vuelve
; Si se r en a habil
litar las interrupc
ciones
CONTINUE ; Continu
uación del
l código
3. El Tiimer 2
El Timer 2 es de 8 bits
b con pre-escalador, post--escaladoor y un reg
gistro de periodo.
p
Cuando en el pre e-escalad
dor y post-escalad
dor se collocan los valores máximos,
m el
intervalo de tiemppo generaado es el mismo
m que el de un
n timer dee 16 bits.
T2CON
N registerr
TOUTPS3 - TOUTPS0
0 – Bits de selección
n del facto
or del posst-escalam
miento de
el Timer2
8
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
9
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
44. El Módu
M ulo CC
CP1
Contiene
e un registtro de 16 bits
b que puede
p fun
ncionar co
omo:
Registtro de 16 bits
b de ca aptura
Registtro de 16 bits
b de co omparació ón
Registtro de ciclo de trab
bajo de se
eñal PWM
Modo Captura
C
10
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Modo Compara
C ación
Disparad
dor de
Evento Es
special
Modo PWM
P
11
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
Periodo PWM
P
Periodo PW
WM = [(PR2) + 1] • 4 • TOSC • (v
valor del pree-escalador de TMR2)
Para foscc = 20 MH
Hz (Tosc=550nS).
Resolución PWM
Ressolución = log2(FOSSC/(FPWM*V
Valor Pre--escaladorr)) bits
Timer u
usado en
n los mod
dos del módulo
m C
CCP
Modo CCP Tim
mer usado
Captura Timer 1
Comparaación Timer 1
PWM Timer 2
Interaccción de los
l dos módulos
m CCP
Modo dee Mod
do de
Interracción
CCPx CC
CPy
Captura Capturra Tienen la misma base dee tiempo TM
MR1
La comparacción debe seer configuraada como Diisparador dee Evento
Captura Comparación
Especial, el cual
c borra TMR1.
T
Las comparaaciones debeen ser configuradas com mo Disparaddor de Evennto
Comparaciión Comparación
Especial, el cual
c borra TMR1.
T
Las señales PWM
P tendráán la mismaa frecuenciaa y tasa de actualizació
a ón
PWM PWM
(IInterrupciónn TMR2).
PWM Capturra N
Ninguna
12
Curso: Microccontroladores y Microprogra
amación – Clases Prácticas
CCP1C
CON Reg
gister
CCP1M33 - CCP1M
M0 – Bitss de seleccción del modo
m del modulo
m CC
CP1.
CCP
P1M3 -
Modo
CC
CP1M0
0
0000 Móduloo CCPx inhaabilitado (R
Resetea al módulo)
m
0
0100 Modo captura,
c cadaa flanco de bajada
0
0101 Modo captura,
c cadaa flanco de subida
0
0110 Modo captura,
c cadaa 4to flancoo de subida
0
0111 Modo captura,
c cadaa 16avo flannco de subida
Modo comparación
c n, inicializa el pin CCP
P en nivel baajo, en la igualdad de laa
1000
comparaación setea el
e pin CCP (CCPIF es seteado)
Modo comparación
c n, inicializa el pin CCP
P en nivel allto, en la iguualdad de laa
1001
comparaación resetea el pin CCP (CCPIF es e seteado)
Modo comparación
c n, Genera innterrupción en la igualddad de la coomparación
1010
(CCPIF es seteado, el pin CCP P no es afecttado)
1011 Modo coomparación n, Disparadoor de Evento o Especial (CCPIF
( es seteado)
s
11xx Modo PW
WM
Inicializzación en
n modo P
PWM
CLRF CCP1CON
C ; Módulo CC
CP apagado
o
CLRF TMR2
T ; Bor
rrar Timer
r 2
MOVLW 0x7F ;
MOVWF PR2 ;
MOVLW 0x1F ;
MOVWF CCPR1L ; Ciclo de trabajo de
d 25% dell periodo PWM
CLRF INTCON
I ; Inhabilita
I ar interru
upciones y borrar T0IF
T
BSF ST
TATUS, RP0
0 ; Banco 1
BCF TR
RISC, PWM1
1 ; Pin de
e salida
CLRF PIE1
P habilitar interrupc
; Inh ciones per
riféricas
BCF ST
TATUS, RP0
0 ; Banco 0
CLRF PIR1
P ; Bor
rrar los Flags
F de interrupci
i iones peri
iféricas
MOVLW 0x2C ; Mo
odo PWM, los
l 2 LSBs
s del cicl
lo de trab
bajo = 10
MOVWF CCP1CON ;
BSF T2
2CON, TMR2
2ON ; Time
er 2 arran
ncado
;
errupción de CCP1 está
; La inte e inhab
bilitada,
; consult
tar el fla errupción de TMR 2
ag de inte
;
od_Match
PWM_Perio
BTFSS PIR1, TMR
R2IF
GOTO PWM_Period
P d_Match
; Actuali
izar el pe
eriodo PWM
M period y el sigui
iente cicl
lo de trab
bajo PWM
BCF PI
IR1, TMR2I
IF
13
CURSO: MICROCONTROLADORES Y MICROPROGRAMACIÓN – CLASES PRÁCTICAS
1. Matriz de LEDs
1 2 3 4 5
1
CURSO: MICROCONTROLADORES Y MICROPROGRAMACIÓN – CLASES PRÁCTICAS
RD0
A
RD1
B
RD2
C
RD3
D
RD4
E
RD5
F
RD6
G
1 2 3 4 5
Vcc
2
CURSO: MICROCONTROLADORES Y MICROPROGRAMACIÓN – CLASES PRÁCTICAS
Fila 1
.
.
.
Fila 7
...
Vcc
Col 1 Col 5
Filas Columnas
1 2 3 4 5 6 7 1 2 3 4 5
0 1 1 1 1 1 1 0 0 0 0 0
1 0 1 1 1 1 1 0 1 1 1 1
1 1 0 1 1 1 1 0 1 1 1 1
1 1 1 0 1 1 1 0 0 0 0 1
1 1 1 1 0 1 1 0 1 1 1 1
1 1 1 1 1 0 1 0 1 1 1 1
1 1 1 1 1 1 0 0 0 0 0 0
3
CURSO: MICROCONTROLADORES Y MICROPROGRAMACIÓN
Letrero Publicitario
Fila 1
R1
.
.
... .
Fila 7
R7
... ...
Vcc
LATCHEAR
Registro de LATCHS
...
CLOCK
4
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel
F Serruto
LM0016L
5
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
16F877
RB
B3
RB
B2
RB
B1
RB
B0
RA
A2
RA
A1
RA
A0
Escriitura en
n el LCD
D
6
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
Diagrama de
d Bloqu
ues del HD4478
H 80
7
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
8
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
9
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
10
Curso: Miicrocontrolado
ores y Micropro
ogramación - Clases Prácticcas Profesor: Ing. Wildor Ferrel Serruto
11
Curso: Microcontroladores y Microprogramación - Clases Prácticas Profesor: Ing. Wildor Ferrel Serruto
Algunos Procedimientos
LCD_E BSF PORTA,2 ;ACTIVA E
NOP ;PAUSA
BCF PORTA,2 ;DESACTIVA E
RETURN
CALL LCD_REG
CLRF DIGITO
RETURN
13