TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Masterix en 17 de Agosto de 2006, 17:02:56
-
He aquí algunos programas que se realizaron en una clase de microcontroladores usando el PICC, espero les guste...
Este código es para tener un reloj que se despliega en un lcd y se puede cambiar la hora mediante el teclado matricial..
7. CÓDIGO FUENTE
#include "reloj.h"
#include <LCD.C>
#include <stdlib.h>
#include <KBD3x4_C.C>
#byte puerto_b = 06
int a, b, c, ax, bx, cx;
char lectura;
int lectura2, m, n, vandera, vandera1, vandera2, tenx, tenx2;
int i, j, k;
char ls;
int trans()
{
switch (lectura)
{
case '0': tenx2 = 0;
break;
case '1': tenx2 = 1;
break;
case '2': tenx2 = 2;
break;
case '3': tenx2 = 3;
break;
case '4': tenx2 = 4;
break;
case '5': tenx2 = 5;
break;
case '6': tenx2 = 6;
break;
case '7': tenx2 = 7;
break;
case '8': tenx2 = 8;
break;
case '9': tenx2 = 9;
break;
}
return tenx2;
}
int lectt()
{
lectura = kbd_getc();
lectura2 = trans();
return lectura2;
}
//#int_EXT
max()
{
vandera1 = 0;
while (vandera1 == 0)
{
vandera = 0;
while (vandera == 0)
{
delay_ms(50);
printf(lcd_putc, "\f Ingrese Hora: ");
m = lectt();
if ((lectura != 0) && ((lectura2 >= 0) && (lectura2 <= 2)))
{
ax = 10*lectura2;
vandera = 1;
printf(lcd_putc, "\f %d", ax);
delay_ms(1000);
}
}
vandera = 0;
while (vandera == 0)
{
delay_ms(50);
printf(lcd_putc, "\f Ingrese Hora 2: ");
m = lectt();
if ((lectura != 0) && ((lectura2 >= 0) && (lectura2 <= 9)))
{
ax = ax + lectura2;
vandera = 1;
printf(lcd_putc, "\f %d", ax);
delay_ms(1000);
}
}
if ((ax >= 0) && (ax <= 23) )
{
vandera1 = 1;
a = ax;
}
else
{
printf(lcd_putc, "\f Error lógico ");
delay_ms(2000);
}
}
//
vandera1 = 0;
while (vandera1 == 0)
{
vandera2 = 0;
while (vandera2 == 0)
{
delay_ms(50);
printf(lcd_putc, "\f Ingrese Minutos: ");
m = lectt();
if ((lectura != 0) && ((lectura2 >= 0) && (lectura2 <= 5)))
{
bx = 10*lectura2;
vandera2 = 1;
printf(lcd_putc, "\f %d", bx);
delay_ms(1000);
}
}
vandera2 = 0;
while (vandera2 == 0)
{
delay_ms(50);
printf(lcd_putc, "\f Ingrese Minutos: ");
m = lectt();
if ((lectura != 0) && ((lectura2 >= 0) && (lectura2 <= 9)))
{
bx = bx + lectura2;
vandera2 = 1;
printf(lcd_putc, "\f %d", bx);
delay_ms(1000);
}
}
if ((bx >= 0) && (bx <= 59) )
{
vandera1 = 1;
b = bx;
}
else
{
printf(lcd_putc, "\f Error lógico ");
delay_ms(2000);
}
}
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
lcd_init();
//enable_interrupts(INT_EXT);
//enable_interrupts(GLOBAL);
//set_tris_b(0x00);
while(true)
{
for (i=a; i<=24; i++)
{
for (j=b; j<=60; j++)
{
for (k=c; k<=60; k++)
{
printf(lcd_putc, "\f %d : %d : %d", i, j, k);
delay_ms(100);
tenx = lectt();
if (lectura != 0)
{
max();
i=a;
j=b;
k=0;
}
delay_ms(1000);
}
}
}
}
}
-
Muchas gracias por la aportación desinteresada de verdad que ste foro mejora dia a dia.
Saludos 8).