Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microcontroladores Pic II
Microcontroladores Pic II
pic
II PARTE
COMPILADOR CCS
CODIGO
COMPILADOR
.LST
.sta .tre
.HEX
.PJT
.SYM
.err
.cof
Programador
DEBUG
Simulado en software
O real en Hardware
Arquitectura Básica de un
Programa
Declaraciones Globales
Declaración de funciones
Función principal
Main()
{
variables locales;
bloque de sentencias;
llamadas a funciones;
}
Definición de Funciones
Funcion_1 {
variables locales de la función;
bloque de sentencias;
llamadas a otra/s funcione/s;
}
VARIABLES
Se utilizan para nombrar posiciones de memoria RAM; se
deben declarar obligatoriamente antes de utilizarlo, para ello
se debe utilizar el nombre y el tipo de dato que se manejara,
se define de la siguiente manera.
De BITs
CONDICIONAL IF-ELSE
If(condición) If(x==25)
<sentencias>; X=0;
else Else
x=x+1;
<sentencias>;
SINTAXIS EJEMPLO
CONDICIONAL IF-ELSE IF
Es usado para tomar múltiples decisiones
If(condicion1) if(x==1)
<instrucciones>; output_high(PIN_B0);
Else if(condicion2) then Else if(x==2)
<instrucciones>; output_high(PIN_B1);
Else Else
<instrucciones>; output_high(PIN_B2),
SINTAXIS EJEMPLO
LAZO WHILE
Se utiliza para repetir sentencias, la condición se evalua y la sentencia
Se ejecuta mientras la condición es verdadera, cuando es falso se sale
Del While
While(condición) While(x<20)
{ {
<sentencias>; Output_toggle(PIN_B0);
delay_ms(500);
}
X++;
}
SINTAXIS EJEMPLO
LAZO FOR
Esta sentencia permite realizar un bucle repetidamente en base a una
condición, la cual suele estar basada en el valor de un contador que
se actualiza después de cada ejecución del bucle.
SINTAXIS EJEMPLO
FUSES DEL PIC 16F84
Fuses del PIC 16F84A
OSC (Oscilador):
Es el modo de oscilación que va a usar el Pic.
Cada vez que el Pic recibe un pulso eléctrico del oscilador da un paso para ejecutar una instrucción (4
impulsos para completar una), por lo que podemos decir que es una señal que le recuerda al Pic que
tiene que seguir avanzando.
para frecuencias no mayores de 4 Mhz. La condición básica importante para que este oscilador
funcione es que los condensadores C1 y C2 deberán ser iguales.
LP (Low Power)
para frecuencias entre 32 y 200 Khz. Este oscilador es igual que el anterior, con la diferencia de que el
PIC trabaja de una manera distinta. Este modo está destinado para trabajar con un cristal de menor
frecuencia, que, como consecuencia, hará que el PIC consuma menos corriente.
HS (High Speed) para frecuencias comprendidas entre 4 y 20 MHz.
Habremos de usar esta configuración cuando usemos cristales mayores de 4 MHz. La conexión es la
misma que la de un cristal normal.
RC (Resistor/Capacitor) para frecuencias no mayores de 5.5 Mhz. Por último tenemos el oscilador tipo
RC que es el más económico por que tan solo se utiliza un condensador no polarizado y una
resistencia. Este tipo de oscilador proporciona una estabilidad mediocre en la frecuencia generada y
podrá ser utilizado para aquellos proyectos que no requieran precisión.
Fuses del PIC 16F84A
WDT
El famoso "perro guardián" del PIC se configura aquí.
Esta es una capacidad del microcontrolador
de autorresetearse. Es muy útil ante descuidos de
programación, por ejemplo, si este se queda en un
bucle infinito, esta propiedad lo sacará de él.
Reseteándolo.
Su funcionamiento es sumamente sencillo. Simplemente
es un registro que debemos borrar cada cierto tiempo.
Si pasa un tiempo X (entre 2.5ms y 2.5 seg) y ese
registro no ha sido borrado, el PIC se resetea.
Fuses del PIC 16F84A
PWRT
Si activamos este fuse, lo que conseguimos es que se
genere un retardo en la inicialización del
microcontrolador. Esto se usa para que la tensión se
estabilice, por lo que se recomienda su uso.
CP
Activando este fuse tendremos la garantía de que el
código que escribamos en el PIC no pueda ser leído por
otra persona, para que no nos lo copien, modifiquen,
etc. (Code Protection). Esto no impide que el PIC
funcione como siempre, ni que no se pueda sobrescribir
su contenido. Lo único que nos impide es leerlo.
COMENTARIOS
La finalidad de los comentarios es facilitar la comprension de las
distintas sentencias del programa.
No afecta la compilación; se puede utilizar en cualquier lugar del
programa y con dos formatos.
/* y */ se utiliza al inicio y al final del comentario, este puede abarcar varias
lineas; con /* indicamos el comienzo del comentario y con */ indicamos el fin del
comentario.
/* este comentario
puede abarcar
varias lineas * /
DIRECTIVAS DE PREPROCESADOR
Las directivas de preprocesador comienzan con el simbolo # y continuan con un
comando especifico
#device fuses options /*permite definir la palabra configuracion para programar un PIC */
Ejemplo:#include<16f84.h>
Ejemplo: set_tris_a(0xff) // configura todos los pines del puerto a como entrada
Funciones Asociados a un terminal o
pin
El parametro PIN se define en un archivo
include(16f84.h)
PIN_Xn: X PUERTO
N Numero de PIN
Ouput_low(PIN); // Setea a 0 PIN
Output_high(PIN); //Setea a 1 PIN
Ouput_bit(PIN,VALOR); //Setea PIN=VALOR
Ouput_toggle(PIN); //Invierte el estado de PIN
Valor=Input(PIN); //Lee el valor de PIN
DIRECTIVAS TIPO #USE *_IO
USE FAST_IO(PUERTO).-
Ahorro de memoria.