Repaso
La primera linea en cualquier programa siempre será la librería del microcontrolador.
#include <18f45k50.h>
La directiva “include” permite agregar la librería del microcontrolador. Esta librería incluirá todos los registros, funciones y variables para utilizar el microcontrolador.
Posteriormente es necesario especificar el tipo de fuente del reloj y la frecuencia del mismo. La directiva “use delay” especifica cual será la fuente del reloj para el CPU del microcontrolador y la frecuencia que tendrá.
#use delay(internal = 48Mhz)
La G-One esta configurada para usar como fuente de reloj el oscilador interno a una frecuencia de 48 MHz.
La G-One emplea nuestro bootloader. El bootloader es un programa guardado en la memoria del microcontrolador que sirve para guardar otros programas en la misma memoria sin necesidad de tener un programador.
El bootloader se encuentra guardado desde el espacio de memoria 0x0000 hasta el espacio de memoria 0x1FFF. Despues del bootloader es necesario reubicar los vectores de interrupciones y reset del programa que se va a cargar. La directiva “build” permite reubicar los vectores de reset y de interrupciones de nuestro programa a las ubicaciones 0x2000 y 0x2008 correspondientemente.
#build(reset = 0x2000, interrupt = 0x2008)
#org 0x0000, 0x1FFF{}
la directiva “org” reserva el espacio de memoria desde 0x0000 hasta 0x1FFF. En este espacio de memoria se encuentra guardado el bootloader y debe evitarse sobrescribir en este espacio de memoria.
Estas cuatro directivas son de suma importancia para el correcto funcionamiento del programa, siempre se escribirán y siempre que se quiera realizar un programa utilizando nuestra tarjeta de desarrollo G-One.
Selecciona la opción correcta.
Correcto. La función “main” es el punto de entrada del programa. En esta función se encuentran todas las líneas que se deben ejecutar al iniciar el programa.
Incorrecto.
Analiza la siguiente instrucción y responde.
while(true){
}
Recuerda que “while” repite todo un bloque de código siempre que una condición se cumpla. La condición se da entre los paréntesis, en este caso la condición es “true”, por lo que la condición siempre se cumple y se genera un bucle infinito. También puede tomar el valor de “1” en lugar de “true” y se tendrá el mismo resultado.
while(true){
}
while(1){
}
Selecciona la respuesta correcta.
Puedes girar la tarjeta para aprender mas.
Puedes ayudarte girando la tarjeta.
Código
Parpadeo Led
#include <18f45k50.h>
#use delay(internal = 48Mhz)
#build(reset = 0x2000, interrupt = 0x2008)
#org 0x0000, 0x1FFF{}
void main(){
set_tris_e(0b00000000);
while (1){
output_low(PIN_E1);
delay_ms(500);
output_high(PIN_E1);
delay_ms(500);
}
}
Parpadeo Doble
#include <18f45k50.h>
#use delay(internal=48Mhz)
#build(reset = 0x2000, interrupt = 0x2008)
#org 0x0000, 0x1FFF{}
void main(){
set_tris_e(0x00);
set_tris_d(0x00);
output_e(0b00000000);
output_d(0b00000001);
while(1){
output_toggle(PIN_E1);
output_toggle(PIN_D0);
delay_ms(500);
}
}
Secuencia Led
#include <18f45k50.h>
#use delay(internal=48Mhz)
#build(reset = 0x2000, interrupt = 0x2008)
#org 0x0000, 0x1FFF{}
void main(){
set_tris_e(0x00);
set_tris_d(0x00);
output_e(0x00);
output_d(0x00);
while(1){
output_toggle(PIN_E1);
delay_ms(50);
output_toggle(PIN_D0);
delay_ms(50);
output_toggle(PIN_D2);
delay_ms(50);
output_toggle(PIN_D4);
delay_ms(50);
output_toggle(PIN_D6);
delay_ms(50);
}
}