找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1726|回復(fù): 6
收起左側(cè)

單片機(jī)C語言 不需運(yùn)行的部分代碼影響其它位置代碼,求分析

[復(fù)制鏈接]
ID:734017 發(fā)表于 2022-2-24 00:33 | 顯示全部樓層 |閱讀模式
switch(buffer[1])                                                                 
                {        
                                        case 0X79:
                                       
                                                if(        buffer[3]==0xA1)                //選擇左邊                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空緩存區(qū)
                                                        Send_Array_uart2(Powerout2,7);
                                                        
                                                 break;
                                                }
                                                
                                                                                                        //選擇右邊
                                                if(        buffer[3]==0xA2)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空緩存區(qū)
                                                        Send_Array_uart2(Powerout,7);
                                                        
                                                 break;
                                                }
                                                if(        buffer[3]==0xA3)                                                
                                                {                                
                                                        memset(buffer, 0, 16); //清空緩存區(qū)
                                                        if(!RSM_lock&!MIC_lock)                                                //啟動(dòng)不切換
                                                        {
                                                        Send_Array_uart2(Powerout2,7);
                                                                //facecare_time_min=facecare_time_min_tmp;   //默認(rèn)時(shí)間
                                                                //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); //清空緩存區(qū)
                                                        if(!UL_INO_CLOK_lock)                                                        //啟動(dòng)不切換
                                                        {
                                                                Send_Array_uart2(Powerout,7);
                                                                //facecare_time_min=facecare_time_min_tmp;   //默認(rèn)時(shí)間
                                                                //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); //清空緩存區(qū)
                                                        if(key_lock_B1)
                                                {
                                                        key_lock_B1 =0;
                                                                if(RSM_lock&&Cache_flag)        //啟動(dòng)噴
                                                                {               
                                                                        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); //清空緩存區(qū)
                                                        if(key_lock_B2)
                                                {
                                                        key_lock_B2 =0;
                                                                if(MIC_lock&&Cache_flag)                //啟動(dòng)吸
                                                                {        
                                                                        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); //清空緩存區(qū)
                                                        if(key_lock_B3)
                                                {
                                                        key_lock_B3 =0;
                                                                if(UL_INO_CLOK_lock&&Cache_flag)                //啟動(dòng)三功能
                                                                {        
                                                                        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;
                }        



串口接收判斷   紅色部分代碼不進(jìn)入運(yùn)行,但會(huì)影響藍(lán)色部分代碼,屏蔽掉就沒問題。

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2022-2-24 07:58 | 顯示全部樓層
單片機(jī)C語言代碼 樓主確定這個(gè)東東不是程序 ?
回復(fù)

使用道具 舉報(bào)

ID:734017 發(fā)表于 2022-2-24 08:17 | 顯示全部樓層
man1234567 發(fā)表于 2022-2-24 07:58
單片機(jī)C語言代碼 樓主確定這個(gè)東東不是程序 ?

打錯(cuò)了,我的意思是 紅色部分代碼 不需運(yùn)行,但加上就會(huì)影響藍(lán)色部分
回復(fù)

使用道具 舉報(bào)

ID:301191 發(fā)表于 2022-2-24 16:37 | 顯示全部樓層
頂一下
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-2-24 16:49 | 顯示全部樓層
應(yīng)該是邏輯問題,望高手來指點(diǎn)一下:
switch(x)
{
case x
{
  if (xxx)
  {
   x;
   xx;
   xxx;
  break; //<--此處的break,是跳出當(dāng)前的if(){}?還是跳出當(dāng)前的case{}??
  }
。

。
。

回復(fù)

使用道具 舉報(bào)

ID:734017 發(fā)表于 2022-2-24 17:50 | 顯示全部樓層
名字不是重點(diǎn) 發(fā)表于 2022-2-24 16:49
應(yīng)該是邏輯問題,望高手來指點(diǎn)一下:
switch(x)
{

if(x)
{
switch(x)

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

}
else()

這樣子會(huì)好一點(diǎn)吧;
回復(fù)

使用道具 舉報(bào)

ID:734017 發(fā)表于 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); //清空緩存區(qū)
                                                                                Send_Array_uart2(Powerout2,7);
                                                                                
                                                        break;
                                       
                                        case 0xA2:                                                        //選擇右邊               
                                                                                memset(buffer, 0, 16); //清空緩存區(qū)
                                                                                Send_Array_uart2(Powerout,7);
                                                                                
                                                        break;
                                       
                                        case 0xA3:
                                                                                memset(buffer, 0, 16); //清空緩存區(qū)
                                                                                if(!RSM_lock&!MIC_lock)                                                //啟動(dòng)不切換
                                                                                {
                                                                                        Send_Array_uart2(Powerout2,7);
                                                                                        facecare_time_min=facecare_time_min_tmp;   //默認(rèn)時(shí)間
                                                                                        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); //清空緩存區(qū)
                                                                                if(!UL_INO_CLOK_lock)                                                        //啟動(dòng)不切換
                                                                                {
                                                                                        Send_Array_uart2(Powerout,7);
                                                                                        facecare_time_min=facecare_time_min_tmp;   //默認(rèn)時(shí)間
                                                                                        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); //清空緩存區(qū)
                                                                                if(key_lock_B3)
                                                                        {
                                                                                key_lock_B3 =0;
                                                                                        if(UL_INO_CLOK_lock&&Cache_flag)                //啟動(dòng)三功能
                                                                                        {        
                                                                                                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;
                                
                        }
                }        
        }
        我已經(jīng)重新改了,情況依舊,只要紅色部分在,藍(lán)色就不正不常。紅色部分不運(yùn)行,藍(lán)色都不正常,現(xiàn)在知道是Time_TXD()問題,為什么沒有不運(yùn)行這段會(huì)影響其它。剛開始點(diǎn)擊的那兩下串口數(shù)據(jù)也正常,也有通信。測了數(shù)據(jù)也沒錯(cuò)。說不清楚,請看視頻


視頻.7z

8.7 MB, 下載次數(shù): 2

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表