You are on page 1of 34

Una vez creado el programa, es necesario compilarlo en un cdigo .hex.

Seleccione una de las


opciones para compilar del men B:
Para crear un archivo .hex, seleccione la opcin Build (Ctrl+F9) del men

Project o pulse sobre el icono Build de la barra de herramientas Project.


Por medio de la opcin Build All Projects (Shift+F9) se compilan todos los
archivos del proyecto, libreras (si el cdigo fuente contiene alguna de el las) y
los archivos def para el microcontrolador utilizado.
La opcin Build + Program (Ctrl+F11) es importante ya que permite al
compilador mikroC PRO for PIC cargar automticamente el programa en el
microcontrolador despus de la compilacin. El proceso d e la programacin se
realiza por medio del programador PICFlash.

Todos los errores encontrados durante la compilacin aparecern en la ventana Message. Si


no hay errores en el programa, el compilador mikroC PRO for PIC generar los
correspondientes archivos de salida.

C*



2 2 $ 81   


.$4  8 9  55
 =6
El nico propsito de este programa es de encender varios diodos LED en el puerto B. Utilice
este ejemplo para examinar cmo es un programa real. La siguiente figura muestra el esquema
de conexin, mientras que el programa se encuentra en la siguiente pgina.


Al encender la fuente de alimentacin, cada segundo, el diodo LED en el puerto B emite luz, lo
que indica que el microcontrolador est conectado correctamente y que funciona normalmente.
En este ejemplo se muestra cmo escribir una cabecera correctamente. Lo mismo se aplica a
todos los programas descritos en este libro. Para no repetir, en los siguientes ejemplos no
vamos a escribir la cabecera. Se considera estar en el principio de cada programa, marcada
como "Cabecera".

Para hacer este ejemplo ms interesante, vamos a habilitar que los LEDs conectados al puerto
PORTB parpadeen. Hay varios modos de hacerlo:

1. Tan pronto como se encienda el microcontrolador, todos los LEDs emitirn la luz
por un segundo. La funcin Delay se encarga de eso en el programa. Slo se
necesita ajustar la duracin del tiempo de retardo en milisegundos.
2. Despus de un segundo, el programa entra en el bucle for, y se queda all hasta
que la variable k sea menor que 20. La variable se incrementa en 1 despus de
cada iteracin. Dentro del bucle for, el operador switch monitorea el estado lgico
en el puerto PORTB. Si PORTB=0xFF, su estado se invierte en 0x00 y viceversa.
Cualquier cambio de estos estados lgicos hace todos los LEDs parpadear. El
ciclo de trabajo es 5:1 (500mS:100mS).
3. Al salir del bucle for, el estado lgico del puerto POTRB cambia (0xb 01010101) y
el programa entra en el bucle infinito while y se queda all hasta que 1=1. El
estado lgico del puerto PORTB se invierte cada 200mS.

CC

"
4      2 5   -c 
En realidad, esto es una continuacin del ejemplo anterior, pero se ocupa de un problema un
poco ms complicado... El propsito era hacer los LEDs en el puerto PORTB parpadear
lentamente. Se puede realizar al introducir un valor suficiente grande para el parmetro del
tiempo de retardo en la funcin Delay. No obstante, hay otra manera ms eficiente para
ejecutar el programa lentamente. Acurdese de que este microcontrolador tiene un oscilador

