Sei sulla pagina 1di 22

Introduccion 3/27/2010

Curso de
Microcontroladores
Características PIC16F8XX
I

Ing Germán Pereira Muñoz


27/03/2010 Ing. Germán Pereira Muñoz 1

Que es un PIC???
• El PIC fue desarrollado como un control de
periféricos
• PIC(Peripheral Interface Controller) es un
Circuito Integrado desarrollado para
controlar los perifericos que son controlados
por un CPU principal

27/03/2010 Ing. Germán Pereira Muñoz 2

La Arquitectura del Microcontrolador


PIC16F8XX

27/03/2010 Ing. Germán Pereira Muñoz 3

Ing German Pereira Muñoz 1


Introduccion 3/27/2010

Memoria de Programa

• ROM con máscara.


• EPROM (Erasable Programmable Read OnIy Memory).
• EEPROM (Electrical Erasable Programmable Read
OnIy Memory).
• FLASH
• OTP (One Time Programmable).

27/03/2010 Ing. Germán Pereira Muñoz 4

Características Comunes
Arquitectura RISC
• Instrucciones de una sola Palabra
• Instrucciones de un solo Ciclo
• Conjunto de Instrucciones Reducido
• Arquitectura Register File
• Su procesador es segmentado, “pipe-line”.
• Tiene una arquitectura HARVARD
• El formato de las instrucciones es ORTOGONAL

27/03/2010 Ing. Germán Pereira Muñoz 5

Procesador segmentado “pipe-line”

27/03/2010 Ing. Germán Pereira Muñoz 6

Ing German Pereira Muñoz 2


Introduccion 3/27/2010

Clico Clock / Instrucción

• Fcm=Fxtal/4 Fxtal: Frecuencia del Cristal Externo

• Tcm=1/Fcm Fcm: Frecuencia Ciclo maquina


Tcm: Tiempo Ciclo Maquina
27/03/2010 Ing. Germán Pereira Muñoz 7

Ciclo de Instrucción
Los cuatro ciclos Q que componen un ciclo de instrucción (TCY)
pueden generalizarse como:
• Q1: Decodificación de la Instrucción
• Q2: Lectura de Dato (si lo hay)
• Q3: Proceso de Datos
• Q4: Instrucción escribir datos

27/03/2010 Ing. Germán Pereira Muñoz 8

Opciones de Voltaje de Operación


Tipo de Memoria de Dispositivo e Indicador de Rango de
voltaje

Rango de Voltajes Típicos para cada tipo de dispositivo

27/03/2010 Ing. Germán Pereira Muñoz 9

Ing German Pereira Muñoz 3


Introduccion 3/27/2010

Formato General de las Instrucciones

27/03/2010 Ing. Germán Pereira Muñoz 10

Operación de ALU y el Registro W

27/03/2010 Ing. Germán Pereira Muñoz 11

Configuraciones de Oscilador

• Tipos de Oscilador:
› LP Low Frequency (Power) Crystal
› XT Crystal/Resonador
› HS High Speed Crystal/Resonador
› RC Externo Resistor/Capacitor (lo mismo que EXTRC con
CLKOUT)
› EXTRC Resistor/Capacitor Externos
› EXTRC Resistor/Capacitor Externos con CLKOUT
› INTRC Resistor/Capacitor Internos para 4 MHz
› INTRC Resistor/Capacitor Internos para 4 MHz con CLKOUT

27/03/2010 Ing. Germán Pereira Muñoz 12

Ing German Pereira Muñoz 4


Introduccion 3/27/2010

Circuito RC Externo

Formula para el
calculo de frecuencia

Tabla de Calculo a 5v y 25 °C

27/03/2010 Ing. Germán Pereira Muñoz 13

Fuente externa de reloj (LP, XT, HS)

27/03/2010 Ing. Germán Pereira Muñoz 14

Quartz y resonador (LP, XT, HS)

