Practica #1 (Prender y Apagar un LED) -Antes de empezar a escribir el programa debemos crear un archivo nuevo. 1. Todo programa inicia con la misma instrucción, #include <xxxxxx.h>, esta instrucción es la que nos indica que Microcontrolador vamos a utilizar y siempre debe ir seguido de la extensión .h; en este programa usaremos el Microcontrolador 18f2550 por lo tanto la instrucción quedaría así: #include <18f2550.h>. Ya tenemos nuestra primera instrucción. 2. Ahora debemos indicarle al programa el valor del cristal que vamos a utilizar esto se hace en la siguiente instrucción: #use delay(clock=xxxxxx), en nuestro caso el cristal será de 8Mhz por lo tanto la instrucción queda de la siguiente manera: #use delay(clock=8000000), ya tenemos dos instrucciones. #include <18f2550.h> #use delay(clock=8000000) 3. Después de escoger el micro y el valor del cristal empezamos con la función principal, se denomina función principal porque es el inicio de todo programa; al iniciar una rutina el programa siempre va a buscar esta función y a empezar desde la primera instrucción que este contenga, esta función se escribe de la siguiente manera: void main (void), y lo que se escriba dentro de esta función tiene que ir dentro de unos corchetes { }, mas adelante se explicara un ejemplo. #include <18f2550.h> #use delay(clock=8000000) void main (void) { } 4. Ya todo esta listo ahora encendamos el led; podemos escoger cualquier puerto y cualquier pin, nosotros usaremos el puerto B y el pin B0, usamos la instrucción output_high(pin_b0); , esta instrucción nos enciende el led; output significa salida, high significa alto, y pin_b0 es el pin que vamos a utilizar; uniéndola significa que a la salida del pin_b0 hay un alto (voltaje positivo), que permite encender el led. #include <18f2550.h> #use delay(clock=8000000) void main (void) { output_high(pin_b0); } -Pero antes de apagar el led debemos darle un retardo de encendido, un retardo se escribe de la siguiente forma: delay_ms(xxxx); , un retardo se puede dar en milisegundos (ms) o en microsegundos(us), nosotros colocaremos el retardo de un segundo: delay_ms(1000); . #include <18f2550.h> #use delay(clock=8000000) void main (void) { output_high(pin_b0); delay_ms(1000); }
-Ahora si apaguemos el led se hace de la misma forma en que lo encendimos solo cambia una palabra en ves de indicarle un alto le indicamos un bajo: outout_low(pin_b0); , ahora a la salida del pin_b0 hay un bajo (un voltaje igual a cero), con esto nuestro led se apago, y enseguida le damos otro retardo pero esta ves es de apagado. #include <18f2550.h> #use delay(clock=8000000) void main (void) { output_high(pin_b0); delay_ms(1000); outout_low(pin_b0); delay_ms(1000); } -Y ese es nuestro programa de encender y apagar un led, pero tenemos un problema, el led solo se va a prender y apagar una sola vez; debemos darle la orden al micro para que siempre haga esta rutina indefinidamente, esto lo logramos de la siguiente manera: 5. Para que nuestro micro no se desborde y se pierda le agregamos la siguiente instrucción para indicarle al micro que el programa nunca se acaba y que siempre este trabajando: while(true), esta instrucción hace que lo que esta dentro de ella siempre se va a hacer hasta que la condición sea falsa, pero como nosotros le dimos la orden de que la condición es verdadera siempre me va a repetir la rutina de prender y apagar el led; y lo que se escriba dentro de este while también debe ir dentro de unos corchetes { }. Ya solucionamos nuestro problema y el programa queda así: #include <18f2550.h> #use delay(clock=8000000) void main (void) { while(true) { output_high(pin_b0); delay_ms(1000); output_low(pin_b0); delay_ms(1000); } } -Este ya es nuestro programa final. *Nota: -Una vez terminado el programa se recomienda presionar la tecla f9 para comprobar que este no contenga errores, si el programa contiene algún error aparecerá un aviso de color rojo en la parte inferior de la pantalla indicando donde se encuentra el error.