找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1087|回复: 6
收起左侧

单片机C语言 不需运行的部分代码影响其它位置代码,求分析

[复制链接]
ID:734017 发表于 2022-2-24 00:33 | 显示全部楼层 |阅读模式
switch(buffer[1])                                                                 
                {        
                                        case 0X79:
                                       
                                                if(        buffer[3]==0xA1)                //选择左边                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        Send_Array_uart2(Powerout2,7);
                                                        
                                                 break;
                                                }
                                                
                                                                                                        //选择右边
                                                if(        buffer[3]==0xA2)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        Send_Array_uart2(Powerout,7);
                                                        
                                                 break;
                                                }
                                                if(        buffer[3]==0xA3)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        if(!RSM_lock&!MIC_lock)                                                //启动不切换
                                                        {
                                                        Send_Array_uart2(Powerout2,7);
                                                                //facecare_time_min=facecare_time_min_tmp;   //默认时间
                                                                //facecare_time_sec=facecare_time_sec_tmp;
                                                                //Delay200ms();
                                                                //Time_TXD(facecare_time_min,10,0x05,Display_time_coordinates[0]);
                                                                //Send_Out_uart2();
                                                                //Time_TXD(facecare_time_min,1,0x05,Display_time_coordinates[1]);
                                                                //Send_Out_uart2();        
                                                        }
                                                 break;
                                                }
                                                if(        buffer[3]==0xA4)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        if(!UL_INO_CLOK_lock)                                                        //启动不切换
                                                        {
                                                                Send_Array_uart2(Powerout,7);
                                                                //facecare_time_min=facecare_time_min_tmp;   //默认时间
                                                                //facecare_time_sec=facecare_time_sec_tmp;
                                                                //Delay200ms();
                                                                //Time_TXD(facecare_time_min,10,0x05,Display_time_coordinates[0]);
                                                                //Send_Out_uart2();
                                                                //Time_TXD(facecare_time_min,1,0x05,Display_time_coordinates[1]);
                                                        //        Send_Out_uart2();
                                                        }
                                                 break;
                                                }
                                                
                                                //**********我是分割**********
                                                if(        buffer[3]==0xB1)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        if(key_lock_B1)
                                                {
                                                        key_lock_B1 =0;
                                                                if(RSM_lock&&Cache_flag)        //启动喷
                                                                {               
                                                                        RSM_lock=~RSM_lock;        
                                                                        Send_number=2;
                                                                        Cache_flag=0;
                                                                }
                                                                else if(Cache_flag)
                                                                {        
                                                                        RSM_lock=~RSM_lock;        
                                                                        Send_number=1;
                                                                        Cache_flag=0;
                                                                }                                
                                                        }
                                                break;
                                                }
                                
                                                if(        buffer[3]==0xB2)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        if(key_lock_B2)
                                                {
                                                        key_lock_B2 =0;
                                                                if(MIC_lock&&Cache_flag)                //启动吸
                                                                {        
                                                                        MIC_lock=~MIC_lock;
                                                                        Send_number=4;
                                                                        Cache_flag=0;
                                                                }
                                                                else if(Cache_flag)
                                                                {        
                                                                        MIC_lock=~MIC_lock;
                                                                        Send_number=3;
                                                                        Cache_flag=0;
                                                                }                                
                                                        }
                                                break;
                                                }
                                
                                                if(        buffer[3]==0xB3)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空缓存区
                                                        if(key_lock_B3)
                                                {
                                                        key_lock_B3 =0;
                                                                if(UL_INO_CLOK_lock&&Cache_flag)                //启动三功能
                                                                {        
                                                                        UL_INO_CLOK_lock=~UL_INO_CLOK_lock;
                                                                        Send_number=6;
                                                                        Cache_flag=0;
                                                                }
                                                                else if(Cache_flag)
                                                                {        
                                                                        UL_INO_CLOK_lock=~UL_INO_CLOK_lock;
                                                                        Send_number=5;
                                                                        Cache_flag=0;
                                                                }                                
                                                        }
                                                break;
                                                }
                                
                                break;                 
               
//==========================================================================================                        
                case 0X78:
                      {
                        uchar i=0;
                                for(i=0;i<16;i++)
                                {
                                        buffer[ i]=0;
                                }
                                
                                        key_lock_B1                =1;
                                        key_lock_B2                =1;
                                        key_lock_B3                =1;
                        }
                                
                                break;  
                                        default:break;
                }        



串口接收判断   红色部分代码不进入运行,但会影响蓝色部分代码,屏蔽掉就没问题。

回复

使用道具 举报

ID:584814 发表于 2022-2-24 07:58 | 显示全部楼层
单片机C语言代码 楼主确定这个东东不是程序 ?
回复

使用道具 举报