Valores Mas
Frecuentes de C1
y C2

27/03/2010 Ing. Germán Pereira Muñoz 15

Ing German Pereira Muñoz 5


Introduccion 3/27/2010

Encendido del Oscilador / Resonator


Factores que afectan:
•Frecuencia del Cristal /
Resonador
•Los Valores de los
Capacitores C1 y C2 usados
• Tiempo de subida Vdd del
spos vo
Dispositivo
• Temperatura del Sistema
•El Modo de Oscilador
seleccionado
• Calidad del Cristal
• Diseño del Oscilador
• Ruido de Sistema

27/03/2010 Ing. Germán Pereira Muñoz 16

Microcontrolador PIC16F84A

27/03/2010 Ing. Germán Pereira Muñoz 17

La Arquitectura del
Microcontrolador PIC16F84

27/03/2010 Ing. Germán Pereira Muñoz 18

Ing German Pereira Muñoz 6


Introduccion 3/27/2010

Características
• Solo 35 Instrucciones • 15 Registro de
• Cada instruccion se propocito especial
ejecuta en un ciclo
• Pila de 8 niveles
maquina
• Memoria de programa
de 1024 palabras
• RAM de 68 bytes
• EEPROM de datos de
64 bytes
• 8 Bit de datos
27/03/2010 Ing. Germán Pereira Muñoz 19

Características
• Cuatro Fuentes de Interrupción:
› Interrupción Externa RB0/INT pin
› Interrupción
p de Timer TMR0
› Interrupción en cambio de estado
PORTB<7:4>
› Interrupción de final de escritura de la
EEPROM de datos

27/03/2010 Ing. Germán Pereira Muñoz 20

Características
• Periféricos:
› 13 I/O pins con control individual de dirección
› Característica de cada pin
Puerto A Puerto B
Modo sumidero 80 mA 150 mA
Modo fuente 50 mA 100 mA
› TMR0: 8-bit Contador/Temporizador con 8-bit
› Preescaler para timer programable

27/03/2010 Ing. Germán Pereira Muñoz 21

Ing German Pereira Muñoz 7


Introduccion 3/27/2010

Diagrama
Interno

27/03/2010 Ing. Germán Pereira Muñoz 22

Memoria de Programa PIC16F84A

• Pila de 8 niveles

• Memoria de programa de 1024


palabras de 14 bits

› Vector de Reset dirección 0000h

› Vector de Interrupción dirección


0004h

27/03/2010 Ing. Germán Pereira Muñoz 23

Pila de 8 Niveles

27/03/2010 Ing. Germán Pereira Muñoz 24

Ing German Pereira Muñoz 8


Introduccion 3/27/2010

Memoria de Programa
PIC16F84A

• Locaciones de ID
Direcciones 2000h a
2003h

• Palabra de identificación
Dilección 2006h

• Palabra de Configuración
Dirección 2007

27/03/2010 Ing. Germán Pereira Muñoz 25

Palabra de configuración

• Dirección en memoria de Programa dirección: 2007h


• Bit 4: CP, bit de configuración protección de código
› 1= Protección de código desactivado
› 0=Protección de código activado
• Bit 3: PWRTE, Activación del temporizador "Power-Up"
› 1=1 Desactivado
D i d
› 0= Activado
• Bit 2: bit de configuración habilitación del Watchdog (WDT)
› 1: WDT activado
› 0: WDT desactivado
• Bit1 y 2: FOSC<1:0>
› 11: Oscilador RC
› 10 Oscilador HS ( 8 - 20 MHz)
› 01 Oscilador XT ( 100 KHz- 4MHz)
› 00 Oscilador LP (Bajo consumo 32- 200 Hz)
27/03/2010 Ing. Germán Pereira Muñoz 26

Oscilador Extrerno
• Soporta 4 tipos de Osciladores Externos

27/03/2010 Ing. Germán Pereira Muñoz 27

Ing German Pereira Muñoz 9


