Me indicaron que hiciera un contador de objetos por medio del pic 18f4550 pero tengo 2 problemas.
1. He olvidado como implementar un vector par por medio de un teclado matricial 4*3 escribir dos números.
Es para que una persona decida hasta que número quiere contar, este en realidad cuentas cajas,
y una caja son 4 paquetes (mas o menos por cada 4 objetos se cuenta +1 )
Si me ayudaran sería de grana ayuda.
2. Utilizo un botón para el cambio de estado, y digo que paso un objeto, pero no se puede utilizar un botón.
Yo pensé en un foto diodo pero no se como implementarlo en la programación, así que sería de gran ayuda.
Gracias.
1. He olvidado como implementar un vector par por medio de un teclado matricial 4*3 escribir dos números.
Es para que una persona decida hasta que número quiere contar, este en realidad cuentas cajas,
y una caja son 4 paquetes (mas o menos por cada 4 objetos se cuenta +1 )
Si me ayudaran sería de grana ayuda.
2. Utilizo un botón para el cambio de estado, y digo que paso un objeto, pero no se puede utilizar un botón.
Yo pensé en un foto diodo pero no se como implementarlo en la programación, así que sería de gran ayuda.
Código:
#include "C:\Users\User\Desktop\timer conteo de piezas\pic c\main.h"
#include "kbd_lib.c"
#include "flex_lcd.c"
void timer0_isr()
{
output_toggle(PIN_A0);
set_TIMER0(26474);
}
void main()
{
int x,i;
int b;
char x1;
port_b_pullups(true);
//utilizo el timer 0 como contafor y que los pulsos van de abajo hacia arriba ademas los div son 2 es decir cada 2 pulsos es conta 1+
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_4|RTCC_8_BIT);
set_timer0(0);
//0xff significqa que los ocho pines son entradas
set_tris_a(0xff);
set_tris_d(0x00);
set_tris_b(0x00);
lcd_init();
kbd_init();
lcd_gotoxy(1,1);
LCD_PUTC ("Bienvenido");
delay_ms(500);
for (i=1;i<=16;++i)
{
lcd_gotoxy(i,2);
printf(LCD_PUTC, "*");
delay_ms( 50 );
lcd_putc('\f');
}
while(TRUE)
{
//agarra el numero
lcd_gotoxy(1,1);
printf(LCD_PUTC,"ingrese su numero");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"");
delay_ms(500);
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(LCD_PUTC,"0=30 1=31 3=32");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"3=33 4=34 5=35");
delay_ms(500);
lcd_putc('\f');
lcd_gotoxy(1,1);
printf(LCD_PUTC,"6=36 7=37 8=38");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"9=39 *=40 #=41");
delay_ms(500);
lcd_putc('\f');
while(true)
{
x1=kbd_getc();
if(x1!=0)
{
lcd_gotoxy(1,2);
lcd_putc("*");
delay_ms(80);
break;
}
}
switch (x1)
{
case '0':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==30)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '1':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==31)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '2':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==32)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '3':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==33)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '4':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==34)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '5':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==35)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '6':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==36)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '7':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==37)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '8':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==38)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '9':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==39)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '*':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==40)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
case '#':
//get_timer agarra el valor del timer
while(TRUE)
{
x=get_timer0();
b=x;
lcd_gotoxy(1,1);
lcd_putc("\fEL VALOR ES");
lcd_gotoxy(2,2);
printf(LCD_PUTC,"%d",x);
delay_ms(100);
if(b==41)
{
lcd_gotoxy(1,1);
printf (lcd_putc,"CONTEO FINALIZADO");
delay_ms (500);
lcd_putc ('f');
output_low(PIN_D3);
delay_ms(300);
output_high(PIN_D3);
delay_ms(300);
output_low(PIN_D3);
delay_ms(300);
set_timer0(0);
}
}
break;
}
}
}
Última edición por un moderador: