Autor Tema: porfavor NECESITO AYUDA PARA MI MENU CON PIC  (Leído 139 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rodriguezz

  • PIC10
  • *
  • Mensajes: 1
porfavor NECESITO AYUDA PARA MI MENU CON PIC
« en: 25 de Abril de 2020, 00:57:40 »
hola tengo un programa que estoy realizando y me apena que no pueda mas con unas cosas tanto para nada los problemas son los siguientes:

en lo botones de arriba y abajo sumo y resto la variable pero para que retorne le pongo que regrese al caso 0 esto hace que al ingresar al numero 3 se regresa al 0 nunca puedo imprimir en el caso3

tampoco  puedo hacer los demas sub menu de montefiori pastor sentado y pastor parado ayuda porfavor: aqui el programa:


#include <16f877a.h>
#device*=16
#fuses NOWDT
#fuses PUT
//#fuses INTRC
#fuses NOBROWNOUT
#fuses NOLVP
#use delay (clock=4000000)
#define LCD_ENABLE_PIN  PIN_D2                                    ////
#define LCD_RS_PIN      PIN_D0                                    ////
#define LCD_RW_PIN      PIN_D1                                    ////
#define LCD_DATA4       PIN_D4                                    ////
#define LCD_DATA5       PIN_D5                                    ////
#define LCD_DATA6       PIN_D6                                    ////
#define LCD_DATA7       PIN_D7
#include <lcd.c>
//--------------
#define Btdow      PIN_A0
#define Btup       PIN_A1
#define Btok       PIN_A2
#define Btatras    PIN_A3

int8 flag;
#bit flag_Btdow   = flag.0
#bit flag_Btup    = flag.1
#bit flag_Btok    = flag.2
#bit flag_Btatras = flag.3
////////////////////////////
void Show_menu();
void Ejecuta_orden();
void Gestion_nivel_1();////////MENU GENERAL
void Gestion_nivel_2();////////MENU TAMAÑO DE FIGURA CABEZON
void Gestion_nivel_3();////////MENU TAMAÑO DE FIGURA MONTEFIORI
void Gestion_nivel_4();////////MENU TAMAÑO DE FIGURA P. SENTADO
void Gestion_nivel_5();////////MENU TAMAÑO DE FIGURA P. PARADO
////////////////////////////
int8 Nivel,Opcion,Opcion_n1,Opcion_n2;
int8 Opcion_n3,Opcion_n4,Maxnivel,Valor;


#int_TIMER1
void TIMER1_isr(void)
{
/////////////////////////////////////////GESTION BOTON ABAJO////////////////////////////////////////
   if(!input(Btdow)&&!flag_Btdow){
   flag_Btdow=1;//espera que suelte boton
///////////////////////////////////////////// 
   if(Nivel==0){Opcion ++;if (opcion >3){opcion=0;}
   Gestion_nivel_1();}
   else if(Nivel==1){Opcion ++;if (opcion >1){opcion=0;}
   Gestion_nivel_2();}
   
   else if(Nivel==2){Opcion ++;if (opcion >2){opcion=0;}
   Gestion_nivel_3();}
   else if(Nivel==3){Opcion ++;if (opcion >2){opcion=0;}
   Gestion_nivel_4();}
   else if(Nivel==4){Opcion ++;if (opcion >2){opcion=0;}
   Gestion_nivel_5();}     
/////////////////////////////////////////////   
   }else if ( flag_Btdow && input(Btdow)){
   flag_Btdow=0;//espera el proximo pulso
   }
/////////////////////////////////////////GESTION BOTON ARRIBA/////////////////////////////////////////
   if(!input(Btup) && !flag_Btup){
   flag_Btup=1;//espera que suelte boton
///////////////////////////////////////////// 
   if(Nivel==0){if(opcion==0){opcion=3;}
   else{Opcion --;}Gestion_nivel_1 ();}
   else if(Nivel==1){if(opcion==0){opcion=1;}
   else{Opcion --;}Gestion_nivel_2 ();}
   
 
   
//////////////////////////////////////////////   
 } else if ( flag_Btup && input(Btup)){
   flag_Btup=0;//espera el proximo pulso
   }
/////////////////////////////////////////GESTION BOTON OK////////////////////////////////////////////
    if(!input(Btok) && !flag_Btok){
   flag_Btok=1;//espera que suelte boton
//////////////////////////////////////////////     
   if (Nivel==0){Nivel ++;Gestion_nivel_2();}
   //Opcion_n1=0;
   //else{Ejecuta_orden();}   
     
//////////////////////////////////////////////     
   }else if ( flag_Btok && input(Btok)){
   flag_Btok=0;//espera el proximo pulso
   }
/////////////////////////////////////////GESTION BOTON ATRAS/////////////////////////////////////////
   if(!input(Btatras) && !Flag_Btatras){     
        Flag_Btatras=1; // espera a que suelte boton
     
        if(nivel >0){ nivel --;} // para n niveles
        Gestion_nivel_1();
       
      }else if ( Flag_Btatras && input(Btatras) ){
        Flag_Btatras =0; // espero proximo pulso
      }     
}
////////////////////////////////////////
void Ejecuta_orden(){

}
////////////////////////////////////////
void Gestion_nivel_1(){
lcd_send_byte(0,1);
switch (Opcion) {

    case 0:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\cabezon ");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\montefiori ");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\P. sentado ");
           lcd_gotoxy(21,2);
           printf(lcd_putc,"\P. parado  <---");

           break;

    case 1:printf(lcd_putc,"\f");
            lcd_gotoxy(1,1);
           printf(lcd_putc,"\cabezon    <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\montefiori");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\P. sentado ");
           lcd_gotoxy(21,2);
              printf(lcd_putc,"\P. parado ");

           break;

     case 2:printf(lcd_putc,"\f");
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\cabezon ");
            lcd_gotoxy(1,2);
            printf(lcd_putc,"\montefiori <---");
            lcd_gotoxy(21,1);
            printf(lcd_putc,"\P. sentado ");
            lcd_gotoxy(21,2);
            printf(lcd_putc,"\P. parado ");

           break;     
           
     case 3:printf(lcd_putc,"\f");
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\cabezon ");
            lcd_gotoxy(1,2);
            printf(lcd_putc,"\montefiori ");
            lcd_gotoxy(21,1);
            printf(lcd_putc,"\P. sentado <---");
            lcd_gotoxy(21,2);
            printf(lcd_putc,"\P. parado ");

           break;     

    default:
           break; }
}
//////////////////////////////////////////////////////////
void Gestion_nivel_2(){
lcd_send_byte(0,1);
switch (Opcion) {

    case 0:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\cabezon 1  <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\cabezon 2");
           
           break;

    case 1:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\cabezon 1");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\cabezon 2  <---");
           
           break; 
    default:
           break; }
}
//////////////////////////////////////////////////////////
void Gestion_nivel_3(){
lcd_send_byte(0,1);
switch (Opcion) {

    case 0:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\montefiori 1 <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\montefiori 2");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\montefiori 3");
           
           break;

    case 1:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\montefiori 1");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\montefiori 2 <---");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\montefiori 3");
           
           break; 
    case 2:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\montefiori 1");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\montefiori 2");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\montefiori 3 <---");
           
           break;       
    default:
           break; }
}
//////////////////////////////////////////////////////////
void Gestion_nivel_4(){
lcd_send_byte(0,1);
switch (Opcion) {

    case 0:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\leñador    <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\sentado");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\lechera");
           
           break;

    case 1:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\leñador");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\sentado    <---");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\lechera");
           
           break; 
    case 2:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\leñador");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\sentado");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\lechera    <---");;
           
           break;       
    default:
           break; }
}
//////////////////////////////////////////////////////////
void Gestion_nivel_5(){
lcd_send_byte(0,1);
switch (Opcion) {

    case 0:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\pastora      <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\pastor bolsa");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\pastor oveja");
           
           break;

    case 1:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\pastora");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\pastor bolsa <---");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\pastor oveja");
           
           break; 
    case 2:printf(lcd_putc,"\f");
           lcd_gotoxy(1,1);
           printf(lcd_putc,"\pastora      <---");
           lcd_gotoxy(1,2);
           printf(lcd_putc,"\pastor bolsa");
           lcd_gotoxy(21,1);
           printf(lcd_putc,"\pastor oveja");
           break;       
    default:
           break; }
}
//////////////////////////////////////////////////////////
void Show_menu(){
lcd_send_byte(0,1);
switch (Nivel) {

    case 0: Gestion_nivel_1();
           break;
    case 1: Gestion_nivel_2();
           break;
    case 2: Gestion_nivel_3();
           break;
    case 3: Gestion_nivel_4();
           break;
    case 4: Gestion_nivel_5();
           break;   
    default:
           break; }
}
 
void main()
{
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1 );
   delay_ms(100);;//estabilizar voltaje
   lcd_init();//Inicializamos el LCD   
///////////////////////////Mensaje inicial
   lcd_gotoxy(1,2);//Posiciona en LCD
   lcd_putc ("     BIENVENIDO");//manda un mensaje al LCD 
   lcd_gotoxy(21,1);
   lcd_putc ("  TALLER V. FATIMA");
   delay_ms(2000); //espera 1 segundo                     
   lcd_putc("\f"); //limpia el lcd 
  // ----
   lcd_gotoxy(1,2);//Posiciona en LCD
   lcd_putc ("     FONDEADORA");//manda un mensaje al LCD 
   lcd_gotoxy(21,1);
   lcd_putc ("      MAPERXP1");
   delay_ms(3000); //espera 1 segundo                     
   lcd_putc("\f"); //limpia el lcd 
  // ----
   lcd_gotoxy(1,2);
   printf(lcd_putc," -PRESIONE UN BOTON- ");
   lcd_gotoxy(21,1);
   printf(lcd_putc,"    PARA INGRESAR ");

   flag=0;
   Nivel    =0;
   Opcion   =0;
   Maxnivel =3;
   Valor    =0;
   
   
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {

   }

}