Introduccion 3/27/2010

Organización de la memoria de datos de la


familia PIC16FXXX

RP1 RP0 Banco


Activo
0 0 0
0 1 1
1 0 2
1 1 3

27/03/2010 Ing. Germán Pereira Muñoz 28

Memoria de Datos del PIC16F84A

• Registros SFR
Desde la dirección 00h hasta la
dirección 0Bh
› Registros de Configuración
› Registros de Entrada y salida
› Registros de Funcionamiento

• Registros
R it GPR
Desde la dirección 0Ch hasta la
dirección 4fh

RP1 RP0 Banco


Activo
0 0 0
0 1 1
1 0 2
27/03/2010 1 1 3Ing. Germán Pereira Muñoz 29

Sumario de Registros Banco 0

27/03/2010 Ing. Germán Pereira Muñoz 30

Ing German Pereira Muñoz 10


Introduccion 3/27/2010

Sumario de Registros Banco 1

27/03/2010 Ing. Germán Pereira Muñoz 31

STATUS REGISTER (ADDRESS 03h, 83h)

• bit 0 C : flag de acarreo en el octavo bit


› 1: Acarreo en la suma y no en la resta
› 0: Acarreo en la resta y no en la suma
• bit 1 DC: flag de acarreo en el 4º bit de menos peso.
› 1: Acarreo en la suma
› 0 : No acarreo en la suma. En la resta lo contrario
• bit 2 Z: flag de cero
› 1: El resultado de la última operación aritmética o lógica es cero
› 0: El resultado de la última operación es distinto de cero
• bit 3 PD#: flag Power Down
› 1: Tras conectar VDD o al ejecutar la instrucción CLRWDT
› 0: Al ejecutar la instrucción SLEEP
• bit 4 TO#: flag Timer Out
› 1: Tras conectar VDD o ejecutar CLRWDT o SLEEP
› 0: Al desbordar el temporizador de WDT
• bit 5-6 RP<1:0>:Selección del banco para el direccionamiento directo
› 00 Banco 0 (00h-7Fh)
› 01 Banco 1 (80h-FFh)
› 10 Banco 2 (100h-17Fh)
› 11 Banco 3 (180h-1FFh)
• bit 7 IRP: Selección de bancos para el direccionamiento indirecto
› 1: el resultado de la última operación aritmética o lógica es cero
› 0: Bancos 0 y 1 (00h-FFh)
27/03/2010 Ing. Germán Pereira Muñoz 32

PORTA (ADDRESS 05h)


TRISA (ADDRESS 85h)

• TRISA Bit = 1 Æ PORTA Bit como entrada


• TRISA Bit = 0 Æ PORTA Bit como salida

27/03/2010 Ing. Germán Pereira Muñoz 33

Ing German Pereira Muñoz 11


Introduccion 3/27/2010

PORTB (ADDRESS 06h)


TRISB (ADDRESS 86h)

• TRISB Bit = 1 Æ PORTB Bit como entrada


• TRISB Bit = 0 Æ PORTB Bit como salida
27/03/2010 Ing. Germán Pereira Muñoz 34

Ejemplo de Configuración

27/03/2010 Ing. Germán Pereira Muñoz 35

Diagrama Circuital Básico


4.000MHZ

220 220 220 220220 220 220


+5V
220 220 220 220
220 220
6c84
RA1
RA0
OSC1
OSC2
Vdd
RB7
RB6
RB5
RB4
RA4 O
MCLR O

+5V
Pic16

____
RA2
RA3

Vss
RB0
RB1
RB2
RB3

10k
+5V

10k

27/03/2010 Ing. Germán Pereira Muñoz 36

Ing German Pereira Muñoz 12


Introduccion 3/27/2010

Interrupciones

• Timer

• Externa

• Cambio de estado

• Fin de escritura en la
EEPROM de datos

• Habilitador Global de
interrupciones

