Anda di halaman 1dari 47

Taller de Programacin de PICs

Conceptos Bsicos
Universidad Veracruzana Facultad de Ingeniera
M. C. Adrin Snchez Vidal

Octubre de 2009
Taller de Programacin de PICs. 1

Conceptos Bsicos 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Introduccin. Sistemas Numricos. Conversin entre sistemas numricos. Cdigos Binarios. Diferencia entre P y C. Conceptos bsicos. Memoria de Programa. Memoria de Datos RAM. Procesador. Perifricos.
Taller de Programacin de PICs. 2

Introduccin
Los microcontroladores estn conquistando el mundo, puesto que se encuentran presente en nuestro trabajo, casa y vida en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de las computadoras, en telfonos, hornos de microondas y televisores de nuestro hogar. Pero la invasin acaba de comenzar, y este siglo XXI ser testigo de la conquista masiva de estos diminutos computadores, que gobernarn la mayor parte de los aparatos que se fabrican y usamos los humanos.

Taller de Programacin de PICs. 3

Sistemas Numricos
Base de un sistema numrico

La base de un sistema numrico es el nmero de dgitos diferentes usados en ese sistema.


Base 2 8 10 16 Sistema Binario Octal Decimal Notacin 102= (10)2 108= (10)8 10= (10)10 Dgitos 0, 1 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Hexadecimal 10H= (10)16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Taller de Programacin de PICs. 4

Sistemas Numricos
Conteo de sistemas numricos
DECIMAL 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 BINARIO 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 OCTAL 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 HEXADECIMAL 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
Taller de Programacin de PICs. 5

Sistemas Numricos
Notacin posicional
Al escribir un nmero, la posicin de cada dgito indica su peso relativo. En la base r un nmero N de n dgitos en la parte entera y m dgitos en la parte fraccionaria en esta notacin se escribe: N=(an-1 a n-2 .... a1 a0 . a-1 .... a -m) En esta notacin el dgito de ms a la izquierda (an-1) es decir, el que pesa ms se denomina dgito ms significativo (MSD), en forma similar al de ms a la derecha (a-m); es decir, el que pesa menos se le llama dgito menos significativo (LSD). Ejemplos:

1025H,

235.38, 100012, 100


Taller de Programacin de PICs. 6

Conversin entre sistemas numricos


Conversin de base r a base 10 Ejemplos: Convertir (B2A)16 y (11010)2 a base 10. Expresando el nmero en notacin polinomial usando base 10 para representar cada cantidad involucrada en dicha notacin:
Posicin Peso Valor 3 2 161 16 2 1 160 1 A

162 256 B

(B2A)16

= (11*162 + 2*161 + 10*160)10 = (11*256 + 2*16 + 10 )10 = (2858)10


Taller de Programacin de PICs. 7

Conversin entre sistemas numricos


Conversin de base r a base 10 Ejemplos: Convertir (B2A)16 y (11010)2 a base 10. Expresando el nmero en notacin polinomial usando base 10 para representar cada cantidad involucrada en dicha notacin:
Posicin Peso Valor 5 24 16 1 4 23 8 1 3 22 4 0 2 21 2 1 1 20 1 0

(11010)2

= 1*24 + 1*23 + 0*22 + 1*21 + 0*20 =16 + 8 + 0 + 2 = (26)10

Usando N bits se puede representar nmeros decimales desde 0 a 2N-1, un total de 2N nmeros.
Taller de Programacin de PICs. 8

Conversin entre sistemas numricos


Conversin de base 10 a base q

Al dividir N=(an-1an-2... a1a0)r entre r obtenemos como cociente N1 y como residuo de la divisin a0. En forma similar si dividimos N1=(an-1an-2...a1)r entre r obtendremos como cociente N2=(an-1an-2...a2)r y como residuo a1 y as sucesivamente.
Para obtener los n dgitos de N en base r se debern obtener los n residuos de n divisiones sucesivas entre r. Obtenindose en el orden de LSD a MSD.

Taller de Programacin de PICs. 9

Conversin entre sistemas numricos


Conversin de base 10 a base q Ejemplos: Convertir 2510 a base 2, 8 y 16.
Cociente Divisin 2 25 Primera Segunda Tercera Cuarta Quinta 12 6 3 1 0 Residuo

a0= 1 a1= 0 a2= 0 a3= 1 a4= 1

LSB

2510 = 110012
MSB

Taller de Programacin de PICs. 10

