Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ventajas
EL LENGUAJE C
Ventajas:
- Eficiencia: Es ms rpido y eficiente que otros lenguajes de alto nivel usados tambin para
programar microcontroladores y su uso est altamente difundido en aplicaciones
profesionales. Con compiladores modernos puede llegar a ser tan rpido como el ensamblador
dependiendo de la habilidad y los recursos del programador.
Desventajas:
- El cdigo escrito en C ocupa ms memoria que el escrito en ensamblador.
Los programas al compilarlos pueden resultar un poco extensos y pesados por ello debe
tenerse en cuenta la capacidad de memoria de programa del PIC a utilizar.
- Control:Con este lenguaje no se puede controlar del todo los tiempos y los registros bit a bit.
Un dato importante de este compilador, es que abstrae del hardware, y con ello sacas muy
rpido tus proyectos, no tienes que conocer tan finamente al microcontrolador que programas
y sus "modulos", ademas trae una cantidad de libreras y programas de ejemplos,esto acorta
increblemente los tiempos de aprendizaje y desarrollo de los proyectos.
12. Una vez definidas estas variables se pueden configurar y controlar los puertos.
13. ?
14. Tambin podemos trabajar bit a bit con los registros o variables definidas previamente.
15. ?
16. o podemos definir todos los bits del puerto de una vez con:
17. ?
18.
2.- Utilizando las directivas especificas del compilador.
20.
Las funciones para trabajar bit a bit son:
21. ?
1output_low(pin*) //Pin a 0.
2output_high(pin*) //Pin a 1
3output_bit(pin*,valor) //Pin al valor especificado
4input(pin*); //Lee el valor del pin.
22.
23. Estructuras de Control Repetitivas
24.
25. Las estructuras de control repetitivas o iterativas, tambin conocidas como bucles se
pueden usar cuando se quiere repetir cierta parte del cdigo n veces, otras permiten
repetir un segmento de cdigo cuando se cumplen ciertas condiciones.
Bucle WHILE
Este bucle ejecuta una instruccin o un conjunto de instrucciones mientras la
condicin se cumpla, generalmente a la condicin se le coloca el valor true, para que
siempre se repita.
26. ?
1while(condicin)
2 {
3 segmento de cdigo a repetir
4 }
1for(int i=0;i<10;i++)
2 {
3 bloque;
4 }
29.
30. Configuracin de los FUSES
31.
La directiva FUSES establece los distintos bits de configuracin del micro, los mismos
que puedes seleccionar en tu software de grabacin.
Cada micro tiene los suyos, y los podrs encontrar en el apartado "Configuration Word"
del correspondiente datasheet, En CCS puedes encontrar los fuses correspondientes al
microcontrolador que estamos usando en el men VIEW > CONFIG BITS.
32.
33.
Nos aparecer una lista con todos los fuses de microcontrolador que seleccionamos.
34.
35.
36. De esta lista los mas importantes son:
37.
WDT (Watchdog Timer):
38. ?
1#fuses WDT
2#fuses NOWDT
39. El famoso "perro guardian" del pic. Esta es una capacidad del pic de autoresetearse.
Es muy til, por ejemplo si un Pic, por un descuido de programacin, se queda en un
bucle infinito, esta "utilidad" lo sacar de l. Su funcionamiento es sumamente sencillo.
Simplemente es un registro que debemos borrar cada cierto tiempo. Si transcurrido un
cierto tiempo el registro no ha sido borrado el pic se resetea.
OSC (Oscilador):
40. ?
1#fuses HS
2#fuses XT
41. Es el modo de oscilacin que va a usar el Pic, los mas usados son:
XT: viene de XTAL (cristal). Este modo de funcionamiento implica que tendremos que
disponer de un cristal de cuarzo externo al Pic y dos condensadores.
HS: Para cuando necesitemos aplicaciones de "alta velocidad", mas de 8Mhz. Se basa
tambin en un cristal de cuarzo, como el XT.
Ahora ya tenemos los conocimientos bsicos necesarios para realizar nuestro primero
proyecto el hola mundo de la electrnica encender y apagar un LED, vamos all.
46.
47. Como Incorporar una Pantalla LCD
48. En esta entrada aprenderemos a utilizar una pantalla LCD la mas comn es la 2x16
49.
50.
51. Esta es la manera de conectar la LCD generalmente usaremos 4 lineas para los datos
(D4-D7) los bits RS,RW , GND VDD y VEE pin al cual ira un potencimetro para regular
el contraste, ademas de los pines bk+ y bk- para el blackligth en las pantallas que traen
iluminacin LED de fondo.
52.
53.
54.
PROYECTO: Enviar un mensaje a una pantalla LCD conectada al puertoC de
microcontrolador.
CCS dispone de una librera para trabajar con pantallas LCD llamada lcd.h la cual
llamamos con la
instruccin: #include <lcd.c>
55.
56.
La abrimos como muestra la imagen y dentro encontramos los comandos necesarios
para controlarla:
57. ?
58.
El codigo queda como sigue:
59. ?
1 #include <16F886.h>
2 #FUSES NOWDT //No Watch Dog Timer
3 #use delay(crystal=20000000) //reloj de 20Mhz
4 #define LCD_DATA_PORT getenv("SFR:PORTC") //indicamos lcd
5 conectada a PuertoC
6 #include <lcd.c> //librera LCD viene con
7
el compilador
8
9
10
void main()
11{
12 lcd_init(); //inilicializar LCD
13
14 while(TRUE)
15 {
16 lcd_gotoxy(1,1); //ir a la linea 1 posicion 1
17 printf(lcd_putc,"LCD 16x2"); //mensaje en linea1
18 delay_ms(50); //retardo de 50ms
19 lcd_gotoxy(1,2); //ir a la linea 2 posicion 1
20 printf(lcd_putc,"hacermirobot"); //mensaje linea 2
delay_ms(50); //retardo de 50ms
}
}
60.
Montaje en PROTEUS
61.
62.
63.
64. El conversor Anlogo Digital ADC
65. Un poco de teora:
66.
67.
El microcontrolador PIC19F886 como la mayora de los microcontroladores de la gama
media cuenta un modulo conversor anlogo digital de 8 a 10 bits selecionables por el
programador.
68.
69.
71.
72. de este modo si la el valor ledo es 511 511*0.0048 nos da un voltaje de 2.49v.
73.
74.
75. Configuracin del ADC
76.
EN CCS para controlar el conversor ADC se debe hacer mediante las siguientes
instrucciones:
SETUP_ADC(mode):
Esta funcin configura el reloj del conversor, los parmetros que acepta son:
77. ?
1ADC_CLOCK_DIV_2
2ADC_CLOCK_DIV_8
3ADC_CLOCK_DIV_32
4ADC_CLOCK_INTERNAL
78.
SETUP_ADC_PORTS(value):
Esta funcin configura cuales pines del ADC sern analgicos y cuales digitales o
alguna
combinacin de ambos. Las constantes usadas son diferentes para cada chip. se debe
revisar el archivo .h, ejemplo.
79. ?
80.
SET_ADC_CHANNEL(channel:
Especifica el canal a utilizar por la funcin READ_ADC(). El nmero de canal empieza
en 0. Es preciso esperar un corto espacio de tiempo despus de cambiar el canal de
adquisicin, antes de que se puedan obtener lecturas de datos vlidos.Ejemplo:
81. ?
1set_adc_channel(2);
82.
83.
84.
Codigo CCS:
85. ?
#include <16F886.h>
#device adc=10 //10bits
1#fuses nowdt
2#use delay(clock=20000000)
3#define LCD_DATA_PORT getenv("SFR:PORTC") //lcd conectado al
4puerto C.
5#include <lcd.c>
6
7 void main()
8
{
9
10 int16 q;
11 float p;
12 setup_adc_ports(sAN0); //AN0 en otros
13microcontroladores.
14 setup_adc(adc_clock_internal); //reloj interno.
15 lcd_init(); //inicializar el lcd.
16
17 while(true)
18 {
19
set_adc_channel(0); //canal 0.
20
21
delay_us(20);
22 lcd_gotoxy(1,1);
23 q=read_adc();
24 p=(5.0*q)/1024.0;
25 printf(lcd_putc," ADC = %ld",q);
26 printf(lcd_putc,"\nVoltaje=%1.2fv",p);
}
}