27/03/2010 Ing. Germán Pereira Muñoz 37

Estructura para Interrupciones en Lenguaje C


#pragma CLOCK_FREQ 4000000

void interrupt( void )


{
// SERVICIO DE INTERRUPCION

// LIMPIANDO BANDERAS DE INTERRUPCION


}

main()
{
//;--------- Configuración de puertos y de la respuesta a interrupciones. ---------
// 1) HABILITACION DE LAS INTERRUCPIONES

// 2) CONFIGURACION DE PUERTOS

while( 1 )
{
// PROGRAMA PRINCIPAL

}
}
27/03/2010 Ing. Germán Pereira Muñoz 38

INTCON REGISTER (ADDRESS 0Bh, 8Bh)

• bit 0 RBIF: flag de estado del Port B


› 1:Cuando cambia de estado cualquier línea de PB (RB<7:4>). Se borra por software
› 0:Ninguna entrada de PB ha cambiado
• bit 1 INTF: flag de estado de la interrupción externa INT
› 1:La entrada de la interrupción se ha activado. Se borra por software
› 0:No hay interrupción externa
• bit 2 T0IF: flag de rebosamiento del TMR0
› 1: El TMR0 se ha desbordado. Se borra por software
› 0: El TMR0 no se ha desbordado
• bit 3 RBIE: Activación de la interrupción del Port B
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 4 INTE: Activación de la interrupción externa INT
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 5 T0IE: Activación de la interrupción del TMR0
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 6 EEIE: Activación de la interrupción de la memoria EEPROM
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 7 GIE: Activación Global de Interrupciones
› 1: Concedido el permiso de interrupciones
27/03/2010› 0: No hay posibilidad de interrupciones
Ing. Germán Pereira Muñoz 39

Ing German Pereira Muñoz 13


Introduccion 3/27/2010

Interrupción Externa

• Flanco de disparo de la
Flanco Ascendente
interrupción
Flanco
Descendente
• El Pin RB0 debe ser
configurado como entrada
27/03/2010 Ing. Germán Pereira Muñoz 40

INTCON REGISTER (ADDRESS 0Bh, 8Bh)

• bit 0 RBIF: flag de estado del Port B


› 1:Cuando cambia de estado cualquier línea de PB (RB<7:4>). Se borra por software
› 0:Ninguna entrada de PB ha cambiado
• bit 1 INTF: flag de estado de la interrupción externa INT
› 1:La entrada de la interrupción se ha activado. Se borra por software
› 0:No hay interrupción externa
• bit 2 T0IF: flag de rebosamiento del TMR0
› 1: El TMR0 se ha desbordado. Se borra por software
› 0: El TMR0 no se ha desbordado
• bit 3 RBIE: Activación de la interrupción del Port B
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 4 INTE: Activación de la interrupción externa INT
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 5 T0IE: Activación de la interrupción del TMR0
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 6 EEIE: Activación de la interrupción de la memoria EEPROM
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 7 GIE: Activación Global de Interrupciones
› 1: Concedido el permiso de interrupciones
27/03/2010› 0: No hay posibilidad de interrupciones
Ing. Germán Pereira Muñoz 41

OPTION_REG REGISTER (ADDRESS 81h)

• bit 0Æ2 PS2ÆPS0:


› Asignación Rango con el que actúa el Divisor de frecuencia

• bit 3 PSA: Asignación del divisor de frecuencia


› 1 El divisor
1: di i de
d frecuencia
f i se asigna
i all WDT
› 0: El divisor de frecuencia se asigna al TMR0
• bit 4 TOSE: Tipo de flanco en TOCK1
› 1: Incremento de TMR0 cada flanco descendente
› 0: Incremento de TMR0 cada flanco ascendente
• bit 5 TOCS: Tipo de Reloj para TMR0
› 1: Pulsos introducidos a través de T0CK1 (Contador)
› 0: Pulsos de reloj interno Fosc/4 (Temporizador)
• bit 6 INTEDG: Flanco activo control de interrupciones
› 1: Flanco Ascendente
› 0: Flanco Descendente
• bit 7 BPRU : Resistencia Pull-up Puerto B
› 1: Desactivadas
› 0: Activadas
27/03/2010 Ing. Germán Pereira Muñoz 42