Conversin entre sistemas numricos


Conversin de base 10 a base q Ejemplos: Convertir 2510 a base 2, 8 y 16.
8
Primera Segunda Cociente 25 3 0 Cociente 25 1 0 Residuo

2510 = 318
a0= 1 a1= 3

Residuo

16 Primera Segunda

2510 = 19H
a0= 9 a1= 1
Taller de Programacin de PICs. 11

Conversin entre sistemas numricos


Conversin de base rk a base r

Cuando una de las bases involucradas en la conversin es una potencia entera de la otra la conversin se vuelve muy sencilla, ya que se puede realizar en un slo paso expresando cada dgito del nmero en base rk usando k dgitos de base r.
Adems, este procedimiento no requiere que se realice operacin aritmtica de ningn tipo.

Taller de Programacin de PICs. 12

Conversin entre sistemas numricos


Conversin de base rk a base r

Ejemplo: Convertir N = (10111011110)2 a base 8 y base 16.


Como 8 = 23, basta con representar cada 3 dgitos del nmero binario en octal como se muestra a continuacin:

N = 10 111 011 110


2 7 3 6

N = 27368

Sin embargo, dado que 16 = 24, ahora se emplean grupos de 4 dgitos del nmero binario en hexadecimal, como sigue:

N = 101 1101 1110


5 D E

N = 5DEH
Taller de Programacin de PICs. 13

Conversin entre sistemas numricos


Conversin de base rk a base r Ejercicios: Convertir los siguientes nmeros a su equivalente en octal, hexadecimal ambos.

1. 2. 3. 4.

111011101110012, 100010000111102, 1101010011011012, 10101011101012,

Taller de Programacin de PICs. 14

Cdigos binarios
Cdigo BCD a 7 segmentos
Un dispositivo muy generalizado por su sencillez y bajo costo en dispositivos digitales de visualizacin es el exhibidor o display de siete segmentos, el cual consiste en un arreglo de siete indicadores luminosos (LEDs) u opacos (cristal lquido) arreglado como se muestra en la siguiente figura. Existen dos tipos de exhibidores de siete segmentos construidos con LEDs, estos son los de nodo comn y los de ctodo comn.
a f g e d c
a b c d e f g Ctodo comn a b c d e f g nodo comn

Arreglo de 7 segmentos
Taller de Programacin de PICs. 15

Cdigos binarios
Cdigo BCD a 7 segmentos

En la siguiente tabla se muestra el cdigo de 7 segmentos para un display de nodo comn para los dgitos decimales y el equivalente en BCD:
a f g e d Arreglo de 7 segmentos c b
N 0 1 2 3 4 5 6 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 a 0 1 0 0 1 0 0 0 0 0 b 0 0 0 0 0 1 1 0 0 0 c 0 0 1 0 0 0 1 0 0 0 d 0 1 0 0 1 0 1 1 0 0 e 0 1 0 1 1 1 1 1 0 1 f 0 1 1 1 0 0 1 1 0 0 g 1 1 0 0 0 0 1 1 0 0 Display

0 1 2 3 4 5 6 7 8 9

Taller de Programacin de PICs. 16

Diferencia entre P y C
Un microcontrolador es un circuito integrado programable (PIC) que contiene todos los componentes de un computador. Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su pequeo tamao suele incorporarse al propio dispositivo que gobierna (embedded controller). El microcontrolador es un computador dedicado, en su memoria slo reside un programa destinado a gobernar una aplicacin determinada; sus lneas de entrada/salida soportan las conexiones de sensores y actuadores del dispositivo a controlar. Una vez programado y configurado el C, solamente sirve para gobernar la tarea asignada.
Taller de Programacin de PICs. 17

Diferencia entre P y C
Por otro lado, el microprocesador es un circuito integrado que contiene solamente la unidad central de procesos o CPU (procesador). La memoria, los puertos y todos los dems perifricos son exteriores, accesndose a ellos a travs de los buses de direcciones, datos y control, razn por la cual se dice que un P es un sistema abierto pues su configuracin vara dependiendo de la aplicacin a la que se destine.
Sin embargo, un microcontrolador (PICs) es una unidad que posee en su interior al microprocesador y a los perifricos y elementos indispensables para que pueda funcionar como una microcomputadora en un solo chip.
Taller de Programacin de PICs. 18

Conceptos bsicos
Otra caracterstica de los procesadores PIC es el uso de un conjunto de instrucciones del tipo RISC (Reduced Instruction Set Computer). Con el RISC se suele ejecutar la mayora de las instrucciones con un solo pulso del clock.

Con las instrucciones que se usan en otros equipos del tipo CISC (Complex Instruction Set Computer), se logra instrucciones ms poderosas, pero a costa de varios ciclos del clock. En el bien conocido procesador 68HC11 de Motorola se requieren a veces hasta 5 ciclos del clock para ejecutar una instruccin.

Taller de Programacin de PICs. 19

Conceptos bsicos
La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria nica que contiene las instrucciones del programa y los datos.

El tamao de la unidad de datos o instrucciones est fijado por el ancho del bus de la memoria. Es decir que un microprocesador de 8 bits, que tiene adems un bus de 8 bits que lo conecta con la memoria, deber manejar datos e instrucciones de una o ms unidades de 8 bits (bytes) de longitud.
Taller de Programacin de PICs. 20

Conceptos bsicos
Por otro lado, la arquitectura Harvard, consiste simplemente en un esquema en el que el CPU est conectado a dos memorias por medio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos.

MEM PROG

CPU

MEM DATOS

Los buses son independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instruccin Set Computer), el set de instrucciones y el bus de la memoria de programa pueden disearse de manera tal que todas las instrucciones tengan una sola posicin de memoria de programa de longitud.
Taller de Programacin de PICs. 21

Memoria de Programa
El " PIC 16F84 " es un MICROCONTROLADOR con memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya que no se requiere de borrado con luz ultravioleta como las versiones EPROM sino, permite reprogramarlo nuevamente sin ser borrado con anterioridad.
El PIC 16C84 es un microcontrolador de la familia MICROCHIP, totalmente compatible con el PIC 16F84. Su principal caracterstica es que posee memoria "EEPROM" en lugar de memoria Flash, pero su manejo es igual.

Taller de Programacin de PICs. 22

Memoria de Programa
EL PIC16F84 tiene una memoria de 1 Kbyte de longitud con palabras de 14 bits.

Taller de Programacin de PICs. 23

Memoria de Programa
Como el PIC16F84 tiene un contador de programa de 13 bits, tiene una capacidad de direccionamiento de 8K x 14, pero solamente tiene implementado el primer 1K x 14 (000h hasta 03FFh). Si se direccionan posiciones de memoria superiores a 3FFh se causar un solapamiento o desborde con el espacio del primer 1K. Vector de Reset Cuando ocurre un reset o se enciende el microcontrolador, el contador de programa se pone en ceros (000h). Por esta razn, en la primera direccin del programa se debe escribir todo lo relacionado con la iniciacin del mismo.
Taller de Programacin de PICs. 24

Memoria de Programa
Vector de Interrupcin

Cuando el microcontrolador recibe una seal de interrupcin el contador de programa apunta a la direccin 04h de la memoria de programa, por eso all se debe escribir toda la programacin necesaria para atender dicha interrupcin.

Taller de Programacin de PICs. 25

Memoria de Datos RAM


La memoria interna de datos, tambin llamada archivo de registros (register file), esta dividida en dos grupos: los registros especiales, y los registros de propsito generales. El PIC16F84 puede direccionar 128 posiciones de memoria RAM, pero solamente tiene implementado fsicamente los primeros 80 (0 a 4Fh).
De estos los primeros 12 son registros que cumplen un propsito especial en el control del microcontrolador y los 68 siguientes son registros de uso general que se pueden usar para guardar los datos temporales de la tarea que se est ejecutando. Los registros estn organizados como dos bancos (pginas) de 128 posiciones de 8 bits cada una (128 x 8); todas las posiciones se pueden accesar directa o indirectamente a travs de un registro puntero FSR (File Select Register).
Taller de Programacin de PICs. 26

Memoria de Datos RAM


Para seleccionar qu banco se trabaja en un momento determinado se utiliza el bit RP0 del registro STATUS. Con RP0=0 se accede al banco 0, mientras que con RP0=1 se accede al banco 1.

Taller de Programacin de PICs. 27

Memoria de Datos RAM


Registros de Funcin especial

Taller de Programacin de PICs. 28

Memoria de Datos RAM

El registro INTCON contiene los bits para habilitar cada una de las fuentes de interrupcin.
Taller de Programacin de PICs. 29

Memoria de Datos RAM


