Está en la página 1de 40

MICROCONTROLADORES

Universidad Nacional Experimental Politécnica


de la Fuerza Armada (UNEFA)
MICROCONTROLADOR
• Circuito integrado programable capaz de
ejecutar las ordenes o comando s que
están grabados en su memoria.

• Es un com putador dedicado destinad o 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 • cuatro Interrupciones


• Max. Velocidad de operación - 20 MHz - Externa por el pin RB0/INT
• Memoria de programa de 1024 palabras - Desbordamiento timer TMR0
• 68 bytes de memoria RAM - Cambios sobre los pines
• 64 bytes de memoria EEPROM PORTB<7:4>
• Instrucciones de 14-bit - Completar escritura EEPROM
• Datos de 8-bit
ARQUITECTURA PROCESADORES

Memoria de
Unidad
Bus común de
direcciones Instrucciones
Central

8
+
De
Bus de Datos
Proceso Datos e
Instrucciones

Arquitectura Von Neumann


ARQUITECTURA PROCESADORES

10 9
Unidad Memoria de
Bus de dirección Bus dirección
Memoria de de instrucciones de datos
Central Datos
Instrucciones
14 De 8
1K x 14
Bus de Bus de
instrucciones Proceso 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
0000 H VECTOR RESET

1k 0004 H VECTOR INTERRUPCIÓN


EEPROM

PC

NIVEL 1
NIVEL 2
03FF H
NIVEL 3
0400 H .
.
NO IMPLEMENTADO .
NIVEL 8
1FFF H
13 0
MEMORIA DE DATOS
INDF INDF
TMR0 OPTION
PCL PCL
ESTADO ESTADO
FSR FSR
PUERTO A TRIS A
SFR PUERTO B TRIS B

EEDATA EECON1
EEADR EECON2
PCLATH PCLATH
INTCON INTCON

68 REGISTROS
GPR MAPEADOS EN
DE PROPOSITO
EL BANCO 0
GENERAL

BANCO 0 BANCO 1
CONFIGURACIÓN PUERTOS PIC 16F84
REGISTRO TRISB (BANCO 1)

1 1 1 1 0 0 0 0
RB7 . . . RB0

REGISTRO TRISA (BANCO 1)

- - - 1 0 1 0 0
RA4 . . . RA0

Si el bit asociado al pin esta: Pines de salida:


• 0 el pin actúa como salida • RB3, RB2, RB1, RB0, RA3, RA1, RA0
• 1 el pin actúa como entrada
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 2 1 0

IRP RP1 RP0 TO# PD# Z DC C


R/W R/W R/W R R 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

movlw .7

0 0 0 0 0 1 1 1
REGISTRO DE TRABAJO W (WORK)
INSTRUCCIÓN MOVW F f
W F
Ejm: 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 Destino
Si d = 0 El destino es W
Si d = 1 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 W

PORTB R. ESTADO <2> : Z =0


Ejemplo 2:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 movf PORTB,1 PORTB
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 bsf PORTB,1 x x x x x x 1 x
PORTB PORTB
INSTRUCCIÓN BCF f,b

0 f,b

Ejm:
bcf PORTB,7

x x x x x x x x bcf PORTB,7 0 x x x x x x x
PORTB PORTB
INSTRUCCIÓN CLRF f
00h f
1 z
Ejm:
clrf PORTA

0 0 0 0 0 0 0 0
PORTA
x x x x x x x x clrf PORTA

PORTA
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 00
goto INICIO
ORG 05
INICIO bsf STATUS,RP0 ;Salta al banco 1
clrf TRISA ;Puerto A como salida
movlw b'00000001'
movwf TRISB ;RB0 como entrada
bcf STATUS,RP0 ;Salta al banco 0
clrf PORTA ;Pone un 0 logico en las salidas
clrf PORTB ;Pone un 0 logico en las salidas

CICLO movf PORTB,0 ;W = PORTB


movwf PORTA ;PORTA = W
goto CICLO
END

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:

F OSCILACIÓN R EXT C EXT


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 Ciclo Instrucción= 4 * T Reloj

T Reloj = 1 / Frecuencia Trabajo


TReloj = Periodo del reloj
fTrabajo = Frecuencia de trabajo
FRECUENCIA DE FUNCIONAMIENTO
1 Ciclo Instrucción= 4 * T Reloj
T Reloj = 1 / Frecuencia Trabajo

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) foW
Ejm: decfsz REG1,1 ;REG1 = REG1 – 1
goto SUBRUTINA1 ;si REG1 ≠ 0 se ejecuta la instrucción
goto SUBRUTINA2 ;si REG1 = 0 se ejecuta la instrucción

REG1 0 0 0 0 0 0 1 1 REG1 0 0 0 0 0 0 0 1

Ejm: decfsz REG1,1 Ejm: decfsz REG1,1


goto SUBRUTINA1 goto SUBRUTINA1
goto SUBRUTINA2 goto 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 ;W = 70
movwf REG1 ;REG1 = W
TRES movlw VALOR2 ;W = 70
movwf REG2 ;REG2 = W
DOS movlw VALOR3 ;W = 70
movwf REG3 ;REG3 = W
UNO decfsz REG3,1 ;DECREMENTA REG3 Y SI QUEDA “0” SALTA A UNO
goto UNO
decfsz REG2,1 ;DECREMENTA REG2 Y SI QUEDA “0” SALTA A DOS
goto DOS
decfsz REG1,1 ;DECREMENTA REG1 Y SI QUEDA “0” SALTA A TRES
goto TRES
retlw 0

Total de ciclos = ((valor3*3 + 5) * valor2 + 5) * valor1


INSTRUCCIÓN BTFSC f,b
Salta si f<b> = 0
Ejm: btfsc REG1,7 ;verifica el valor del bit 7 de REG1
goto SUBRUTINA1 ;si REG1<7>=1 se ejecuta la instrucción
goto SUBRUTINA2 ;si REG1<7>=0 se ejecuta la instrucción

REG1 1 0 1 0 0 0 1 1 REG1 0 0 1 0 0 0 0 1

Ejm: btfsc REG1,7 Ejm: btfsc REG1,7


goto SUBRUTINA1 goto SUBRUTINA1
goto SUBRUTINA2 goto SUBRUTINA2
INSTRUCCIÓN BTFSS f,b
Salta si f<b> = 1
Ejm: btfss REG1,7 ;verifica el valor del bit 7 de REG1
goto SUBRUTINA1 ;si REG1<7>=0 se ejecuta la instrucción
goto SUBRUTINA2 ;si REG1<7>=1 se ejecuta la instrucción

REG1 0 0 1 0 0 0 1 1 REG1 1 0 1 0 0 0 0 1

Ejm: btfss REG1,7 Ejm: btfss REG1,7


goto SUBRUTINA1 goto SUBRUTINA1
goto SUBRUTINA2 goto SUBRUTINA2