Compilador C para Microcontroladores - PIC
y Scenix
Última actualización:
29 de Enero de 2.000
Ejemplo nº 1 - Contar en
binario hasta 255 en los LEDs del Módulo de Aprendizaje
//
// Nombre Fichero: Prog1.c
// 29 de Enero del 2.000
// Toma en bucle infinito valores de 0 a 255
// y los presenta en el puerto B del microcontrolador
// En nuestro caso enciende la barra
de diodoes LEDs
// del Módulo de Aprendizaje
char bValorSalida; // Definimos una variable global tipo
byte,
// utilizada para pasar datos a los 8 bits del puerto B
//
// Genera un Retardo, este es dependiente del microcontrolador
//
// Entrada: Nada
// Salida: Nada
//
void subRetardo( void )
{
char bContador1; // Definimos una variable local de tipo byte, para contador
char bContador2; // Definimos una variable local de tipo byte, para contador
// Damos el valor 0 a la variable bContador1
bContador1 = 0;
// Iniciamos un bucle que termina cuando la variable bContador1 valga 150
while( bContador1 < 150 )
{
// Incrementamos en una unidad el contenido de bContador1.
// Es igual que en BASIC hacer bContador1 = bContador1 + 1
bContador1++;
// Damos el valor 0 a la variable bContador2
bContador2 = 0;
// Iniciamos un bucle que termina cuando la variable bContador2 valga 200
// En esta ocasión la variable bContador2 se incrementa en una unidad en el
// mismo lugar de la condición
while( bContador2++ < 200 )
{
// Ejecutamos un ciclo de inactividad
nop();
}
}
}
//
// Función principal. Representa la primera función que se
// ejecuta al iniciar el microcontrolador
//
main()
{
// Forzamos la deshabilitación de las interrupciones del microcontrolador
disable_interrupt( GIE );
// Apuntamos al segundo banco de registros
set_bit( STATUS, RP0 );
// Ajustamos las líneas del puerto B como salida
set_tris_b( 0 );
// Apunstamos el primer banco de registros
clear_bit( STATUS, RP0 );
// Iniciamos un bucle infinito
while( 1 )
{
// Sacamos un valor de 8 bits a las líneas del puerto B
output_port_b( bValorSalida );
// Generamos un retardo
subRetardo();
// Incrementamos en una unidad el contenido de bValorSalida. Es lo mismo que hacer
bValorSalida = bValorSalida + 1
bValorSalida++;