Ing German Pereira Muñoz 14


Introduccion 3/27/2010

#pragma CLOCK_FREQ 4000000


char cont;
void interrupt( void )
{ if((INTCON&2)==2)
{ cont++;
PORTA = cont;
clear_bit( INTCON,INTF ); //Limpiando la bandera de interrupción externa
}
}
main()
{ set_bit( STATUS, RP0 );
TRISA = 0x00;
TRISB = 0x01;
clear_bit(OPTION_REG,INTEDG); // INTEDG = 1 -> flanco ascendente de INT EXT
// INTEDG = 0 -> franco descendente de INT EXT
clear_bit( STATUS, RP0 );
PORTA = 0x00;
cont = 0x00;
enable_interrupt( GIE ); // habilitando todas las interrupciones
enable_interrupt( INTE ); //HJabilitando la interrupcion externa
while( 1 )
{ set_bit(PORTA,4);
delay_ms(200);
clear_bit(PORTA,4);
delay_ms(200);
}
27/03/2010
} Ing. Germán Pereira Muñoz 43

Interrupción de fin de escritura de la


EEPROM

• bit 0: RD, Lectura


› Se pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM,
EEPROM luego pasa a 0
automáticamente.
• bit 1: WR, Escritura
› Se pone a 1 cuando comienza el ciclo de escritura de la EEPROM
› Se pone a 0 cuando finaliza el ciclo de escritura de la EEPROM
• bit 2: WREN, Permiso de escritura
› 1 = Permite la escritura de la EEPROM
› 0 = Prohibe la escritura de la EEPROM
• bit 3:WRWRR, Señalizador de error de escritura
› 1 = Se pone a 1 cuando una operación de escritura ha terminado prematuramente
› 0 = La operación de escritura se ha completado correctamente
• bit 4:EEIF, Señalizador de final de operación de escritura
› 1= La operación de escritura se ha completado con éxito
› 0 = La operación de escritura no se ha completado
27/03/2010 Ing. Germán Pereira Muñoz 44

ESCRITURA EN LA EEPROM DE DATOS


• El dato de la EEPROM de datos tiene un ciclo de 10ms que puede ser
excedido ocasionalmente los 10ms son típicos. para asegurar un ciclo.

• SUBRUTINA EN C
//el banco 0 debe ser seleccionado
void write_E2DAT(char dir, char data)
{
//Escritura de datos
EEADR = dir;
EEDATA = data;
set_bit(STATUS, RP0);
set_bit(EECON1, WREN);
EECON2 = 0x55;
EECON2 = 0xaa;
set_bit(EECON1, WR);
while(EECON1&2); //VERIFICANDO SI TERMINO LA
ESCRITURA
clear_bit(EECON1, WREN);
clear_bit(STATUS, RP0);
}
27/03/2010 Ing. Germán Pereira Muñoz 45

Ing German Pereira Muñoz 15


Introduccion 3/27/2010

LECTURA DE LA EEPROM DE DATOS


SUBRUTINA EN C
char read_E2DAT(char dir)
{
//Lectura de datos
EEADR=dir;
set_bit (STATUS, RP0);
set_bit (EECON1, RD);
clear_bit(STATUS, RP0);
return(EEDATA)
}
27/03/2010 Ing. Germán Pereira Muñoz 46

Interrupción del Timer

• La Bandera T0IF se activa cuando el


registro TMR0 cambia de FFh a 00h
27/03/2010 Ing. Germán Pereira Muñoz 47

Interrupción del Timer

• La Bandera T0IF se activa cuando el


registro TMR0 cambia de FFh a 00h

