Professional Documents
Culture Documents
MICROCONTROLADORES
PIC
de desarrollo:
El IDE de CCS es
una evolucin
significativa a los
entornos para
desarrolladores con
PIC's, tiene
una interfaz
amigable y
estructurada que
facilita la
implementacin y
organizacin del
cdigo.
Tipos de datos
Las variables
mltiples
x = y + z;
x = y z;
x = y * z;
x = y / z;
x = x; // Cambia el signo de x
x = x + 1; // Suma 1 al valor de x
el
Ejemplo:
x = 140 = 10001100
x = x >> 2 = 00100011 = 35
x = x << 3 = 01100000 = 96
Punteros
Funciones
Funciones
Funciones
Funciones
Funciones
Funciones
Funciones
Funciones
Ciclos:
Ciclos:
Ciclos:
Ciclos:
Ciclos:
Ciclos:
Si se ejecuta la siguiente
epresion se consigue un
BUCLE SIN FIN;
Ejemplo:
#DEFINE
Este tipo de instrucciones no generan cdigo en
ensamblador, en este caso el preprocesador reemplaza
la informacin al crear los binarios para el pic.
Usando #DEFINE damos un sentido comn a nuestros
programas por el hecho de reemplazar nmeros por
palabras, la sintaxis es:Ejemplo:
#DEFINE <label> value <label> es la etiqueta que usaremos en el programa.
#FUSES options
La cual permite definir la palabra de configuracion para
programar un PIC. Por ejemplo, en el PIC16F84 las
opciones posibles son:
LP, XT, HS, RC, NOWDT, WDT, NOPUT, PUT, PROTECT,
NOPROTECT
#USE RS232
Habilita el uso de puerto serie, es necesario la directiva
#USE DELAY antes de utilizar #USE RS232.
MICROCONTROLADORES MICROCHIP
Caractersticas Generales
CPU
Procesador de Arquitectura RISC
(Solo 35 instrucciones)
Instrucciones de un ciclo simple de
duracin (4 ciclos cristal) excepto
los saltos que requieren dos ciclos
simples
PERIFERICOS
Timer o contador de 8 bits con
prescalas de 8 bits
Timer de 16 bits
Puertos Comparadores/PWM
(Multiplexados) [16 bits resolucin]
Comparacin microcontroladores de la
misma serie (16F87X)
Caracterstica
Microcontrolador
PIC 16F873
PIC 16F874
PIC 16F876
PIC 16F877
Frecuencia de operacin
(MHz)
20
20
20
20
Memoria FLASH
(Espacios de 14 bits)
4K
4K
8K
8K
192
192
368
368
Memoria EEPROM
(Bytes)
128
128
256
256
Fuentes de Interrupcin
13
14
13
14
Puertos Entrada/Salida
A,B,C
A,B,C,D,E
A,B,C
A,B,C,D,E
Timers o Contadores
Puertos PWM o
Comparadores
Comunicacin Serial
USART
USART
USART
USART
Comunicacin Paralela
PSP
PSP
Convertidor ADC
5 Canales entrada
8 Canales entrada
5 Canales entrada
8 Canales entrada
Set de Instrucciones
35 instrucciones
35 instrucciones
35 instrucciones
35 instrucciones
Arquitectura
MUX Direcciones
Arquitectura
Memoria Programa
Stack
Registro
Instrucciones
RAM
Registro FSR
Registro
STATUS
Decodificador de
Instrucciones y
Unidad de Control
MUX
Unidad Timing
ALU
Registro
W
Unidades de:
Reset
Inicializacin
Watchdog
Debugger
Programacin
Timers
Puerto
Paralelo
Timer 0
Timer 1
Timer 2
ADC
PUERTOS
EEPROM
CCP 1,2
SPI
USART
Puertos
Puertos
Puertos
Puerto B
Puerto D
Puerto C
Puerto E
Puerto A
Puerto A
Posee 6 bits bi-direccionales
Se configura en el registro TRISA
Un 1 configura una entrada, un 0 configura
una salida en el pin correspondiente al bit
El registro de datos de entrada/salida es
PORTA
Puerto B
Posee 8 bits bi-direccionales
Se configura en el registro TRISB
Un 1 configura una entrada, un 0 configura una salida en el pin
correspondiente al bit
El registro de datos de entrada/salida es PORTB
Puerto C
Posee 8 bits bi-direccionales
Se configura en el registro TRISC
Un 1 configura una entrada, un 0 configura una salida en el pin
correspondiente al bit
Puerto D
Posee 8 bits bi-direccionales
Se configura en el registro TRISD
Un 1 configura una entrada, un 0 configura una salida en
el pin correspondiente al bit
El registro de datos de entrada/salida es PORTD
Tiene sus pines de entrada con buffers tipo Schmitt
Trigger
Puerto E
Posee 3 bits bi-direccionales
Se configura en el registro TRISE
Un 1 configura una entrada, un 0 configura una salida en
el pin correspondiente al bit
El registro de datos de entrada/salida es PORTE
Son entradas Schmitt Trigger
Registro W
Registro de trabajo
Recibe los resultados de las operaciones ejecutadas
por la ALU
Puede ser escrito
Se usa para las transferencias indirectas entre
registros y ubicaciones de memoria
Registro STATUS
Ubicado en 03h,83h,103h y 183h
Resume las condiciones en que se encuentra el microcontrolador
Bits:
IRP: Selecciona bancos altos (2 y 3) cuando vale 1 y bancos bajos (1 y 0) cuando vale 0
RP1 y RP0: Selectores de bancos para acceso directo.
00: Banco 0
01: Banco 1
10: Banco 2
11: Banco 3
Registro de 8 bits
Se utiliza para hacer barridos de RAM
MUX de direcciones
STACK
Capacidad de 8 niveles de almacenamiento de 13 bits cada
nivel
Es parte de la memoria RAM, pero independiente de la
memoria de datos y de programa
Contador de Programa
Contador de 13 bits.
Capacidad de direccionar programas de hasta 8k
instrucciones de 14 bits
La ubicacin del vector de RESET (0000h) es el valor del
contador de programa cuando la mquina se inicializa
La ubicacin del vector de interrupciones es (0004h) y
funciona como ndice para cargar el contador de
programa con el valor de la localidad de memoria que
tiene el cdigo de programa para atender una
interrupcin.
EULER DEZA FIGUEROA
Euler_df28@hotmail.com
Memoria de Programa
Almacena la secuencia de instrucciones que
corresponde al programa escrito
Almacena cdigos hexadecimales generados en un
archivo *.hex por el compilador o el ensamblador
Consta de pginas de 2kbytes
Se ubica en la parte alta de la memoria, despus del
vector de interrupciones
En 16F877 y 16F876 se tienen 4 pginas
En 16F874 y 16F873 se tienen 2 pginas
Es memoria de tipo FLASH
Registro de Instrucciones
Timers (0 1 2)
Capacidad de 8 bits
Lectura y escritura
Prescala de 8 bits
controlada por software
Reloj interno o externo con
seleccin de flanco
Interrupcin por rebaso
activada al cambiar de FFh
a 00h
Registros de datos en
TMR0, TMR1 y TMR2
EL TMR1 es de 16 bits, y
usa los registros TMR1L
para los 8 bits menos
significativos y TMR1H para
los ms significativos
El TMR2 se usa como base
de tiempo para el PWM
Los registros de
configuracin son T0CON,
T1CON y T2CON
USART
[Universal Synchronous/Asynchronous Receiver/Transmitter
Interfase para comunicacin serial SCI.
Acepta comunicacin Full Duplex en asncrono y Half Duplex en sncrono
El reloj interesa solo para transmisiones sincrnicas
Maneja comunicaciones de 9 y 8 bits configurables en registros TXSTA y
RCSTA
Puede habilitarse/deshabilitarse
Seleccin de Baud-Rate segn fraccin de CLK en SPBRG
Manejo de transmisiones contnuas e interrumpidas
Control de errores de Frame y Overrun para solicitud de
retransmisiones
El registro de datos para transmisin es RCREG para recepcin y TXREG
para envo.
SPI
Serial Peripheral Interface
Medio de comunicacin con perifricos con 8
bits simultneos de transmisin serial
Aplica a perifricos de alta velocidad
Puede usarse para importar o exportar datos o
seales de reloj
Opera como esclavo o maestro
EULER DEZA FIGUEROA
Euler_df28@hotmail.com
CCP [ Capture/Compare/PWM ]
Mdulo de captura de 16 bits
Mdulo de comparacin de 16 bits
Mdulo de salida PWM maestro y esclavo
Utiliza los registros CCPR1H y CCPR1L
El modo Captura guarda el valor del timer cada vez que ocurre
un evento en el pin de entrada RC2
El modo Compara compara el valor del registro CCPR1 con el
timer. Cuando son iguales produce un cambio de estado en el pin
RC2.
El modo PWM produce una seal con ciclos de trabajo variables
segn el dato de 10 bits del registro CCPR1. La seal de salida se
ubica en el pin RC2
EULER DEZA FIGUEROA
Euler_df28@hotmail.com
EEPROM
Puede habilitarse/deshabilitarse para ser usada como
memoria de almacenamiento secundario (Como el disco
duro en un PC) o como memoria de programa con el
registro EEPGD
Se configura con los registros EECON1 y EECON2
Si se usa como memoria de datos, en el registro EEDATA se
escriben/leen los datos.
Puerto Paralelo
Ejecuta transferencias de 8 bits
Utiliza 3 seales adicionales de control (RD/WR/CS)
Organizacin de Memoria
En los PIC existen tres tipos de memoria:
a- Memoria de Programa
b- Memoria de Datos
c- EEPROM data MEM
Cada bloque tiene una funcin dentro de la
arquitectura
Memoria de programa
Esquema general:
Posee un contador de 13 bits
Maneja direccionamiento 8Kx14 4Kx14
Vector de reset se ubica en 00H
Vector de interrupcin ubicado en 04H
Mapa de memoria
Mapa memoria
de Datos PIC
16F876/877
INTCON REGISTER
PIE1 REGISTER
STATUS
OPTION_RE
G REGISTER
INTCON
REGISTER
PIE1
REGISTER
SET DE
INSTRUCCIONES
Conclusiones
Arquitectura RISC de 35 instrucciones.
Operaciones de duracin igual, excepto saltos.
Compatible con otras familias de PIC.
Pila de 8 niveles y 14 fuentes de interrupcin.
PROGRAMA
que
poseen
unas
pull-up
interna que se puede habilitar a traves del bit RBPU del registro
OPTION_REG(81h,181h).
Si dicho bit es 1,
todas las resistencias de pull-up estaran
deshabilitadas, si es un 0 estaran habilitadas solo en el caso de que
el terminal funcione como entrada
GESTION DE PUERTOS EN C
En lenguaje C se pueden gestionar los puertos de dos formas:
Se declaran los registros TRISX y PORTX definiendo su posicion
la posicion correspondiente
utilizada en C es #BYTE
#BYTE variable=constante;
GESTION DE PUERTOS EN C
En lenguaje C se pueden gestionar los puertos de dos formas:
Se declaran los registros TRISX y PORTX definiendo su posicion
la posicion correspondiente
utilizada en C es #BYTE
#BYTE variable=constante;
GESTION DE PUERTOS EN C
A TRAVES DE LA RAM
Una vez definidas estas variables se pueden configurar y controlar
GESTION DE PUERTOS EN C
A TRAVES DE LA RAM
Existen unas funciones de C que permiten trabajar bit a bit con los
GESTION DE PUERTOS EN C
A TRAVES DE LA RAM
Se puede declarar un bit de un registro con una variable mediante
GESTION DE PUERTOS EN C
A TRAVES DE LAS DIRECTIVAS
El compilador ofrece funciones predefinidas para trabajar con los
GESTION DE PUERTOS EN C
A TRAVES DE LAS DIRECTIVAS
Existen una serie de funciones asociadas a un terminal o pin*. El
//Pin a 0
Output_high (pin*);
//Pin a 1
Output_bit(pin*, valor);
//Pin al valor especificado
Output_togglet(pin*);
//Complementa el valor del pin
Output_float(pin*);
//Pin de entrada, quedando tensin flotante ....
// (Simula salida en drenador abierto)
Input_state(pin*) ; /Lee el valor del pin sin cambiar el sentido del terminal
GESTION DE PUERTOS EN C
#USE FAST_IO(PUERTO) [PUERTO: A]
Con la funcin output_x() se saca el valor del puerto y con la
GESTION DE PUERTOS EN C
#USE STANDARD_IO(PUERTO) [PUERTO: A]
Con la funcin output_x() el compilador se asegura de que el
GESTION DE PUERTOS EN C
#USE FIXED_IO(PUERTO_OUTPUTS = pin*, )
[PUERTO: A]
El compilador se encarga de generar el cdigo para definir los
GESTION DE PUERTOS EN C
CON PUNTEROS
En C se puede acceder a la memoria de datos mediante punteros.
de 7
segmentos nodo comn. La cuenta debe ser continua y de o a 9 el
digito de las decenas debe estar apagado. Tambin debe poseer
opciones para seleccionar color del display