miércoles, marzo 27, 2013

PROGRAMACION DE PIC EN ASSEMBLER

GENERALIDADES
1) CARACTERÍSTICAS GENERALES DEL PIC 16F87XX

*Procesador de arquitectura RISC avanzada.
El objetivo de esta arquitectura es facilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Actualmente son la base de la mayoría de los microprocesadores. Existen otro tipo de arquitectura llamada CISC, usada en la mayoría de las PCs.
*Juego de 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en un ciclo de instrucción
*Frecuencia de 20MHz

*Hasta 368 bytes de memoria RAM (Random Access Memory - Memoria de datos)
*Hasta 256 bytes de memoria EEPROM (Electrically Erasable Programmable Read Only Memory)
Es un tipo de ROM que puede ser programada, borrada y reprogramada electricamente, son memorias volátiles.
*Hasta 14 fuentes de interrupción internas y externas
*Pilas con 8 niveles
*Perro guardián (WDT)
El Watch Dog Timer es un artificio para evitar que los micro se queden colgados, lo que hace fundamentalmente es resetear el micro tras un periodo de tiempo determinado. Su funcionamiento es similar a la interrupción por desbordamiento de un Timer, que se produce cuando un Timer que es incrementado continuamente pasa de su valor máximo al mínimo para comenzar de nuevo a contar. En el caso del WDT en lugar de saltar un interrupcion se genera un reset automático en el momento de producirse dicho desbordamiento.
* Código de protección programable
*Voltaje de alimentación comprendido entre 2 y 5.5 voltios
Fabricado con tecnología CMOS
*Bajo consumo (menos de 2mA a 5V y 5MHz)

2) DIAGRAMA DE LOS PINES DEL PIC 16F874A/877A.- El encapsulado mas común tipo DIP (Dual In-Line Pin) :


- DESCRIPCION DE LOS PINES:

º OSC1/CLKIIN (9) : Entrada para el oscilador o cristal externo
º OSC2/CLOCKOUT (10): Salida del oscilador. Este pin debe conectarse al cristal o resonador. En caso de usar una red RC este pin se puede usar como un tren de pulsos o reloj cuya frecuencia es 1/4 de OSC1.
º MCLR/VPP/THV (1) : Este pin es el reset del microcontrolador, también se usa como entrada o pulso de grabación al momento de programar el dispositivo.
º RA0/AN0 (2) : Puede actuar como linea digital de E/S como entrada analógica del conversor AD (canal 0)
º RA1/AN1 (3) : Puede actuar como linea digital de E/S como entrada analogica del conversor AD (canal 1)
º RA2/AN2/VREF- (4) : Puede actuar como linea digital de E/S o como entrada analogica del conversor AD (canal 2) o entrada negativa de voltaje de referencia
º RA3/AN3/VREF+ (5) : Puede actuar como linea digital de E/S o como entrada analogica del conversor AD (canal 3) o entrada positiva de voltaje de referencia
º RA4/T0CKI (6) : Linea digital de E/S o entrada del reloj de timer 0. Salida con colector abierto (Esta salida tiene como peculiaridad, que tenemos que incluir una resistencia de carga externamente para que el CI nos proporcione un nivel alto)
º RA5/SS#/AN4 (7) : Line digital de E/S, entrada analogica o seleccion como esclavo de la puerta serie sincrona
º RB0/INT (21) : Puerto B pin0, bidireccional. Este pin puede ser la entrada para solicitar un interrupcion
º RB1 (22) : Puerto B pin 1, bidireccional
º RB2 (23) : Puerto B pin 2, bidireccional
º RB3/PGM (24) : Puerto B pin 3, bidireccional o entrada de voltaje para programacion
º RB4 (25) : Puerto B pin 4, bidireccional. Puede programarse como petición de interrupción cuando el pin cambia de estado.
º RB5 (26) : Puerto B pin 5, bidireccional. Puede programarse como petición de interrupción cuando el pin cambia de estado.
º RB6/PGC (27) : Puerto B pin 6, bidireccional. Puede programarse como petición de interrupcion cuando el pin cambia de estado. En la programación serie recibe señales.
º RB7/PGD (28) : Puerto B pin 7, bidireccional. Puede programarse como peticion de interrupcion cuando el pin cambia de estado. En la programacion serie actúa como entrada de datos.
º RC0/T10S0/T1CKI (11) : Linea digital de E/S o salida del oscilador del timer 1 o como entrada de reloj del timer 1.
º RC1/T10SI/CCP2 (12) : Linea digital de E/S o entrada del oscilador del timer 1 o entrada al modulo captura 2/salida comparacion 2/salida del PWM2.
º RC2/CCP1 (13) : E/S digital. Tambien puede actuar como entrada captura 1/salida comparacion 1/ salida del PWM 1.
º RC3/SCK/SCL (14) : E/S digital o entrada de reloj serie sincrona/ salida de los modulos SPI e I2C
º RC4/SDI/SDA (15) : E/S digital o entrda de datos en modo SPI o I/O datos en modo I2C
º RC5/SD0 (16) : E/S digital o salida digital en modo SPI (Maestro-esclavo).
º RC6/TX/CK (17) : E/S digital o pin de transmision USART asincrono o como datos en el sincrono.
º RC7/RX/DT (18) : E/S digital o receptor del USART asincrono o como datos en el sincrono.
º RD0/PSP0-RD7/PSP7 : Los ocho pines de esta puerta pueden actuar como E/S digital o como lines para la transferencia de informacion en la comunicacion de la puerta paralela esclava. Solo estan disponibles en los PIC 16F874/7.
º RE0/RD#/AN5 (8) : E/S digital o señal de lectura para la puerta paralela esclava o entrada analogica canal 5.
º RE1/WR#/AN6 (9) : E/S digital o señal de escritura para la puerta paralela esclava o entrada analogica canal 6.
º RE2/CS#/AN7 (10) : E/S digital o señal de activacion/desactivacion de la puerta paralela esclava o entrada analogica canal 7.
º VSS (12,31) : Tierra
º VDD (11,32) : Fuente (5V)

