Buenas,
Estoy realizando un proyecto con un PIC24FJ128GC010, un acelerómetro analógico y un módulo bluetooth RN42. El compilador que utilizo es el CCS.
Estoy desarrollando un menú de usuario con dos botones para introducir un valor. Para ello utilizo un contador incremental de pulsaciones que encontré por el foro para introducir las centenas en el "MENU2" y las decenas en el "MENU3. Con el boton izquierdo (botonizq) hago el incremento y con el botón derecho quiero mover el cursor para introducir las decenas.
Al desarrollarlo tengo un problema que no consigo solucionar y es que no logro pasar del "MENU2".
Alguien que pueda ayudarme? Os adjunto el código.
Código:
#include <24FJ128GC010.H>
#device adc=12
#fuses FRC, NOWDT, NOPROTECT, BROWNOUT, ICSP1
#use delay(clock = 8000000)
#include <flex_lcd.c>
#define ledrojo PIN_E0
#define ledverde PIN_E1
#define botonder PIN_E2
#define botonizq PIN_E3
#define buzzer PIN_E4
int boton;
//==========================
float tension;
signed int32 read;
int menu=1;
int i=0;
char tabNum[10]={'0','1','2','3','4','5','6','7','8','9'},j=0;
int mov[10];
int centenas;
int decenas;
int unidades;
void configurar(void);
void main()
{
disable_interrupts(GLOBAL);
setup_oscillator(OSC_INTERNAL,8000000);
output_low(ledrojo);
output_low(ledverde);
output_low(buzzer);
lcd_init();
delay_ms(100);
lcd_gotoxy(1,1);
printf(lcd_putc,"\fLISTO!");
printf(lcd_putc,"\n");
delay_ms(1500);
printf(lcd_putc,"\f");
delay_ms(750);
while(1)
{
if(input(botonder)==1){ //boton
delay_ms(30);
if(input(botonder)==1){
output_toggle(PIN_E0); //salida led
output_toggle(PIN_E1); //salida led
configurar();
menu++;
if (menu==7){
menu=1;
delay_ms(30);
}
while(input(botonder)==1);
}
}
}
}
void configurar()
{
switch (menu)
{
case 1:menu=1;
{
printf(lcd_putc, "\f");
printf(lcd_putc, "\n INICIO");
}
break;
case 2: menu=2;
{
printf(lcd_putc, "\fMENU2:");
printf(lcd_putc, "\n -->");
while(menu=2){
if(input(botonizq)){
do{
}while(input(botonizq));
delay_ms(75);
if(j>9){
j=0;
output_high(buzzer);
delay_ms(50);
output_low(buzzer);
}
lcd_gotoxy(1,2);
printf(lcd_putc,"%c",tabNum[j]);
printf(lcd_putc,"\b");
j++;
//incremento contador indice tabNum
}
if(input(botonder)==1){
menu=3;
}
}
centenas=j*100;
}
break;
case 3: menu=3;
{
printf(lcd_putc, "\fMENU3:");
while (menu==3){
if(!input(botonizq)){
do{
}while(!input(botonizq));
if(j>9){
j=0;
output_high(buzzer);
delay_ms(50);
output_low(buzzer);
}
lcd_gotoxy(2,2);
printf(lcd_putc,"a");
//printf(lcd_putc,"\b");
j++;
}
}
decenas=j*10;
}
}
}