MICROCONTROLADORES M.Sc. César Augusto Peña C. Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona
MICROCONTROLADOR • Circuito integrado programable capaz de ejecutar las ordenes o comandos que están grabados en su memoria. • Es un computador dedicado destinado a gobernar una tarea en específico por lo cual tiene unas características limitadas (pero con una gran potencialidad).
APLICACIÓN DE µC
Frenos ABS, Vidrios electricos, Espejos electricos, aire acondicionado, Air Bag, Radio, pantallas de video, reloj, tacometro, velocimetro, inyectores, enfriamiento del motor, etc…
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
APLICACIÓN DE µC
DIFERENCIA µP y µC
CPU
ROM
ROM RAM
RAM PUERTOS
CPU
PUERTOS PERIFERICOS
PERIFERICOS MICROCONTROLADOR
MICROPROCESADOR
PIC 16F84A
• Programación con 35 instrucciones • Max. Velocidad de operación - 20 MHz • Memoria de programa de 1024 palabras • 68 bytes de memoria RAM • 64 bytes de memoria EEPROM • Instrucciones de 14-bit • Datos de 8-bit
• cuatro Interrupciones - Externa por el pin RB0/INT - Desbordamiento timer TMR0 - Cambios sobre los pines PORTB<7:4> - Completar escritura EEPROM
ARQUITECTURA PROCESADORES
Unidad Central De Proceso
Memoria de Bus común de direcciones
8 Bus de Datos e Instrucciones
Instrucciones + Datos
Arquitectura Von Neumann
ARQUITECTURA PROCESADORES 10
Memoria de
Bus de dirección de instrucciones
9
Unidad Central
Bus dirección de datos
Memoria de Datos
Instrucciones 14
1K x 14
Bus de instrucciones
De
8
Proceso
Bus de Datos
512 x 8
Arquitectura Harvard (memoria de instrucciones y datos independientes)
MEMORIA DE PROGRAMA • ROM: Se graba en el chip durante el proceso de su fabricación. • EPROM: Se graba desde un periférico especial de un PC. Posee una ventana de cristal, la cual es sometida a rayos ultravioleta para ser borrada. • OTP: Se graba como la EPROM, pero una sola vez. • EEPROM: Procesos de escritura/borrado electricamente con un PC. Garantizan 1’000.000 ciclos E/B. • FLASH: Procesos de escritura/borrado electricamente con un PC. Garantizan 1’000 ciclos E/B. Son de Bajo consumo y mayor confiabilidad.
MEMORIA DE PROGRAMA
1k EEPROM
0000 H
VECTOR RESET
0004 H
VECTOR INTERRUPCIÓN
PC
NIVEL 1 NIVEL 2
03FF H
NIVEL 3
0400 H NO IMPLEMENTADO
1FFF H
. . .
NIVEL 8
13
0
MEMORIA DE DATOS
SFR
GPR
INDF TMR0 PCL ESTADO FSR PUERTO A PUERTO B
INDF OPTION PCL ESTADO FSR TRIS A TRIS B
EEDATA EEADR PCLATH INTCON
EECON1 EECON2 PCLATH INTCON
68 REGISTROS DE PROPOSITO GENERAL
MAPEADOS EN EL BANCO 0
BANCO 0
BANCO 1
CONFIGURACIÓN PUERTOS PIC16F84 REGISTRO TRISB (BANCO 1)
1 1 1 1 0 0 0 0 RB7
.
.
.
RB0
REGISTRO TRISA (BANCO 1)
- - - 1 0 1 0 0 RA4 Si el bit asociado al pin esta: • 0 el pin actúa como salida • 1 el pin actúa como entrada
. . .
RA0
Pines de salida: • RB3, RB2, RB1, RB0, RA3, RA1, RA0 Pines de entrada: RB7, RB6, RB5, RA4, RA2
USO PUERTOS PIC16F84 REGISTRO TRISB (BANCO 1)
1 1 1 1 0 0 0 0 RB7
.
.
.
RB0
REGISTRO PORTB (BANCO 0)
0 1 0 1 0 0 1 1 Entradas
Salidas
REGISTRO DE ESTADO 7
6
5
4
3
IRP RP1 RP0 TO# PD# R/W
R/W
R/W
R
R
2
1
0
Z
DC
C
R/W
R/W
R/W
RP1-RP0: 00 – Accede al banco 0 01 – Accede al banco 1 Z: Cero 1 – El resultado de una instrucción lógico-aritmética ha sido 0 0 – El resultado de una instrucción lógico-aritmética NO ha sido 0 DC: (acarreo o llevada en el 4 bit) 1 – Ocurre Acarreo 0 – No ocurrio Acarreo C: (acarreo o llevada en el 8 bit) 1 – Ocurre Acarreo 0 – No ocurrio Acarreo
INSTRUCCIÓN MOVLW k K
W
Ejm: (obsérvese las diferentes formas en que se expresa el decimal 7 movlw d’7’ movlw .7 movlw b’00000111’ REGISTRO DE TRABAJO W (WORK)
x
x
x
x
x
x
x
x
1
1
1
movlw .7
0
0
0
0
0
REGISTRO DE TRABAJO W (WORK)
INSTRUCCIÓN MOVWF f W Ejm:
F
movwf PORTB
Registro TRISB
0 0 0 0 0 0 0 0
Registro W
1 0 1 1 0 1 0 1
Registro PORTB
x x x x x x x x Movwf PORTB
Registro PORTB
1 0 1 1 0 1 0 1
REGISTRO DE TRABAJO W (WORK)
INSTRUCCIÓN MOVF f,d F Si d = 0 Si d = 1
Destino
El destino es W El destino es la misma fuente
Ejemplo 1:
1 1 0 0 1 1 1 0
1 1 0 0 1 1 1 0 movf PORTB,0
R. ESTADO <2> : Z
PORTB Ejemplo 2:
0 0 0 0 0 0 0 0 PORTB
W
=0
0 0 0 0 0 0 0 0 movf PORTB,1
PORTB R. ESTADO <2> : Z
=1
INSTRUCCIÓN BSF f,b 1
f,b
Ejm: bsf
PORTB,1
x x x x x x x x PORTB
bsf PORTB,1
x x x x x x 1 x PORTB
INSTRUCCIÓN BCF f,b 0
f,b
Ejm: bcf
PORTB,7
x x x x x x x x PORTB
bcf PORTB,7
0 x x x x x x x PORTB
INSTRUCCIÓN CLRF f 00h 1
f z
Ejm: clrf
PORTA
0 0 0 0 0 0 0 0 x x x x x x x x PORTA
clrf PORTA
PORTA
R. ESTADO <2> : Z
=1
PROGRAMACIÓN ;AUTOR: CÉSAR AUGUSTO PEÑA c ;PIC: 16F84A ;FUNCION: Prende un LED (RA0) si un pulsador NA (RB0) envia un 1 logico ;CARACTERISTICAS: ;OSCILADOR: XT ;WATCHDOG TIMER: OFF ;POWER UP TIMER: ON ;CODE PROTECT: OFF
INICIO
CICLO
INCLUDE
"P16F84A.Inc"
ORG goto ORG bsf clrf movlw movwf bcf clrf clrf
00 INICIO 05 STATUS,RP0 TRISA b'00000001' TRISB STATUS,RP0 PORTA PORTB
movf movwf goto END
PORTB,0 PORTA CICLO
;Salta al banco 1 ;Puerto A como salida ;RB0 como entrada ;Salta al banco 0 ;Pone un 0 logico en las salidas ;Pone un 0 logico en las salidas ;W = PORTB ;PORTA = W
Objetivo: RA0 = RB0 (podria ser una alarma primitiva)
PROGRAMACIÓN INCLUDE "P16F84A.Inc" ;************************** DEFINICION DE REGISTROS***************************** CBLOCK .12 VALOR1 ENDC ;*************************************PROGRAMA*************************************** ORG 00 GOTO INICIO ORG 05 ;**************************CONFIGURACION DE PUERTOS************************** INICIO bsf STATUS,5 ;Salta al banco 1 movlw b'11111' movwf TRISA ;Puerto A como entrada clrf TRISB ;Puerto B como salida bcf STATUS,5 ;Salta al banco 0 ;__________________________________________________ clrf PORTB ;borra puerto B por seguridad movf PORTA,0 ;W = PORTA movwf VALOR1 ;VALOR1 = W movf VALOR1,1 ;Z=1 si PORTA = b'0000' movlw .7 ;W = 7 (decimal) movwf PORTB ;PORTB = 7 (decimal) movf PORTB,1 ;Z=0 debido a PORTB no es igual cero END
Objetivo: Observar en la simulación el funcionamiento del bit Z (cero)
TIPOS DE OSCILADORES OSCILADOR TIPO RC:
FOSCILACIÓN
REXT
CEXT
625 KHz
10 K
20 pF
80 KHz
10 K
220 pF
80 Hz
10 K
0.1 pF
TIPOS DE OSCILADORES OSCILADOR TIPO HS – XT - LP:
FRECUENCIA DE FUNCIONAMIENTO • Con la frecuencia de trabajo se establece la velocidad en la ejecución de las instrucciones. 1 CicloInstrucción= 4 * TReloj TReloj = 1 / FrecuenciaTrabajo TReloj = Periodo del reloj fTrabajo = Frecuencia de trabajo
FRECUENCIA DE FUNCIONAMIENTO 1 CicloInstrucción= 4 * TReloj TReloj = 1 / FrecuenciaTrabajo
Cristal de 4 MHz: TReloj = 1 / 4000000 = 250ns 1 CicloInstrucción= 4 * 250ns = 1µs
FRECUENCIA DE FUNCIONAMIENTO Las instrucciones se ejecutan en un tiempo igual a un CicloInstrucción excepto las de salto que tardan dos. Un programa contiene 100 instrucciones de las cuales 25 son de salto (cristal de 4 MHz) 1 CicloInstrucción= 4 / FrecuenciaTrabajo = 1µs El programa tarda: 75 * CicloInstrucción+ 25 * 2 * CicloInstrucción El programa tarda: 125 µs
INSTRUCCIÓN DECFSZ f,d (f – 1) Ejm:
REG1
Ejm:
decfsz goto goto
REG1,1 SUBRUTINA1 SUBRUTINA2
0 0 0 0 0 0 1 1 decfsz goto goto
REG1,1 SUBRUTINA1 SUBRUTINA2
foW ;REG1 = REG1 – 1 ;si REG1 ≠ 0 se ejecuta la instrucción ;si REG1 = 0 se ejecuta la instrucción
REG1
Ejm:
0 0 0 0 0 0 0 1 decfsz goto goto
REG1,1 SUBRUTINA1 SUBRUTINA2
RETARDOS ;REGISTROS PARA CONSTRUIR RUTINA DE RETARDO CBLOCK .12 REG1, REG2, REG3 ENDC ;VALORES PARA CONSTRUIR RUTINA DE RETARDO VALOR1 EQU d'70' ; retardo 1053850 microsegundos VALOR2 EQU d'70' VALOR3 EQU d'70‘ ;SUBRUTINA DE RETARDO: RETARDO movlw VALOR1 movwf REG1 TRES movlw VALOR2 movwf REG2 DOS movlw VALOR3 movwf REG3 UNO decfsz REG3,1 goto UNO decfsz REG2,1 goto DOS decfsz REG1,1 goto TRES retlw 0
;W = 70 ;REG1 = W ;W = 70 ;REG2 = W ;W = 70 ;REG3 = W ;DECREMENTA REG3 Y SI QUEDA “0” SALTA A UNO ;DECREMENTA REG2 Y SI QUEDA “0” SALTA A DOS ;DECREMENTA REG1 Y SI QUEDA “0” SALTA A TRES
Total de ciclos = ((valor3*3 + 5) * valor2 + 5) * valor1
INSTRUCCIÓN BTFSC f,b Salta si f = 0 Ejm:
REG1
Ejm:
btfsc goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2
1 0 1 0 0 0 1 1 btfsc goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2
;verifica el valor del bit 7 de REG1 ;si REG1<7>=1 se ejecuta la instrucción ;si REG1<7>=0 se ejecuta la instrucción
REG1
Ejm:
0 0 1 0 0 0 0 1 btfsc goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2
INSTRUCCIÓN BTFSS f,b Salta si f = 1 Ejm:
REG1
Ejm:
btfss goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2
0 0 1 0 0 0 1 1 btfss goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2
;verifica el valor del bit 7 de REG1 ;si REG1<7>=0 se ejecuta la instrucción ;si REG1<7>=1 se ejecuta la instrucción
REG1
Ejm:
1 0 1 0 0 0 0 1 btfss goto goto
REG1,7 SUBRUTINA1 SUBRUTINA2