Sei sulla pagina 1di 40

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 • 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
+
De 8

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 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 . . . 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 MOVWF 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: 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

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:

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) 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

Potrebbero piacerti anche