Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduccin.
Los microcontroladores son ordenadores digitales integrados en un chip que
cuentan con un microprocesador o unidad de procesamiento central (CPU), una
memoria para almacenar el programa, una memoria para almacenar datos y
puertos de entrada/salida. A diferencia de los microprocesadores de propsito
general, como los que se usan en los ordenadores PC, los microcontroladores
son unidades autosuficientes y ms econmicas. El funcionamiento de los
microcontroladores est determinado por el programa almacenado en su
memoria. Este puede escribirse en distintos leguajes de programacin. Adems,
la mayora de los microcontroladores actuales pueden reprogramarse repetidas
veces. Por las caractersticas mencionadas y su alta flexibilidad, los
microcontroladores son ampliamente utilizados como el cerebro de una gran
variedad de sistemas embebidos que controlan mquinas, componentes de
sistemas complejos, como aplicaciones industriales de automatizacin y
robtica, domtica, equipos mdicos, sistemas aeroespaciales, e incluso
dispositivos de la vida diaria como automviles, hornos de microondas,
telfonos y televisores
Esquema
de
pines
Programador
El circuito programador
JDM PIC Programmer 2 (JDM2) es una interfaz de hardware muy simple que
permite programar al microcontrolador PIC16F84 con muy pocos componentes,
ya que se alimenta directamente del puerto serie RS-232 del PC sin requerir
una fuente de alimentacin externa.
Las resistencias requeridas, tanto R1 (1k5 Ohmios) como R2 (10kOhmios),
pueden ser de baja potencia (0.25W). Los diodos D1, D2, D5, D6 son diodos
rectifcadores cualquiera (Zener), aunque se recomienda el 1N4148. El diodo D3
debe ser un diodo Zener de 6.2v como el BZV55C6V2 y debe colocarse en
serie con el led como se muestra en el esquemtico. El diodo Zener D3 y el led
pueden reemplazarse por un unico diodo Zener de 8.2 V. El diodo D4 tambin
es un diodo Zener, pero de 5.1v como el BZV55C5V1. Tanto el condensador C1
(100 microfaradios, 16v) como el condensador C2 (22 microfaradios, 16v)
deben ser electrolticos. El condensador C2 tambin puede reemplazarse por un
condensador de 100 microfaradios, 16v como C1.
Ejemplo
de
programacin
-- Ejemplo 1
-- Inclusiones
include 16f84_4
include jlib
-- Configuracion
pin_b7_direction = output
-- Variables
var bit led is pin_b7
led = high
-- Loop Principal
forever loop
-- Cambio de estado del pin
led = ! led
-- Retardo
delay_1ms(250)
end loop
Compilacin
JAL
del
programa
COM ENTARIOS
Para comentar una lnea se escriben dos guiones y un espacio delante de cada
lnea. Ya que el comentario no tiene sintaxis de fin no es posible comentar
muchas lneas de golpe como con otros lenguajes de programacIN.
-- ESTO ES UN COMENTARIO
if ( variable == true ) then
pin_a3 = false
bajo nivel
pin_a2 = variable2 and true
valor de la (variable2 x 1)
end if
VARIABLES
De tipo BIT: Son las que pueden tomar un valor 'Verdadero' o 'Falso' o bien,
nivel alto o nivel bajo. Con un ejemplo se ver ms claro:
-- DECLARACIN E INICIALIZACIN DE LA VARIABLE
var bit a = high
pin_a0 = x
De tipo BYTE: Son las que pueden tomar un valor entre 0 y 254
-- DECLARACIN E INICIALIZACIN DE LA VARIABLE
var byte n = 99, m = 20
if n > m then
pin_a4 = high
end if
-- BUCLE FOR DE 'm' REPETICIONES
for m loop
n = n -1
if n == 92 then
pin_a4 = low
delay_10ms(50) -- RETRASO DE 500milisegundos
-OBTENDRAMOS
EL
MISMO
ESCRIBIENDO: delay_500ms
end if
RESULTADO
if n < 89 then
pin_a0 = low
pin_a1 = high
delay_20ms
end if
end loop
OPERADORES
== igualdad
> Mayor que
< Menor que
=< Menor o igual que
>= Mayor o igual que
! o != Distinto de / Negado
LA
CONDICIN
INCLUDE
Es muy habitual en casi todos los programas incluir ficheros en los que ya
vienen definidas muchas variables, configuraciones, alias y subprogramas
especialmente adaptados al microcontrolador que vamos a programar. Por
ejemplo, si queremos programar un PIC12f675 deberemos incluir lo siguiente:
include f675_4i -- CONFIGURACIN DE PUERTOS Y DISPOSITIVO, VARIABLES
Y SUBPROGRAMAS ESPECIALES
include jlib
-- CONSTANTES Y VARIABLES ESTANDAR
SUBPROGRAM AS
Desde cualquier parte del cdigo podremos llamar a un subprograma o funcin
que hayamos creado:
procedure SubPrograma is
var byte a
a = 5
var byte b
b = a
end procedure
FUNCIONES
Es muy parecido a un subprograma, solo se diferencia en que puede devolver
valores despus de haberlos procesado
function Calcular ( byte in x ) return bit is
if x == 5 then
return true
else
return false
end if
end function
CONFIGURACIONES
ESQUEM A
DEL
PIC
Este es el
esquema del PIC que vamos a programar. Os lo pongo para que veis qu
nombre tiene cada patilla y tambin para que veis de qu formas se pueden
configurar cada una de ellas. En el siguiente ejemplo de configuracin voy a
utilizar las patillas 2, 3, 5, 6 y 7 como salidas y la 4 como entrada
CONFIGURACIN
DEL
PI C
Ahora ya podemos configurar las patillas del PIC. Podemos hacerlo de dos
formas, as:
gpio_direction = all_output
gp3_direction = input
O as:
gp0_direction
gp1_direction
gp2_direction
gp3_direction
gp4_direction
gp5_direction
=
=
=
=
=
=
output
output
output
input
output
output
Una vez que hemos configurado las patillas podemos incluso asignarlas a
variables
var bit Boton is gp3
VARIABLE 'BOTON'
NOCIONES
EJEM PLO
DE
PROGRAM ACIN
-- ---------------------------------------------------------------------- CONFIGURACIONES
-- --------------------------------------------------------------------gpio_direction = all_output
gp3_direction = input
-----
gp0_direction
gp1_direction
gp2_direction
gp3_direction
=
=
=
=
output
output
output
input
-- gp4_direction = output
-- gp5_direction = output
-- ---------------------------------------------------------------------- VARIABLES
-- --------------------------------------------------------------------var bit boton is gp3
var byte tiempo = 5
-- ---------------------------------------------------------------------- PROCEDIMIENTOS
-- --------------------------------------------------------------------procedure comprobar_boton is
if boton == low then
tiempo = tiempo + 1
if ( tiempo == 14 ) then
-- REINICIAR VARIABLE A 1
tiempo = 1
-- APAGAR TODOS LOS LEDs COMO SEAL PARA EL USUARIO
gp0 = low
gp1 = low
gp2 = low
gp4 = low
gp5 = low
end if
-- ESPERAR A QUE LA PATILLA GP3 CAMBIE DE ESTADO
while ! boton loop
end loop
end if
-- ESPERAR 'TIEMPO' x 5milisegundos
delay_5ms( tiempo )
end procedure
-- ---------------------------------------------------------------------- PROGRAMA DE INICIO
-- ---------------------------------------------------------------------- ENCENDER TODOS LOS LEDS
gp0 = high
gp1 = high
gp2 = high
gp4 = high
gp5 = high
-- ESPERAR 400milisegundos
delay_200ms (2)
-- APAGAR TODOS LOS LEDS
gp0 = low
gp1 = low
gp2 = low
gp4 = low
gp5 = low
-- ---------------------------------------------------------------------- MAIN PROGRAM
-- --------------------------------------------------------------------forever loop
-- 1 0 0 0 0 = LED 1
gp0 = high
gp1 = low
gp2 = low
gp4 = low
gp5 = low
comprobar_boton
-- 0 1 0 0 0 = LED 2
gp0 = low
gp1 = high
gp2 = low
gp4 = low
gp5 = low
comprobar_boton
-- 0 0 1 0 0 = LED 3
gp0 = low
gp1 = low
gp2 = high
gp4 = low
gp5 = low
comprobar_boton
-- 0 0 0 1 0 = LED 4
gp0 = low
gp1 = low
gp2 = low
gp4 = high
gp5 = low
comprobar_boton
-- 0 0 0 0 1 = LED 5
gp0 = low
gp1 = low
gp2 = low
gp4 = low
gp5 = high
comprobar_boton
end loop