02h o PCL: CONTADOR DE PROGRAMA (PC). Contiene la direccin de la prxima instruccin a ejecutar. Se incrementa automticamente al ejecutar cada instruccin, de manera que la secuencia natural de ejecucin del programa es lineal, una instruccin despus de la otra.

Algunas instrucciones de control, cambian el contenido del PC alterando la secuencia lineal de ejecucin. Dentro de estas se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posicin de la memoria. Otras instrucciones de control son los SKIP o salteos condicionales, que producen un incremento adicional del PC si se cumple una condicin especifica, haciendo que el programa saltee, sin ejecutar, la instruccin siguiente.
Taller de Programacin de PICs. 30

Memoria de Datos RAM


04h o FSR: REGISTRO SELECTOR DE REGISTROS. En asocio con el registro IND0, se utiliza para seleccionar indirectamente los otros registros disponibles. Mientras que los antecesores del PIC 16F84 solo posean 5 bits activos, en este microcontrolador se poseen solo 8 bits. Si en el programa no se utilizan llamadas indirectas, este registro se puede utilizar como un registro de propsito general. 05h o PORTA: PUERTO DE ENTRADA/SALIDA DE 5 BITS (RA0~ RA4). Este puerto al igual que todos sus similares en los PIC, puede leerse o escribirse como si se tratara de un registro cualquiera. El registro que controla el sentido (entrada o salida) de los pines de este puerto esta localizado en la pagina 1 (Banco 1), en la posicin 85h y se llama TRISA.
Taller de Programacin de PICs. 31

Memoria de Datos RAM


06h o PORTB: PUERTO DE ENTRADA/SALIDA DE 8 BITS (RB0~RB7). Al igual que en todos los PIC, este puede leerse o escribirse como si se tratara de un registro cualquiera; algunos de sus pines tienen funciones alternas en la generacin de interrupciones. El registro de control para la configuracin de la funcin de sus pines se localiza en la pagina 1 (Banco 1), en la direccin 86h y se llama TRISB.
08h o EEDATA: REGISTRO DE DATOS DE LA EEPROM. Este registro contiene el dato que se va a escribir en la memoria EEPROM de datos o el que se ley de sta. 09h o EEADR: REGISTRO DE DIRECCION DE LA EEPROM. Aqu se mantiene la direccin de la EEPROM de datos que se van a trabajar, bien sea para una operacin de lectura o para una de escritura.
Taller de Programacin de PICs. 32

Memoria de Datos RAM


Registro STATUS Contiene el estado aritmtico de la ALU, el estado del reset y los bits para seleccin del banco. Donde: L=bit de lectura E=bit de escritura 0/1/x=Valor despus de un RESET

Taller de Programacin de PICs. 33

Memoria de Datos RAM

Taller de Programacin de PICs. 34

Memoria de Datos RAM


85h o TRISA: REGISTRO DE CONFIGURACION DEL PUERTO A. Es el registro de control para el puerto A. Un "cero" en el bit correspondiente al pin lo configura como salida, mientras que un "uno" lo hace como entrada. 86h o TRISB: REGISTRO DE CONFIGURACION DEL PUERTO B. Es el registro de control para el puerto B. Un "cero" en el bit correspondiente al pin lo configura como salida, mientras que un "uno" lo hace como entrada. Adems, el PIC cuenta con una memoria EEPROM con una capacidad de almacenamiento de datos de 64 bytes, capaz de mantenerlos por ms de 40 aos, y soporta mucho ms de 1,000 ciclos de grabado y borrado.
Taller de Programacin de PICs. 35

Procesador
Dada la necesidad de conseguir elevados rendimientos en el procesamiento de las instrucciones, el PIC16F84 cuenta con un procesador de arquitectura Harvard.

68 bytes de RAM 64 bytes de EEPROM


Taller de Programacin de PICs. 36

Procesador

Arquitectura tradicional

Arquitectura ortogonal
Taller de Programacin de PICs. 37

Procesador
Se puede observar que la principal diferencia entre ambas arquitecturas radica en la ubicacin del registro de trabajo, que para los PICs se denomina W (Working Register), y para los tradicionales es el Acumulador (A). En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador, cuya salida esta conectada a una de las entradas de la ALU, por lo tanto el resultado de cualquier operacin siempre quedar en este registro. Para operar sobre un dato de memoria, luego realizar la operacin siempre hay que mover el acumulador a la memoria con una instruccin adicional.

