| 
 
初级会员 
 
	积分112金钱112 注册时间2023-3-26在线时间16 小时 | 
 
5金钱 
| //主程序死循环的程序// 
 key = KEY_scan(0);  //读取键值 模式0
 if(key)
 {
 switch(key)
 {
 case KEY1_D:    //按键一按下
 canshu_flag1 = canshu_flag1 + 1;//数码管显示参数标志位
 //                                        LED1 = !LED1;//翻转LED0电平
 //                                  display_data(x = (x + 100),i);
 if(canshu_flag1 < 4)            //4个参数
 {
 switch(canshu_flag1)
 {
 case 1:                     //参数一
 LED1 = !LED1;
 for(;;)
 {
 send_data(num[11],1);//数码管第一位
 delay_ms(1);
 send_data(num[1],2);//数码管第二位
 delay_ms(1);
 send_data(num[14],3);//数码管第三位
 delay_ms(1);
 if(canshu_flag1 == 2)break;
 }
 break;
 case 2:                    //参数二
 LED0 = !LED0;
 for(;;)
 {
 send_data(num[12],1);
 delay_ms(1);
 send_data(num[1],2);
 delay_ms(1);
 send_data(num[14],3);
 delay_ms(1);
 }
 break;
 case 3:
 for(;;)
 {
 send_data(num[13],1);
 delay_ms(1);
 send_data(num[1],2);
 delay_ms(1);
 send_data(num[14],3);
 delay_ms(1);
 }
 break;
 }
 }
 else if(canshu_flag1 >= 4)
 {
 canshu_flag1 = 1;
 }
 
 break;
 case KEY2_D:
 //                                LED1 = !LED1;//翻转LED1电平
 //                                display_data(x = (x + 10),i);
 break;
 case KEY3_D:
 //                                BEEP = !BEEP;//翻转蜂鸣器电平
 //                                display_data(x = (x + 1),i);
 break;
 case KEY4_D:
 while(1)
 {
 if(a < 100)
 {
 for(i = 1; i < 4;i ++)
 {
 display_data(x,i);
 delay_ms(1);
 }
 a++;
 }
 
 if(a == 100)
 {
 send_data(num[10],2);
 //                  delay_ms(1);
 for(i=1;i<3;i++)
 {
 display_data(x,i);           //所有位正常显示
 delay_ms(1);
 }
 b++;
 if(b == 100)
 {
 a = 0;
 b = 0;
 }
 }
 }
 //                                LED0 = !LED0;//翻转LED1电平
 //                                BEEP = !BEEP;//翻转蜂鸣器电平
 break;
 case KEY5_D:
 LED0 = !LED0;
 
 break;
 case KEY_0:
 
 break;
 
 }
 }else delay_ms(10);
 
 
 | 
 
最佳答案
查看完整内容[请看2#楼] 给你举个例子
while(1)
{
key();
led();
}
uint8_t num0;
uint8_t num1;
uint8_t num2;
void key()
{
 switch(KEY_scan(0))
{
case KEY1_D:  canshu_flag1++;if((canshu_flag1>3)canshu_flag1=0;break;
case KEY2_D: 
switch(canshu_flag1)
{
case 0:num0++;if(num0>9) num0=0;break;
case 1:num1++;if(num1>9) num1=0;break;
case 2:num2++;if(num2>9) num2=0;break;
}
}
}
void led()
{
switch(cans ... |