27/03/2010 Ing. Germán Pereira Muñoz 48

Ing German Pereira Muñoz 16


Introduccion 3/27/2010

Interrupción del Timer

• Preescaler
› El Preescaler puede usarse
para dividir la entrada por:
2, 4, 8, 16, 32, 64, 128, o 256

27/03/2010 Ing. Germán Pereira Muñoz 49

OPTION_REG REGISTER (ADDRESS 81h)

• bit 0Æ2 PS2ÆPS0:


› Asignación Rango con el que actúa el Divisor de frecuencia

• g
bit 3 PSA: Asignación del divisor de frecuencia
› 1: El divisor de frecuencia se asigna al WDT
› 0: El divisor de frecuencia se asigna al TMR0
• bit 4 TOSE: Tipo de flanco en TOCK1
› 1: Incremento de TMR0 cada flanco descendente
› 0: Incremento de TMR0 cada flanco ascendente
• bit 5 TOCS: Tipo de Reloj para TMR0
› 1: Pulsos introducidos a través de T0CK1 (Contador)
› 0: Pulsos de reloj interno Fosc/4 (Temporizador)
• bit 6 INTEDG: Flanco activo control de interrupciones
› 1: Flanco Ascendente
› 0: Flanco Descendente
• bit 7 BPRU : Resistencia Pull-up Puerto B
› 1: Desactivadas
27/03/2010
› 0: Activadas Ing. Germán Pereira Muñoz 50

INTCON REGISTER (ADDRESS 0Bh, 8Bh)

• bit 0 RBIF: flag de estado del Port B


› 1:Cuando cambia de estado cualquier línea de PB (RB<7:4>). Se borra por software
› 0:Ninguna entrada de PB ha cambiado
• bit 1 INTF: flag de estado de la interrupción externa INT
› 1:La entrada de la interrupción se ha activado. Se borra por software
› 0:No hay interrupción externa
• bit 2 T0IF: flag de rebosamiento del TMR0
› 1: El TMR0 se ha desbordado. Se borra por software
› 0: El TMR0 no se ha desbordado
• bit 3 RBIE: Activación de la interrupción del Port B
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 4 INTE: Activación de la interrupción externa INT
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 5 T0IE: Activación de la interrupción del TMR0
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 6 EEIE: Activación de la interrupción de la memoria EEPROM
› 1: Interrupción activada
› 0: Interrupción desactivada
• bit 7 GIE: Activación Global de Interrupciones
› 1: Concedido el permiso de interrupciones
27/03/2010› 0: No hay posibilidad de interrupciones
Ing. Germán Pereira Muñoz 51

Ing German Pereira Muñoz 17


Introduccion 3/27/2010

Diagrama de TIMER0/WDT Preescaler

27/03/2010 Ing. Germán Pereira Muñoz 52

Ejemplo Vector de Interrupción


Timer
void interrupt( void )
{
if((INTCON&4)==4)
{
// SERVICIO DE LA INTERRUPCION DE TIMER0
// INICIALIZANDO EL VALOR DE AUTO RECARGA
TMR0=0xXX; // Valor recarga del TRM0
// LIMPIANDO LA BANDERA DE INTERRUPCION DE TIMER
clear_bit(INTCON,T0IF);

Programa de usuario

}
}
27/03/2010 Ing. Germán Pereira Muñoz 53

Ejemplo Configuración de Interrupción Timer


//--- Configuracion de puertos y de la respuesta a interrupciones. ---
set_bit( STATUS, RP0 );
// COMO TIMER O CONTADOR
; TOCS = 0 -> Pulsos de reloj interno (Timer)
; TOCS = 1 -> Pulsos de reloj externo (CONTADOR) Æ RA4/TOKS
COMO ENTRADA
// SI ES COMO CONTADOR SELECCIÓN DE FLANCO DISPARO

; TOSE = 1 -> Incremento del TMR0 cada flanco de BAJADA