ID:734017 发表于 2022-2-24 08:17 | 显示全部楼层
man1234567 发表于 2022-2-24 07:58
单片机C语言代码 楼主确定这个东东不是程序 ?

打错了,我的意思是 红色部分代码 不需运行,但加上就会影响蓝色部分
回复

使用道具 举报

ID:301191 发表于 2022-2-24 16:37 | 显示全部楼层
顶一下
回复

使用道具 举报

ID:824490 发表于 2022-2-24 16:49 | 显示全部楼层
应该是逻辑问题,望高手来指点一下:
switch(x)
{
case x
{
  if (xxx)
  {
   x;
   xx;
   xxx;
  break; //<--此处的break,是跳出当前的if(){}?还是跳出当前的case{}??
  }





回复

使用道具 举报

ID:734017 发表于 2022-2-24 17:50 | 显示全部楼层
名字不是重点 发表于 2022-2-24 16:49
应该是逻辑问题,望高手来指点一下:
switch(x)
{

if(x)
{
switch(x)

case x : break;case x : break;
case x : break;
case x : break;

}
else()

这样子会好一点吧;
回复

使用道具 举报

ID:734017 发表于 2022-2-24 18:36 | 显示全部楼层
void key_service2()                                        //主菜单选择                                                
{
        if(key_service_lock2)
        {
        key_service_lock2=0;               
                if(buffer[1]==0x79)         
                {        
                switch(buffer[3])                                                                 
                {        
                                        case 0xA1:
                                                                                memset(buffer, 0, 16); //清空缓存区
                                                                                Send_Array_uart2(Powerout2,7);
                                                                                
                                                        break;
                                       
                                        case 0xA2:                                                        //选择右边               
                                                                                memset(buffer, 0, 16); //清空缓存区
                                                                                Send_Array_uart2(Powerout,7);
                                                                                
                                                        break;
                                       
                                        case 0xA3:
                                                                                memset(buffer, 0, 16); //清空缓存区
                                                                                if(!RSM_lock&!MIC_lock)                                                //启动不切换
                                                                                {
                                                                                        Send_Array_uart2(Powerout2,7);
                                                                                        facecare_time_min=facecare_time_min_tmp;   //默认时间
                                                                                        facecare_time_sec=facecare_time_sec_tmp;
                                                                                Time_TXD(facecare_time_min,10,0x05,Display_time_coordinates[0]);
                                                                                Send_Out_uart2();
                                                                                Time_TXD(facecare_time_min,1,0x05,Display_time_coordinates[1]);
                                                                                Send_Out_uart2();        
                                                                                }
                                                 break;
                                                                                
                                                case 0xA4:
                                                                                memset(buffer, 0, 16); //清空缓存区
                                                                                if(!UL_INO_CLOK_lock)                                                        //启动不切换
                                                                                {
                                                                                        Send_Array_uart2(Powerout,7);
                                                                                        facecare_time_min=facecare_time_min_tmp;   //默认时间
                                                                                        facecare_time_sec=facecare_time_sec_tmp;
                                                                                        Delay200ms();
                                                                                Time_TXD(facecare_time_min,10,0x05,Display_time_coordinates[0]);
                                                                                Send_Out_uart2();
                                                                                Time_TXD(facecare_time_min,1,0x05,Display_time_coordinates[1]);
                                                                                Send_Out_uart2();
                                                                                }
                                                 break;
                                                                                
                                                case 0xB3:
                                                                                memset(buffer, 0, 16); //清空缓存区
                                                                                if(key_lock_B3)
                                                                        {
                                                                                key_lock_B3 =0;
                                                                                        if(UL_INO_CLOK_lock&&Cache_flag)                //启动三功能
                                                                                        {        
                                                                                                UL_INO_CLOK_lock=~UL_INO_CLOK_lock;
                                                                                                Send_number=6;
                                                                                                Cache_flag=0;
                                                                                        }
                                                                                        else if(Cache_flag)
                                                                                        {        
                                                                                                UL_INO_CLOK_lock=~UL_INO_CLOK_lock;
                                                                                                Send_number=5;
                                                                                                Cache_flag=0;
                                                                                        }                                
                                                                                }
                                                        break;
                                                                default:break;
                                                }
                                        }               
//==========================================================================================                        
                else if(buffer[1]== 0X78)
                {
                        uchar i=0;
                                for(i=0;i<16;i++)
                                {
                                        buffer[ i]=0;
                                }
                                
                                       
                                        key_lock_B3                =1;
                                
                        }
                }        
        }
        我已经重新改了,情况依旧,只要红色部分在,蓝色就不正不常。红色部分不运行,蓝色都不正常,现在知道是Time_TXD()问题,为什么没有不运行这段会影响其它。刚开始点击的那两下串口数据也正常,也有通信。测了数据也没错。说不清楚,请看视频


视频.7z

8.7 MB, 下载次数: 2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表