MICROCONTROLADORES
Universidad Nacional Experimental Politécnicade la Fuerza Armada (UNEFA)
MICROCONTROLADOR
• Circuito integrado programable capaz deejecutar las ordenes o comandos queestán grabados en su memoria.
• Es un com putador dedicado destinado agobernar una tarea en específico por locual 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
CPU
DIFERENCIA P y C
CPU ROM
RAMPUERTOS
ROM
RAM
PUERTOS
PERIFERICOSPERIFERICOS
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 pinesPORTB<7:4>- Completar escritura EEPROM
ARQUITECTURA PROCESADORES
Unidad
Central
De
Proceso
Bus común dedirecciones
8
Bus deDatos eInstrucciones
Memoria de
Instrucciones
+
Datos
Arquitectura Von Neumann
ARQUITECTURA PROCESADORES
Memoria de
Instrucciones
1K x 14
10
Bus de direcciónde instrucciones
14
Bus deinstrucciones
Unidad
Central
De
Proceso
9
Bus direcciónde datos
8
Bus deDatos
Memoria 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 sufabricación.
• EPROM: Se graba desde un periférico especial de unPC. Posee una ventana de cristal, la cual es sometida arayos 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 Bajoconsumo y mayor confiabilidad.
VECTOR RESET
VECTOR INTERRUPCIÓN
NO IMPLEMENTADO
MEMORIA DE PROGRAMA
0000 H
1kEEPROM
0004 H
PC
03FF H0400 H
1FFF H13 0
NIVEL 1
NIVEL 2
NIVEL 3...
NIVEL 8
INDF INDFTMR0 OPTIONPCL PCL
ESTADO ESTADOFSR FSR
PUERTO A TRIS APUERTO B TRIS B
EEDATA EECON1EEADR EECON2PCLATH PCLATHINTCON INTCON
68 REGISTROSDE PROPOSITO
GENERAL
MAPEADOS ENEL BANCO 0
MEMORIA DE DATOS
SFR
GPR
BANCO 0 BANCO 1
CONFIGURACIÓN PUERTOS PIC16F84
REGISTRO TRISB (BANCO 1)
1 1 1 1 0 0 0 0RB7 . . . RB0
REGISTRO TRISA (BANCO 1)
- - - 1 0 1 0 0RA4 . . . RA0
Si el bit asociado al pin esta:• 0 el pin actúa como salida• 1 el pin actúa como entrada
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 0RB7 . . . RB0
REGISTRO PORTB (BANCO 0)
0 1 0 1 0 0 1 1
Entradas Salidas
IRP RP1 RP0 TO# PD# Z DC C
REGISTRO DE ESTADO7 6 5 4 3 2 1 0
R/W R/W R/W R R R/W R/W R/W
RP1-RP0:00 – Accede al banco 001 – Accede al banco 1
Z: Cero1 – El resultado de una instrucción lógico-aritmética ha sido 00 – El resultado de una instrucción lógico-aritmética NO ha sido 0
DC: (acarreo o llevada en el 4 bit)1 – Ocurre Acarreo0 – No ocurrio Acarreo
C: (acarreo o llevada en el 8 bit)1 – Ocurre Acarreo0 – No ocurrio Acarreo
INSTRUCCIÓN MOVLW kK W
Ejm: (obsérvese las diferentes formas en que se expresa el decimal 7movlw d’7’movlw .7movlw b’00000111’
REGISTRO DE TRABAJO W (WORK)
x x x x x x x x
movlw .7
0 0 0 0 0 1 1 1REGISTRO DE TRABAJO W (WORK)
0 0 0 0 0 0 0 0
1 0 1 1 0 1 0 1
x x x x x x x x
1 0 1 1 0 1 0 1
INSTRUCCIÓN MOVWF fW F
Ejm: movwf PORTB
Registro TRISB
Registro W
Registro PORTB
Movwf PORTB
Registro PORTB
REGISTRO DE TRABAJO W (WORK)
1 1 0 0 1 1 1 01 1 0 0 1 1 1 0
0 0 0 0 0 0 0 0
INSTRUCCIÓN MOVF f,dF Destino
Si d = 0 El destino es WSi d = 1 El destino es la misma fuente
Ejemplo 1:
PORTB
Ejemplo 2:
PORTB
movf PORTB,0
movf PORTB,1
W
R. ESTADO <2> : Z = 0
0 0 0 0 0 0 0 0PORTB
R. ESTADO <2> : Z = 1
x x x x x x x x x x x x x x 1 x
INSTRUCCIÓN BSF f,b
1 f,b
Ejm:bsf PORTB,1
PORTB
bsf PORTB,1
PORTB
x x x x x x x x 0 x x x x x x x
INSTRUCCIÓN BCF f,b
0 f,b
Ejm:bcf PORTB,7
PORTB
bcf PORTB,7
PORTB
x x x x x x x x
INSTRUCCIÓN CLRF f
00h f1 z
Ejm:clrf PORTA
0 0 0 0 0 0 0 0
PORTA
clrf PORTAPORTA
R. ESTADO <2> : Z = 1
PROGRAMACIÓN;AUTOR:;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
INCLUDE "P16F84A.Inc"
ORG 00goto INICIOORG 05
INICIO bsf STATUS,RP0 ;Salta al banco 1clrf TRISA ;Puerto A como salidamovlw b'00000001'movwf TRISB ;RB0 como entradabcf STATUS,RP0 ;Salta al banco 0clrf PORTA ;Pone un 0 logico en las salidasclrf PORTB ;Pone un 0 logico en las salidas
CICLO movf PORTB,0 ;W = PORTBmovwf PORTA ;PORTA = Wgoto CICLOEND
Objetivo: RA0 = RB0 (podria ser una alarma primitiva)
PROGRAMACIÓNINCLUDE "P16F84A.Inc"
;************************** DEFINICION DE REGISTROS*****************************CBLOCK .12
VALOR1ENDC
;*************************************PROGRAMA***************************************ORG 00GOTO INICIO
ORG 05;**************************CONFIGURACION DE PUERTOS**************************INICIO bsf STATUS,5 ;Salta al banco 1
movlw b'11111'movwf TRISA ;Puerto A como entradaclrf TRISB ;Puerto B como salidabcf STATUS,5 ;Salta al banco 0
;clrf PORTB ;borra puerto B por seguridadmovf PORTA,0 ;W = PORTAmovwf VALOR1 ;VALOR1 = Wmovf 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 ceroEND
Objetivo: Observar en la simulación el funcionamiento del bit Z (cero)
TIPOS DE OSCILADORESOSCILADOR TIPO RC:
FOSCILACIÓN REXT CEXT
625 KHz 10 K 20 pF80 KHz 10 K 220 pF80 Hz 10 K 0.1 pF
TIPOS DE OSCILADORESOSCILADOR TIPO HS – XT - LP:
FRECUENCIA DE FUNCIONAMIENTO
• Con la frecuencia de trabajo se establecela velocidad en la ejecución de lasinstrucciones.
1 Ciclo Instrucción= 4 * TReloj
TReloj = 1 / Frecuencia Trabajo
TReloj = Periodo del relojfTrabajo = Frecuencia de trabajo
FRECUENCIA DE FUNCIONAMIENTO
1 Ciclo Instrucció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 unCicloInstrucción excepto las de salto que tardan dos.
Un programa contiene 100 instrucciones de las cuales 25son 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
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1
Ejm: decfsz REG1,1goto SUBRUTINA1goto SUBRUTINA2
INSTRUCCIÓN DECFSZ f,d(f – 1) f o W
Ejm: decfsz REG1,1 ;REG1 = REG1 – 1goto SUBRUTINA1 ;si REG1 ≠ 0 se ejecuta la instruccióngoto SUBRUTINA2 ;si REG1 = 0 se ejecuta la instrucción
REG1 REG1
Ejm: decfsz REG1,1goto SUBRUTINA1goto SUBRUTINA2
RETARDO movlw VALOR1
decfszgoto
REG1,1TRES
retlw 0
RETARDOS;REGISTROS PARA CONSTRUIR RUTINA DE RETARDO
CBLOCK .12REG1, REG2, REG3
ENDC;VALORES PARA CONSTRUIR RUTINA DE RETARDOVALOR1 EQU d'70' ; retardo 1053850 microsegundosVALOR2 EQU d'70'VALOR3 EQU d'70‘
;SUBRUTINA DE RETARDO:;W = 70
movwf REG1 ;REG1 = WTRES movlw VALOR2 ;W = 70
movwf REG2 ;REG2 = WDOS movlw VALOR3 ;W = 70
movwf REG3 ;REG3 = WUNO decfsz REG3,1 ;DECREMENTA REG3 Y SI QUEDA “0” SALTA A UNO
goto UNOdecfsz REG2,1 ;DECREMENTA REG2 Y SI QUEDA “0” SALTA A DOSgoto DOS
;DECREMENTA REG1 Y SI QUEDA “0” SALTA A TRES
Total de ciclos = ((valor3*3 + 5) * valor2 + 5) * valor1
1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1
Ejm: btfsc REG1,7goto SUBRUTINA1goto SUBRUTINA2
INSTRUCCIÓN BTFSC f,bSalta si f<b> = 0
Ejm: btfsc REG1,7 ;verifica el valor del bit 7 de REG1goto SUBRUTINA1 ;si REG1<7>=1 se ejecuta la instruccióngoto SUBRUTINA2 ;si REG1<7>=0 se ejecuta la instrucción
REG1 REG1
Ejm: btfsc REG1,7goto SUBRUTINA1goto SUBRUTINA2
0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1
Ejm: btfss REG1,7goto SUBRUTINA1goto SUBRUTINA2
INSTRUCCIÓN BTFSS f,bSalta si f<b> = 1
Ejm: btfss REG1,7 ;verifica el valor del bit 7 de REG1goto SUBRUTINA1 ;si REG1<7>=0 se ejecuta la instruccióngoto SUBRUTINA2 ;si REG1<7>=1 se ejecuta la instrucción
REG1 REG1
Ejm: btfss REG1,7goto SUBRUTINA1goto SUBRUTINA2