Taller de Programacin de PICs. 38

Procesador
En los PIC, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de simple operando el dato en este caso se toma de la memoria (por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin. Las operaciones con constantes provenientes de la memoria de programa se realizan solo sobre el registro W.
Taller de Programacin de PICs. 39

Procesador
Otra caracterstica del procesador es que es segmentado; es decir, que mientras ejecuta una instruccin, puede buscar la siguiente en el mismo ciclo de trabajo.
1. MOVLW 55h 2. MOVWF PORTB 3. CALL SUB_1 4. BSF PORTA, BIT3

El procesador es de tipo RISC, puesto cuenta con 35 instrucciones, donde la mayora se ejecuta en un ciclo de trabajo.
Taller de Programacin de PICs. 40

Perifricos
Los puertos o perifricos son el puente entre el microcontrolador y el mundo exterior. Son lneas digitales que trabajan entre cero y cinco voltios y se pueden configurar como entradas o como salidas. El PIC 16F84 tiene dos puertos. El puerto A con 5 lneas y el puerto B con 8 lneas. Cada pin se puede configurar como entrada o como salida independiente programado por un par de registros diseados para tal fin (TRISA y TRISB, respectivamente). En ese registro un "0" configura el pin del puerto correspondiente como salida y un "1" lo configura como entrada.

Taller de Programacin de PICs. 41

Perifricos

Taller de Programacin de PICs. 42

Perifricos
PUERTO A 1. 2. 3. 4. 5. RA0 = Pin de Entrada/Salida (TTL). RA1 = Pin de Entrada/Salida (TTL). RA2 = Pin de Entrada/Salida (TTL). RA3 = Pin de Entrada/Salida (TTL). RA4/TOCKI = Pin de Entrada/Salida o entrada de Reloj Externo para el TMR0, cuando este pin se configura como salida es de tipo Open Drain (ST), cuando funciona como salida se debe conectar a Vcc (+5V) a travs de una resistencia.

Taller de Programacin de PICs. 43

Perifricos
PUERTO B
1. 2. 3. 4. 5. RB0/INT = Pin de E/S o entrada de int externa. (TTL/ST). RB1 = Pin de Entrada/Salida (TTL). RB2 = Pin de Entrada/Salida (TTL). RB3 = Pin de Entrada/Salida (TTL). RB4 = Pin de E/S con Interrupcin por cambio de Flanco (TTL). 6. RB5 = Pin de E/S con Interrupcin por cambio de Flanco (TTL). 7. RB6 = E/S con Interrupcin por cambio de Flanco (TTL/ST). 8. RB7 = E/S con Interrupcin por cambio de Flanco (TTL/ST).

Taller de Programacin de PICs. 44

Perifricos
PINES ADICIONALES
MCLR = Pin de Reset del Microcontrolador (Master Clear). Se activa (el pic se resetea) cuando tiene un "0"lgico en su entrada. Vss = Ground o Tierra VDD = Fuente Positiva (+5V) OSC2/CLKOUT = Entrada del Oscilador del Cristal. Se conecta al Cristal o Resonador en modo XT (Oscilador de Cristal). En modo RC (ResistenciaCondensador), este pin acta como salida el cual tiene de la frecuencia que entra por el pin OCS1/CLKIN. OSC1/CLKIN = Entrada del Oscilador del Cristal / Entrada de reloj de una Fuente Externa.
Taller de Programacin de PICs. 45

Perifricos
PUERTO A

Si trabaja como salida:


1. El TRIS Latch contiene un 0. 2. El dato aparece en la lnea del bus de datos interno. 3. Se activa WR Port almacenando el dato, Si D=1, Qneg=0. 4. Las salidas Or y And sern 0, conduciendo el PMOS. 5. La lnea exterior queda en nivel alto al conectarse a VDD. 6. El Data Latch mantiene la salida hasta que no se reescriba.
Taller de Programacin de PICs. 46

RA3:RA0

Perifricos
Si trabaja como entrada:
1. El TRIS Latch contiene un 1, lo cual desactiva al PMOS junto al NMOS en alta impedancia. 2. El dato aplicado al puerto desde el exterior pasa al bus interno al habilitar a RD PORT. 3. Al leer una lnea de entrada se obtiene el estado actual del pin correspondiente. 4. La informacin debe mantenerse durante el ciclo de instruccin.
Taller de Programacin de PICs. 47

RA3:RA0

Anda mungkin juga menyukai