Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Por otro lado, al microcontrolador se le disea de tal manera que tenga todas las
componentes integradas en el mismo chip. No necesita de otros componentes
especializados para su aplicacin, porque todos los circuitos necesarios, que de
otra manera correspondan a los perifricos, ya se encuentran incorporados. As se
ahorra tiempo y espacio necesario para construir un dispositivo.
QUE PUEDEN HACER LOS MICROCONTROLADORES?
Para entender con ms facilidad las razones del xito tan grande de los
microcontroladores, vamos a prestar atencin al siguiente ejemplo. Hace unos 10
aos, disear un dispositivo electrnico de control de un ascensor de un edificio de
varios pisos era muy difcil, incluso para un equipo de expertos. Ha pensado
alguna vez en qu requisitos debe cumplir un simple ascensor? Cmo lidiar con
la situacin cuando dos o ms personas llaman al ascensor al mismo tiempo?
Cul llamada tiene la prioridad? Cmo solucionar las cuestiones de seguridad,
de prdida de electricidad, de fallos, de uso indebido? Lo que sucede despus de
resolver estos problemas bsicos es un proceso meticuloso de disear los
dispositivos adecuados utilizando un gran nmero de los chips especializados.
Este proceso puede tardar semanas o meses, dependiendo de la complejidad del
dispositivo. Cuando haya terminado el proceso, llega la hora de disear una placa
de circuito impreso y de montar el dispositivo.Un dispositivo enorme! Es otro
trabajo difcil y tardado. Por ltimo, cuando todo est terminado y probado
adecuadamente, pasamos al momento crucial y es cuando uno se concentra,
respira profundamente y enciende la fuente de alimentacin.
Esto suele ser el punto en el que la fiesta se convierte en un verdadero trabajo
puesto que los dispositivos electrnicos casi nunca funcionan apropiadamente
desde el inicio. Preprese para muchas noches sin dormir, correcciones,
mejoras... y no se olvide de que todava estamos hablando de cmo poner en
marcha un simple ascensor.
Cuando el dispositivo finalmente empiece a funcionar perfectamente y todo el
mundo est satisfecho, y le paguen por el trabajo que ha hecho, muchas
compaas de desarrollo estarn interesadas en su trabajo. Por supuesto, si tiene
suerte, cada da le traer una oferta de trabajo de un nuevo inversionista. Sin
embargo, si lo requieren para trabajar en el control de los elevadores de un nuevo
edificio que tiene cuatro pisos ms de los que ya maneja su sistema de control.
Sabe cmo proceder? Cree acaso que se pueden controlar las demandas de
sus clientes? Pensamos que usted va a construir un dispositivo universal que se
puede utilizar en los edificios de 4 a 40 pisos, una obra maestra de electrnica.
Bueno, incluso si usted consigue construir una joya electrnica, su inversionista le
esperarar delante de la puerta pidiendo una cmara en el ascensor o una msica
relajante en caso de fallo de ascensor. O un ascensor con dos puertas.
los componentes etc...). Imagnese una computadora que opera sobre nmeros
decimales al tratarlos de la siguiente manera: 0=0V, 1=5V, 2=10V, 3=15V, 4=20V...
9=45V!?
Alguien dijo bateras?
Una solucin mucho ms fcil es una lgica binaria donde 0 indica la ausencia de
voltaje, mientras que 1 indica la presencia de voltaje. Simplemente, es fcil de
escribir 0 o 1 en vez de no hay voltaje o hay voltaje. Mediante el cero lgico (0)
y uno lgico (1) la electrnica se enfrenta perfectamente y realiza con facilidad
todas las operaciones aritmticas. Evidentemente, se trata de electrnica que en
realidad aplica aritmtica en la que todos los nmeros son representados con slo
dos dgitos y donde slo es importante saber si hay voltaje o no. Por supuesto,
estamos hablando de electrnica digital.
SISTEMA DE NUMERACIN HEXADECIMAL
En el principio del desarrollo de las computadoras era evidente que a la gente le
costaba mucho trabajar con nmeros binarios. Por eso, se estableci un nuevo
sistema de numeracin, que utilizaba 16 smbolos diferentes. Es llamado el
sistema de numeracin hexadecimal. Este sistema est compuesto de 10 dgitos a
los que estamos acostumbrados (0, 1, 2, 3,... 9) y de seis letras del alfabeto A, B,
C, D, E y F. Cul es el propsito de esta combinacin aparentemente extraa?
Basta con mirar cmo todo en la historia de los nmeros binarios encaja
perfectamente para lograr una mejor comprensin del tema.
El mayor nmero que puede ser representado con 4 dgitos binarios es el nmero
1111. Corresponde al nmero 15 en el sistema decimal. En el sistema hexadecimal
ese nmero se representa con slo un dgito F. Es el mayor nmero de un dgito
en el sistema hexadecimal. Se da cuenta de la gran utilidad de estas
equivalencias? El mayor nmero escrito con ocho dgitos binarios es a la vez el
mayor nmero de dos dgitos en el sistema hexadecimal. Tenga en cuenta que
BIT
MICROCONTROLADORES PIC
Los microcontroladores PIC desarrollados por Microchip Technology son
probablemente la mejor opcin si es principiante. Hay varias razones por lo que
esto es verdadero...
El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface
Controller), conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975
por la compaa General Instruments. Este chip denominado PIC1650 fue
diseado para propsitos completamente diferentes. Diez aos ms tarde, al
aadir una memoria EEPROM, este circuito se convirti en un verdadero
microcontrolador PIC. Hace unos pocos aos la compaa Microchip
Technology fabric la 5 billonsima muestra. Si est interesado en aprender ms
sobre eso, siga leyendo.
If you are interested in learning more about it, just keep on reading.
La idea principal de este libro es proporcionar la informacin necesaria al usuario
para que sea capaz de utilizar los microcontroladores en la prctica despus de
leerlo. Para evitar explicaciones pesadas y las historias infinitas sobre las
caractersticas tiles de los microcontroladores diferentes, este libro describe el
funcionamiento de un modelo particular que pertenece a la clase media alta. Es
PIC16F887 - bastante poderoso para ser digno de atencin y bastante simple para
poder ser utilizado por cualquiera. As, los siguientes captulos describen este
microcontrolador en detalle y tambin se refieren a la familia PIC entera.
JUEGO DE INSTRUCCIONES
El juego de instrucciones para los microcontroladores 16F8XX incluye 35
instrucciones en total. La razn para un nmero tan reducido de instrucciones
yace en la arquietectura RISC. Esto quiere decir que las instrucciones son bien
optimizadas desde el aspecto de la velocidad operativa, la sencillez de la
arquitectura y la compacidad del cdigo. Lo malo de la arquitectura RISC es que
se espera del programador que haga frente a estas instrucciones. Por supuesto,
esto es relevante slo si se utiliza el lenguaje ensamblador para la programacin.
Este libro se refiere a la programacin en el lenguaje de alto nivel C, lo que
significa que la mayor parte del trabajo ya fue hecho por alguien ms. As, slo se
tienen que utilizar instrucciones relativamente simples.
TIEMPO DE EJECUCIN DE INSTRUCCIONES
Todas las instrucciones se ejecutan en un ciclo. La nicas excepciones pueden ser
las instrucciones de ramificacin condicional o las instrucciones que cambian el
contenido del contador de programa. En ambos casos, dos ciclos de reloj son
necesarios para la ejecucin de la instruccin, mientras que el segundo ciclo se
DESARROLLO DE LA PRCTICA
Ejercicio 1
Escribe el cdigo fuente de un programa escrito en lenguaje C, el cual
gobierne un micro controlador (PIC16F84), este programa debe
configurar las lneas de la PUERTAA como entradas y las lneas de la
PUERTAB como salidas, dicho programa debe enviar el siguiente tren de
informacin hacia la PUERTAB del PIC: 1, 2, 4 ,8, 16,32,64 y 128, cada
dato debe enviarse a dicho puerto por un periodo de tiempo igual a 3
milisegundos , es decir se enva un 1 por tres milisegundos y enseguida
se enva un 2 por el mismo lapso de tiempo, del mismo modo con los 8
valores solicitados. Una vez que hayas escrito tu programa complalo y
prubalo con ayuda del isis.
#include <16F84.H>
UTILIZAR*/
#fuses XT
#use
delay( clock = 4000000 )
#include <math.h>
void main(void)
{
int32 x = 0;
int32 ciclos = 255, i =0;
/*DECLARACION DE VARIABLE*/
/* Declaracion de Valriables */
/* Puntero a PuertaA */
/* Puntero a PuertaB */
*// Se le da el valor 2 a x en
*// Sale x = 2 en binario
*// i = 2 ya que la potencia 2 es
*// de 2.
/*INICIA CUENTA*/
#include <16F84.H>
UTILIZAR*/
#fuses XT
OSCILADOR*/
#use
delay( clock = 4000000 )
MHz */
void main(void)
{
int32 x = 0;
VARIABLE*/
//int32 ciclos = 15, i =0;
int *p_puertaa= 0x05;
int *p_puertab= 0x06;
SET_TRIS_A (0xff);
PUERTAS A SON ENTRADAS*/
/*DECLARACION DE
/* Declaracion de Valriables */
/* Puntero a PuertaA */
/* Puntero a PuertaB */
/* 0xff --> TRISATODAS LAS
SET_TRIS_B (0x00);
LAS PUERTAS B SON SALIDAS */
/*inicio */
*p_puertab = 0xFC;
delay_MS(500);
*p_puertab =0x60;
delay_MS(500);
*p_puertab =0xDA;
delay_MS(500);
*p_puertab =0xF2;
delay_MS(500);
*p_puertab =0x66;
delay_MS(500);
*p_puertab =0xB6;
delay_MS(500);
*p_puertab =0xBE;
delay_MS(500);
*p_puertab =0xE0;
delay_MS(500);
*p_puertab =0xFE;
delay_MS(500);
*p_puertab =0xE6;
delay_MS(500);
otro:
*p_puertab =0;
delay_MS(500);
goto otro;
Ejercicio 3
Una vez que hallas concluido el ejercicio nmero 2, realiza lo siguiente:
Edita el cdigo fuente que realizaste en el ejercicio anterior, el programa
debe permitir que el usuario accione los cinco interruptores conectados
a la PUERTAA del micro controlador (el usuario puede accionar uno o
varios interruptores a la vez), dependiendo del estado de los
interruptores accionados (abierto o cerrado), en el display de debe
visualizarse el nmero correspondiente. Recuerda que con 5 bits puedes
tener hasta 31 valores diferentes. Pero con un dysplay de 7 segmentos
nicamente puedes visualizar del nmero 0 al nmero 9.
#include <16F84.H>
UTILIZAR*/
#fuses XT
#use
delay( clock = 4000000 )
MHz */
void main(void)
{
int32 lee = 0;
VARIABLE*/
//int32 ciclos = 15, i =0;
int *p_puertaa= 0x05;
int *p_puertab= 0x06;
/*DECLARACION DE
/* Declaracion de Valriables */
/* Puntero a PuertaA */
/* Puntero a PuertaB */
SET_TRIS_A (0xff);
PUERTAS A SON ENTRADAS*/
SET_TRIS_B (0x00);
LAS PUERTAS B SON SALIDAS */
/*inicio */
otro:
lee= *p_puertaa;
switch(lee){
case 0:
lee=0b00000;
*p_puertab =0xFC;
goto otro;
break;
case 1:
lee=0b00001;
*p_puertab =0x60;
goto otro;
break;
case 2:
lee=0b00010;
*p_puertab =0xDA;
goto otro;
break;
case 3:
lee=0b00011;
*p_puertab =0xF2;
goto otro;
break;
case 4:
lee=0b00100;
*p_puertab =0x66;
goto otro;
break;
case 5:
lee=0b00101;
*p_puertab =0xB6;
goto otro;
break;
case 6:
lee=0b00110;
*p_puertab =0xBE;
goto otro;
break;
case 7:
lee=0b00111;
*p_puertab =0xE0;
goto otro;
break;
case 8:
lee=0b01000;
*p_puertab =0xFE;
goto otro;
break;
case 9:
lee=0b01001;
*p_puertab =0xE6;
goto otro;
break;
default:
*p_puertab =0x02;
goto otro;
break;
}