3) ARQUITECTURA DEL 16F87XA: El tipo de procesador RISC emplea un arquitectura Harvard lo que significa que trabaja las zonas de memoria de programa y datos en forma separada.



4) ARQUITECTURA INTERNA DEL PIC 16F87XA
  Aquí encontramos el procesador, la memoria de programa, memoria de datos, periféricos, contadores, etc.


5) ORGANIZACIÓN DE LA MEMORIA
La memoria se divide en memoria de datos y programa. La de datos a su vez se divide en:

  * SFR (Special Function Register) Registro de propósito general, son registros que ayudan a configurar el hardware interno asi como sirven para escribir o leer valores de los diferentes componentes que constituyen el microcontrolador. Por ejemplo el registro "trisa" que nos permite configurar el modo de trabajo de las lineas del puerto A.

 * GFR (General Function Register) Registros de proposito general, son posiciones de memoria que podemos usar para almacenar valores que emplean nuestros programa.

A su vez la memoria de datos se divide en cuatro bancos (esto es para el caso especifico del 16F87XA). Las posiciones bajas siempre estan reservadas para los SFR en tanto que las altas para los GFR.



6) HERRAMIENTAS

Para programar necesitamos:

MPLAB: Es un entorno de desarrollo es decir un recipiente que incluye varias herramientas como un editor de textos que nos permite ingresar el programa expresado en codigos, simular, etc. El MPLAB es un software de libre distribucion que se encuentra disponible en www.microchip.com

PICKIT2: Es un herramienta de desarrollo de desarrollo de bajo costo con un interfaz facil de usar para programar y depurar las familias de Microchip Flash de microcontroladores

Por ultimo dejamos un diagrama que nos ayudara a comprender mejor los pasos a seguir cuando tenemos que programar y depurar un PIC.



©Copyrigth Bach. Ing. Mishell Sanchez Guevara         cell: 985 653 382 

1 comentario:

Anónimo dijo...

no logro entender y mucho menos a una Universidad que pretenda enseñar o aparentar enseñar si lo que enseña se le pone el sello de ©Copyrigth, esto lo entiendo mas como cuidado te enseño pero no me imites ni sigas mis instrucciones bajo pena de.., por experiencia se que lo prohibido atrae a la curiosidad y a lo único que enseña es a joderse a sí mismo, y a crearse cremalleras cerradas que es ahora típico y moda de made in america, un día de esto al igual que casi ocurre en España tendremos todos ©Copyright en los rayos del sol del agua y el aire o muy al contrario algunos se comerán los ©Copyright hasta en el postre