; TOSE = 0 -> Incremento del TMR0 cada flanco de ASCENDENTE
// ASIGNACION DE DIVISOR DE FRECUENCIA
; PSA = 0 -> El divisor de frecuencias se le asigna al TMR0
; PSA = 1 -> El divisor de frecuencias se le asigna al WDT
// CONFIGURACION DEL PREESCALER
;POR EJ: PS2,PS1,PS0 = 101 -> Divisor de frecuencias = 1:64
OPTION_REG = 0xXXXXXXX;
// CONFIGURACION DE PUERTOS
clear_bit( STATUS, RP0 );
27/03/2010 Ing. Germán Pereira Muñoz 54

Ing German Pereira Muñoz 18


Introduccion 3/27/2010

Habilitando Interrupción de Timer


// HABILITANDO INTERRUPCIONES

enable_interrupt( GIE ); // Habilitando todas las


interrupciones
enable_interrupt(
p ( TOIE ); //Habilitando la interrupcion
p
Timer

// INICIALIZANDO EL VALOR DE AUTO RECARGA


TMR0=0xXX; // Valor de recarga del TRM0

27/03/2010 Ing. Germán Pereira Muñoz 55

Calculo del Valor de Recarga


TMR0=0xXX; // Valor de recarga del TRM0

Formula:
N = 256 - t / ( 4 * Tosc * rango de divisor de frecuencias);

Calculo para generar 0.5 KHz


Tosc=4Mhz f=0.5 khz Æ se calcula para todo el periodo f= 1khz
t= 0.002 s t= 0.001 s

N = 256 - 0.002 / ( 4 * 1/4000000 * 64)


N = 224
224.75
75 d
N = 224d = E0h -> Valor de recarga Æ TMR0=0xE0;

Comprobación del calculo

t = 4 * Tosc * (256-N) * rango de divisor de frecuencias


t = 4 * 1/4000000 * (256-224) * 64
t = 0.002048 s

f = 1/0.002048s
f = 488.28125 hz = 0.488 khz

27/03/2010 Ing. Germán Pereira Muñoz 56

Diagrama de bloque de WATCHDOG TIMER

27/03/2010 Ing. Germán Pereira Muñoz 57

Ing German Pereira Muñoz 19


Introduccion 3/27/2010

Circuito de salidas básico con


microcontrolador PIC16F84

• Materiales
› Microcontrolador
PIC16F84A
› Cristal de 4Mhz
› Pulsador
P l d
› Resistencia de 10K ¼ de
watt
› 12 Leds
› 12 Resistencias de ¼ de
watt

27/03/2010 Ing. Germán Pereira Muñoz 58

Circuito de Entradas y Salidas


Básico con Microcontrolador PIC16F84A

• Materiales
› Microcontrolador PIC16F84A
› Cristal de 4Mhz
› 5 Pulsadores
› 5 Resistencias de 10K ¼ de
watt
› 8 Leds
› 8 Resistencias de ¼ de watt

27/03/2010 Ing. Germán Pereira Muñoz 59

Microcontrolador PIC16F628A

27/03/2010 Ing. Germán Pereira Muñoz 60

Ing German Pereira Muñoz 20


Introduccion 3/27/2010

Memoria de
Datos
PIC16F628
A

27/03/2010 Ing. Germán Pereira Muñoz 61

Microcontrolador PIC16F873

27/03/2010 Ing. Germán Pereira Muñoz 62

Memoria de
Datos
PIC16F873

27/03/2010 Ing. Germán Pereira Muñoz 63

Ing German Pereira Muñoz 21


Introduccion 3/27/2010

Microcontrolador PIC16F877

27/03/2010 Ing. Germán Pereira Muñoz 64

Memoria de
Datos
PIC16F877

27/03/2010 Ing. Germán Pereira Muñoz 65

Ing German Pereira Muñoz 22

Potrebbero piacerti anche