incorporado LFINTOSC que funciona a una frecuencia de 31kHz. Ahora lleg la hora de darle
una oportunidad.
El programa se inicia con el bucle do-while y se queda all por 20 ciclos. Despus da cada
iteracin, llega el tiempo de retardo de 100ms, indicado por un parpadeo relativamente rpido
de los LEDs en el puerto PORTB. Cuando el programa salga de este bucle, el microcontrolador
se inicia al utilizar el oscilador LFINTOSC como una fuente de seal de reloj. Los LEDs
parpadean ms lentamente aunque el programa ejecuta el mismo bucle do-while con un tiempo
de retardo 10 veces ms corto.
Con el propsito de hacer evidentes algunas situaciones potencialmente peligrosas, se activan
los bits de control por medio de las instrucciones en ensamblador. Dicho de manera sencilla, al
entrar o salir una instruccin en ensamblador en el programa, el compilador no almacena los
datos en un banco actualmente activo de la RAM, lo que significa que en esta seccin de
programa, la seleccin de bancos depende del registro SFR utilizado. Al volver a la seccin de
programa escrito en C, los bits de control RP0 y RP1 deben recuperar el estado que tenan
antes de la aventura en ensamblador. En este programa, el problema se resuelve al utilizar la
variable auxiliar saveBank, lo que guarda el estado de estos dos bits.

 $  



 ,   L (
  ' 
 
<  ,   (OL (
  ' 

 (
  & ;
( ( ' (
 +# (  * 

*  (
  &;
 +#< ;
( ( ' (
 ' H0/;O ( '  
# < H (
 ' H0/;O (  *  (
(

 (
 +#< +#< %   (
 D* 
 ' H0/;O
'
5 ; '
 

 #
  %  L  
,
O V
(    (  L^

 /      L

< ##  @
  (

 (  ( /H - /H

 6 (  -

 * ( #;";:#7

 ( % 
  (    ( 


## !  #     


       
## !  * ( 0#$$03
+%%+ !  #    ( 
  >E%3;0#$
+%%+ !
   
 2Y4
+%%+ ! 
+%%+ ! 9   
  4 ( 
 
, E 
  (    ( 


##  O ( /H - /H  '  (
  *  
## 
< 

 (
 +#< +#< %   (
 D* 
 ' H0/;O
'
5 ; '
 

  #
  %  L  
,
O V
(     (  L^
,

CG

*
 L    $   3  2 3 $   
   9 $4 : 
En cuanto a los ejemplos anteriores, el microcontrolador ha ejecutado el programa sin haber
sido afectado de ninguna forma por su entorno. En la prctica, hay pocos dispositivos que
funcionen de esta manera (por ejemplo, un simple controlador de luz de nen). Los pines de
entrada se utilizan tambin en este ejemplo. En la siguiente figura se muestra un esquema,
mientras que el programa est en la siguiente pgina. Todo sigue siendo muy simple. El
temporizador Timer0 se utiliza como un contador. La entrada del contador est conectada a un
botn de presin, as que cada vez que se presiona el botn, el temporizador Timer0 cuenta un
pulso.
Cuando el nmero de pulsos coincida con el nmero almacenado en el registro TEST, un uno
lgico (5V) aparecer en el pin PORTD.3. Este voltaje activa un rel electromecnico, y por eso
este bit se le denomina REL en el programa.


$ 

 (
 # # $( ;+#;  
 | ( &?, $( /+>"Z  

  & ;
( ( ' (
 +# (  * 
*  (
  &;
 +# /    ' H0/;"
#  44 ;
( ( ' (
 ' H0/;" (  * 

(
 +#' /    ' H0/;8
# ' H  /8 (  *  (
F  (  (
!(

 (  *  
(
+ # +  )4 $
 ;9/   ( ' (( '  '  /"
+ # +  )4 , 
 '(  
 S

#  /    ' 4
 
 ;9/

 (
# # # _$ 
  5   ' 4
  

 ( ;+#;`


 +#' &@ 35(  
 H    /8   6(
 /+>a7
,
 V
(       
,

Slo una constante de enumeracin REL se utiliza en este ejemplo. Se le asigna un valor
mediante la declaracin.

 | ( &?, $( /+>a  

Si varios pines del puerto PORTD estn conectados a los rels, la expresin anterior se puede
escribir de la siguiente manera tambin:

 | ( &?!%& #'+! +#+ ! # '+,

A todas las constantes, precedidas por las constantes con valores asignados (REL=3 y
MOTOR=6), se les asignan automticamente los valores de las constantes precedentes,
incrementados en 1. En este ejemplo, a las constantes CALENTADOR y SURTIDOR se les
asignan los valores 4 y 7, es decir (CALENTADOR=4 y SURTIDOR=7), respectivamente.

CH

C
4  4  L$ 5 "4 
  $    3 8   
Al analizar los ejemplos anteriores, es probable que se haya fijado en la desventaja de
proporcionar tiempo de retardo por medio de la funcin Delay. En estos casos, el
microcontrolador se queda esttico y no hace nada. Simplemente espera que transcurra una
cierta cantidad de tiempo. Tal prdida de tiempo es un lujo inaceptable, por lo que se deber
aplicar otro mtodo.
Se acuerda usted del captulo de los temporizadores? Se acuerda de lo de interrupciones?
Este ejemplo los conecta de una manera prctica. El esquema se queda inalterada, y el desafo
sigue siendo presente. Es necesario proporcionar un tiempo de retardo suficiente largo para
darse cuenta de los cambios en el puerto. Para este propsito se utiliza el temporizador Timer0
con el pre-escalador asignado. Siempre que se genere una interrupcin con cada
desbordamiento en el registro del temporizador, la variable cnt se aumenta automticamente
en 1 al ejecutarse cada rutina de interrupcin. Cuando la variable llega al valor 400, el puerto
PORTB se incrementa en 1. Todo el procedimiento se lleva a cabo entre bastidores, lo que
habilita al microcontrolador hacer otra tarea.


$ 

|    8       

 
(
   $  ' D   (    
#   +     (
    ' 4
 ;9/
 #%+   O  ;%+ ( '  F    ;%E ( '  
,

 (
+ # +  ) 3  H(  
 (  ( *  ' 4
 ;9/
  & ;
( ( ' (
 +# (  * 
*  (
  &;
# < ;
( ( ' (
 ' H0/;O (  *

  (
(
 +#<  /    ' H0/;O
#   ;' 4
 ; 
 
 #%+   Y 
 ' D ;9/

 

  "      (  ( *  



 ( O    
  ( %   ' H0/;O
('P(  ' (
 +#< +#<  %  5   ' H0/;O  
  /       
,
,

,


Siempre que se produzca un desbordamiento en el registro del temporizador TRM0, ocurre una
interrupcin.

$ 

|     8       

 
(
   $  ' D   (    
 #  4 /      ;9/%E
# ; 3 +     (
   ( * ((
# & 
 ' 4
 ;9/Y - ;9/>
,

 (
  & ;
( ( ' (
 +# (  * 
*  (
  &;
 +#< 4 ,   
 (  (
 ' H0/;O
# < H (
 ' H0/;O (  *  (
(
#%+  $ *  ' 4
 ;9/
 #  4 /      ;9/%E
# ; 3 "?(     
 ' 4
 ;9/
# & 
 #   Y   ' D  '
 ( 
(
 
  /       
 #%+  % %' D  
 6 ( @%+ - H+%+7

 ( O    
  ( $   (

 ' H0/;O
('P(
 
' (

 +#< +#< 35   ' H0/;O (! 



  /       
,
,
,


En este caso, una interrupcin se habilita despus de que se produzca un desbordamiento en
el registro del temporizador TMR1 (TMR1H, TMR1L). Adems, la combinacin de los bits que
vara en el puerto POTRB difiere de la en el ejemplo anterior.

$ 

|     8       



(
 +#< +#< 8     D b/' 4c
, E D    (

 '

 
(
 #  4( #    ;9/%E  F
   %        
 #  4 /      -
#  /    * ( ;9/
,
,

 
 (
  /       
  & ;
( ( ' (
 +# (  * 
*  (
  &;
 +#< +(
 D*   ( ' (
 ' H0/;O
# < ;
( ( ' (
 ' H0/;O (  *  (
(
#%+  44 $ *  ' 4
 ;
#  ,   
 * (
 ' 4
 ;9/
 #   %' D  

 #%+  % O ( @%+ - H+%+ ( '  

( O    

 
( $   (

 ' H0/;O
('P(

 !(
  ' (


 E D /' 4    (



 ' H0/;O
  /       
,
,
,


En este ejemplo, una interrupcin ocurre despus de que se produce un desbordamiento en el
registro del temporizador TMR2. Para invertir el estado lgico de los pines del puerto se utiliza
la funcin Reemplazar, que normalmente no pertenece al lenguaje C estndar.

CI

G
4  4 /1  0 
Este ejemplo muestra cmo NO se debe utilizar el temporizador perro-guardin. Un comando
utilizado para reiniciar este temporizador se omite a propsito en el bucle del programa
principal, lo que habilita al temporizador perro guardin ganar la batalla del tiempo y reiniciar
al microcontrolador. Por consiguiente, el microcontrolador se va a reiniciar sin parar, lo que
indicar el parpadeo de los LEDs del puerto PORTB.


$ 

 (
+ # +  )  H(  
 (  ( *  ' 4
 X8; 6S 7
 %&='# $
  ( 
 '     ' 4
 X8;
 +#< 4 ,   
 * ( H0/;O
# < ;
( ( ' (
 ' H0/;O (  *  (
(
'
5 ; '
 

 #
 +#< 4 , 
 ' H0/;O

   

 O     + '* ( 
 ) (   
 ' 4
 X8;        

,

Para que este ejemplo funcione apropiadamente, es necesario habilitar al temporizador perroguardin al seleccionar la opcin Tools/mE Programmer/Watchdog Timer - Enabled.

CJ

H

9 cc 1   V ? 


Este ejemplo muestra el uso del mdulo CCP1 en modo PWM. Para hacer las cosas ms
interesantes, la duracin de los pulsos en la salida P1A (PORTC,2) se puede cambiar por
medio de los botones de presin simblicamente denominados OSCURO y CLARO. La
duracin ajustada se visualiza como una combinacin binaria en el puerto PORTB. El
funcionamiento de este mdulo est bajo el control de las funciones pertenecientes a la librera
especializada PWM. Aqu se utilizan las tres de ellas:

1. ? O  tiene el prototipo:  8  


9
El parmetro freq ajusta la frecuencia de la seal PWM expresada en hercios. En
este ejemplo equivale a 5kHz.
2. ? O  tiene el prototipo:  8 
3. ? OO5 tiene el prototipo:  8
'5|  
 5
El parmetro duty_ratio ajusta la duracin de pulsos en una secuencia de pulsos.
La librera PWM tambin contiene la funcin PWM_Stop utilizada para deshabilitar este modo.
Su prototipo es:  8 

$ 

8   (   ( <
<?<  F
<
 ?< 

|   
 
|   
  


   (
  & ;
( ( ' (
 +# (  * 
*  (
  &;
 +# +(
  
 ' H0/;"
#  ;
( ( ' (
 ' H0/;" (  *  
(
 +#< +(
  
 ' H0/;O
# < ;
( ( ' (
 ' H0/;O (  *  (
(
 +#% +(
  
 ' H0/;$
# % ;
( ( ' (
 ' H0/;$ (  *

  (
(
 =   %  4 D
 D
  HX9 62Y47
,

 (
   

   ,   
    
<
<?<  

  
 /       <
 ?< 
 =  %   D
  HX9

( O    
<  +#!!! # ( '(   D  
  /"

       
     <
-
<  +#!!! # ( '(   D  
  /"

 
    
     <
-


51
 ( #
<
<?<  -
 <
 ?<   ( * (
 = 
'5
  ?(     
HX9F

  

  @
    
 +#<
  
 -  ( 4   
' H0/;O
,
'
5 ; '
 

 #

,
,

Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes libreras
en la ventana Library Manager antes de compilar el programa:

PWM
Button

CK
& 
I
4  3 .
El convertidor A/D del microcontrolador PIC16F887 se utiliza en este ejemplo. Hace falta decir
que todo es pan comido? Una seal analgica variable se aplica al pin AN2, mientras que el
resultado de la conversin de 10 bits se muestra en los puertos POTRB y PORTD (8 bits
menos significativos en el puerto PORTD y 2 bits ms significativos en el puerto PORTB). La
Tierra (GND) se utiliza como voltaje de referencia bajo Vref-, mientras que el voltaje de
referencia alto se aplica al pin AN3. Esto habilita que la escala de medicin se estire y encoja.
IEn otras palabras, el convertidor A/D siempre genera un resultado binario de 10 bits, lo que
10

significa que reconoce 1024 niveles de voltaje en total (2 =1024). La diferencia entre dos
niveles de voltaje no es siempre la misma. Cunto menor sea la diferencia entre Vref+ y Vref-,
tanto menor ser la diferencia entre dos de 1024 niveles. Como hemos visto, el convertidor A/D
es capaz de detectar pequeos cambios de voltaje.

$ 

|   



 (
  & % H ( "3 - "3 (  *   D* (
#  44 ;
( ( ' (
 ' H0/;" (  *

  
(
  &; >(
!( ' ( (  * 
*  (
# < 4 H (
 ' H0/;OF /O - /O

(  *


  (
(
# ' ;
( ( ' (
 H0/;8 (  *  (
(
'%+ 4  , ?
   ( 
  '  /"

 (



'%
 /( 

  ( D "8 ( ' 
  '<(
 +#'

 I  ( ( ( *   ( (   ' H0/;8
 +#<



   ( !( ( *   ( (   (  ( /O

- /O

, O    
,

Para que este ejemplo funcione apropiadamente, es necesario marcar la librera ADC en la
ventana Library Manager antes de compilar el programa:

ADC

CL

J
4    

 
Este ejemplo muestra cmo escribir y leer la memoria EEPROM incorporada. El programa
funciona de la siguiente manera. El bucle principal lee constantemente el contenido de
localidad de la memoria EEPROM en la direccin 5 (decimal). Luego el programa entra en el
bucle infinito en el que el puerto PORTB se incrementa y se comprueba el estado de entradas
del puerto PORTA.2. En el momento de presionar el botn denominado MEMO, un nmero
almacenado en el puerto PORTB ser guardado en la memoria EEPROM, directamente ledo y
visualizado en el puerto PORTD en forma binaria.


$ 

 ((
  & ;
( ( ' (
 +# (  * 
*  (
  &;
 +#< ,   
 ' H0/;O
# < ;
( ( ' (
 ' H0/;O (  *


  (
(
 +#' ,   
 ' H0/;O 
# ' ;
( ( ' (
 ' H0/;8 (  *

  (
(
#  44 ;
( ( ' (
 ' H0/;" (  *

  
(
 +#' + 
 >    ++H/09  
 D 

 (
 +#< +#<  %   ' H0/;O  
'
5 ; '
 

 #


 +#4
 + =
! +#< # ( ' (  D 9+90F *
  ' H0/;O




 +#' + 
 > 
 (  


 (
 +#4 V
(  (   (   D (P ' (

,
,
 O    
,

Para comprobar el funcionamiento de este circuito, basta con pulsar el botn MEMO y apagar
el dispositivo. Despus de reiniciar el dispositivo, el programa visualizar el valor guardado en
el puerto PORTD. Acurdese de que en el momento de escribir, el valor fue visualizado en el
puerto PORTB.
Para que este ejemplo funcione apropiadamente, es necesario marcar la librera EEPROM en
la ventana Library Manager antes de compilar el programa:

EEPROM

C

K
c     M1
$ A9 
En este ejemplo el microcontrolador funciona como un contador de dos dgitos. La variable i se
incrementa (suficiente lentamente para ser visible) y su valor se visualiza en un visualizador de
dos dgitos LED (99-0). El punto es habilitar una conversin de un nmero binario en un
decimal y partirlo en dos dgitos (en decenas y unidades). Como los segmentos del visualizador
LED se conectan en paralelo, es necesario asegurar que alternen rpidamente para tener una
impresin de que emiten la luz simultneamente (multiplexin por divisin en tiempo).

En este ejemplo, el temporizador TMR0 est encargado de la multiplexin por divisin en


tiempo, mientras que la funcin mask convierte un nmero binario a formato decimal.


$ 

|   |    
|    !!!!

 
(
 (
 +# "'* (  ( 4
(
 +#' $   !(  '  ( 4 

(   


 ' H0/;8


 +# + 
   ( 4
 ' ( 

( 6>#87
 
,(
 +# "'* (  ( 4
(
 +#' $   !(  '  ( 4
 (   


 ' H0/;8

 +# + 
   ( 4
 ' (
 ( 69#87
 
,

#  /    
 ;9/0
 #%+   O  ;%EF ;%+
,

 (
+ # +  ) 3 "?(  ' 4
 ;9/
# 
 #%+   8(  ( ' ( H+%+F%3;+F/O%+F;%+
 +# "'* (  ( 4
(
#  ;
( ( ' (
 ' H0/;" (  *

  (
(
 +#' "'* 
( ( (*(
  ( 4

# ' ;
( ( ' (
 ' H0/;8 (  *

  (
(
 (
 O ( $
   

 H'  !(  '  ( 4 

(
 2
 H'  !(  '  ( 4
 (
'
5
,
, O    
,

N
$ 

|   |    (
 (
 |  4
 |  
 |  <
 |  4
  |  
 |  '
  |  '
 |  
3 |  4

 |  4


,
,

Para que este ejemplo funcione apropiadamente, es necesario incluir el archivo mask.c en el
proyecto (aparte del archivo example9.c) en la ventana Project Manager antes de compilar el
programa:
Example9.mcppi - Gources -  -B
mask.c

example9.c

C"

L
4 3 4 c
Este ejemplo muestra cmo utilizar un visualizador LCD alfanumrico. Las libreras de
funciones simplifican este programa, lo que significa que al final el esfuerzo para crear el
software vale la pena.
Un mensaje escrito en dos lneas aparece en el visualizador:
N
N N
cA 
Dos segundos ms tarde, el mensaje en la segunda lnea cambia, y se visualiza el voltaje
presente en la entrada del convertidor A/D (el pin RA2). Por ejemplo:
N
N N
3 1 *C(
En un dispositivo real se puede visualizar temperatura actual o algn otro valor medido en vez
de voltaje.

Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes libreras
en la ventana Library Manager antes de compilar el programa:

ADC
LCD

$ 

$ (
 D
  >$8
&%'< 
&%' <
&%'' <
&%''<
&%'' <
&%''<
&%''
 # < 
&%' '
 # <
&%'' '
 # <
&%'''
 # <
&%'' '
 # <
&%'''
 # <
E 
 (  (
 D
  >$8

8    (
|   -
|   

 .



 


 (
 #%+  ;
( ( ' (
( 
(
  &  H  /" (  *   
  D* 
#  
  &; >(
!( ' ( (  * 
*  (

&  %  4 D
  ( 4
 >$8
&%&%'% ++44 $
 >$8 6'*  (7
&%&%'%&  $
 >$8 6  >$87



 
 
 8    '  (?
&+!!
 +(     '  (?   '  )



&%'


 8    (*


 (?
&+!!
 8    '  (?

'%+  3 , ?
   '  ( D "8 ( ,$$
#  44 ;
( ( ' (
 ' H0/;" (  * 

(
'
5





 8      (?

(
'%
 $( D "8 H  /" (  

&+!!
 +(     ( 
   (*
 )
 

. $   ( 


     (

  2  d ,


- 2 +    ( 6 (
    (7





 ( 


&%-!! 3 - +(    ( 


   "#$%%
&%-% 
- 2 +  (
    (
&%-%  3 - +(    ( 
   "#$%%
- 2 + 
 (
    (
&%-%  3 - +(    ( 
   "#$%%
-  +  

(
    (
&%-%  3 - +(    ( 
   "#$%%
&%-% 
'
5
,

,

C*


c   9   /"*"
Este ejemplo muestra cmo utilizar el mdulo EUSART del microcontrolador. La conexin a
una PC se habilita por medio del estndar de comunicacin RS-232. El programa funciona de
la siguiente manera. Cada byte recibido por medio de la comunicacin serial se visualiza al
utilizar los LEDs conectados al puerto PORTB y despus se devuelve automticamente al
transmisor. Si ocurre un error en recepcin, se lo indicar al encender el diodo LED. La manera
ms fcil es comprobar el funcionamiento del dispositivo en la prctica al utilizar un programa
estndar de Windows denominado [yper Terminal.

$ 

|   

 (
 #  %  4  D
  :#"/;
 6I  (F (
 
( F  -  

 '

7

(
 #'
5( ( (   
 

 #
  

 #=
    !(
,
,
,

Para que este ejemplo funcione apropiadamente, es necesario marcar la librera UART en la
ventana Library Manager antes de compilar el programa:

UART

CC

"
 9         J"L 
W/=X
La medicin de temperatura es una de las tareas ms frecuentes realizadas por el
microcontrolador. En este ejemplo, se utiliza un sensor DS1820 para medir. Es capaz de medir
en el rango de 55 C a 125 C con exactitud de 0.5 C. Para transmitir los datos al
microcontrolador se utiliza un tipo especial de la comunicacin serial denominado 1-wire.
Debido al hecho de que estos sensores son simples de utilizar y de grandes capacidades, los
comandos utilizados para hacerlos funcionar y controlarlos tienen la forma de funciones
almacenadas en la librera One_Wire. En total son las siguientes tres funciones:

=O se utiliza para reiniciar el sensor;


=O se utiliza para recibir los datos del sensor; y
=O? se utiliza para enviar los comandos al sensor

Este ejemplo muestra la ventaja de utilizar libreras con las funciones listas para ser utilizadas.
Concretamente, no tiene que examinar la documentacin proporcionada por el fabricante para
utilizar el sensor. Basta con copiar alguna de estas funciones en el programa. Si le interesa
saber cmo se declaran, basta con pulsar sobre alguna de ellas y seleccione la opcin Help.

$ 

$ (
 D
  >$8
&%'< 
&%' <
&%'' <
&%''<
&%'' <
&%''<
&%''
 # < 
&%' '
 # <
&%'' '
 # <
&%'''
 # <
&%'' '
 # <
&%'''
 # <
E 
  (
 D
  >$8


|   #  +& # + 

 .



|  


'5#


|   
8
(


|    ; 4##  +& # + 3

 
8-

|   
 

 ' (  ' ( * 

8
 3(

/0

8

8
 
,

   '<K 

8-

8


 ; 4#

   '<K    (

8-
2

/0
8-
2  3


/0


/0
8-
2  3 + 
)* 

 (

/0
8-
  3 + 
)* 
 

(

   '<   -     ( *


 
8
OO  ; 4#

  4

 . 

   '<     (

/ 0
 2  3 + 
)* 
  (

/0
 2  3 + 
)* 
 (

/ 0
 2  3 + 
)* 

 (

/0
   3 + 
)* 
 

(

 , ( 4 '   >$8
&+!!

,

 (
  & $ * ( ' ( "3 
*  (
  &;
%+  8(  ( '
(
%+ 

&  %  4  >$8
&%&%'%&  O  >$8
&%&%'% ++44 "'*  (
&+!!
#




 , ( 4  ! 
 *
F &$& ' )*
(
&%-!!
( (  ( 4
( >$8  
( D
*(


  ( '  *

 (    * * " F  
  I  4
 
&%-! !%

   '  ' 
 (
  4  
 '
+8

 +# ! #\
   
 0K 
+8=
 +# !! %% +?   
 #2%H</09
+8=
 +# !!  +?   
 $03,+/;<;
'
5
+8

 +# !

+8=
 +# !! %% +?   
 #2%H</09
+8=
 +# !! <  +?   
 /+"8<#$/";$YH"8

+8
 +# !

+8
 +# !OO3 



 E -  ( 4  ( 


   >$8
'5#




'
5
,
,

Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes libreras
en la ventana Library Manager antes de compilar el programa:

One_Wire
LCD

CG
& 
*
'  9    $2M     
Las seales de audio se utilizan con frecuencia cuando se necesita llamar la atencin de
usuario, confirmar que alguno de los botones se ha pulsado, avisar que se ha llegado hasta los
valores mnimos o mximos etc. Pueden ser una simple seal de pitido as como melodas de
una duracin ms larga o ms corta. En este ejemplo se muestra la generacin de sonido por
medio de funciones que pertenecen a la librera Sound.


Adems de estas funciones, la funcin Button que pertenece a la misma librera se utiliza para
probar los botones de presin.

$ 

#
(
  5 ! E   

Y4F
 D  (

,

#
(
  5 3! E   

IY4F
 D  (

,

#
(
  53 ! E    IY4F
 D  (
,


5( $'   
)

 
#
#
#
#

#
#
#
#

#
#
#


#
#
#
#

#
#
#

#
#
#
#
#

,

#
( ; "
  533!
,

#
%( ; $
  5 !
,

#
( ; +
  53!
,


5( $'   
)

 
|   

 
(
#
#
%#

,
,

 (
  & ;
( ( ' (
 +# (
*  (
  &;
# < 4 H ( /O/O (  *  
(

 /O (  *  (

   +#<!
  5!

(
<  +#<!!! /O * ;
#

 +#< 3 +('  ( (   D
<  +#<! !! /O

* ;

#

 +#<  +('  ( (   D
<  +#<!!! /O *  
) 

5
 +#<  +('  ( (   D
<  +#<! !! /O *  
) 


5
 +#<  +('  ( (   D
,
,

Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes libreras
en la ventana Library Manager antes de compilar el programa:

Button
Sound

CH

C
4 3 4 c108 
Un LCD grfico (GLCD) proporciona un mtodo avanzado para visualizar mensajes. Mientras
que un LCD de caracteres puede visualizar slo caracteres alfanumricos, el LCD grfico
puede visualizar los mensajes en forma de dibujos y mapas de bits. El LCD grfico utilizado
con ms frecuencia tiene una resolucin de pantalla de 128x64 pxeles. El contraste de un
GLCD se puede ajustar por medio del potencimetro P1.

En este ejemplo el GLCD visualiza una secuencia de imgenes, de las que un mapa de bits
representa un camin almacenado en otro archivo denominado truck_bmp.c. Para habilitar que
este programa funcione apropiadamente, usted debe aadir este archivo como archivo fuente a
su proyecto.

You might also like