久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5335|回復: 13
收起左側

51單片機通信問題(接收七個八位數據正常,一但接收六個八位數據,就陷入死循環)

[復制鏈接]
ID:77695 發表于 2015-4-22 10:32 | 顯示全部樓層 |閱讀模式
void com_init(void);

void main(void)
{               
               
                 
     uchar com_dat;
     com_init();                                                                                                                                                                                                                    
     while(1)
     {
                                         
          if(RI)
          {
            com_dat=SBUF;
            RI=0;                                                
                                                table[ i]=com_dat;
                                                SBUF=com_dat;
                                          TI=0;
                                                i++;
                                                if(i>6)
                                                {
                                                        disp_data();
                                                        i=0;
                                                }
          }
                                                
     }
}
void disp_data()//ò»′Î′|àí
{
                        if(table[0]==0xAA)
                        {
                                if(table[1]==0xBB)
                                {
                                        if(table[2]==0x01)
                                                //if(table[5]==0x00)
                                                //if(table[6]==0xFF)
                                        {
                                                P0=table[3];
                                                P1=table[4];
                                        }
                                }                                
                        }                        
}

void com_init(void)
{
    TMOD=0X20;
                SCON=0X50;
                TH1=0XFD;
                TL1=0XFD;
                ET0=1;
                EA=1;               
                TR1=1;
                P0=0;
                P1=0;        
}

這是我的程序,默認協議為 AA BB  address data1 data2 00 FF,接收七個八位數據正常,一但接收六個八位數據,比如 AA BB 01 3f 00 FF ,程序就陷入死循環了,大家幫幫忙幫我解決下怎么處理像六個八位數據的情況啊,謝謝

回復

使用道具 舉報

ID:72643 發表于 2015-4-22 10:55 | 顯示全部樓層
if((table[0]==0xAA)&&(table[1]==0xBB)&&(table[2]==0x01)&&(table[5]==0x00)&&(table[6]==0xFF))
{ P0=table[3];P1=table[4];}
else{P0=0;P1=0;}你試試吧
                       

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:77695 發表于 2015-4-22 11:29 | 顯示全部樓層
superjiangzhen 發表于 2015-4-22 10:55
if((table[0]==0xAA)&&(table[1]==0xBB)&&(table[2]==0x01)&&(table[5]==0x00)&&(table[6]==0xFF))
{ P0=t ...

這樣當然是可以的 ,我也試過了, 但是不是我想要的結果,我的目的是發射端發送AA BB 01 3F 00 FF的時候,單片機能檢測出來時錯的,如果發射端發下一條正確的指令,單片機能正常運行。像您剛才說的那種情況,我試過,發射端發送完錯誤指令,在發送正確指令,單片機就完全沒有反應了,死那了
回復

使用道具 舉報

ID:72643 發表于 2015-4-22 12:46 | 顯示全部樓層
我估計你這不是進入死循環 你這里面就沒有進入死循環的可能 你程序里有個判斷 發送完7個8位數才進入disp_data()里,所以你發送6個數時,再發送7個數 此時的i=6;還是進不了disp_data()里,我覺得是這原因,你可以試下先發6個數 再發送8個數 后七個數是你要發的正確數值,第一個數隨便,你試下吧

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:77695 發表于 2015-4-22 13:00 | 顯示全部樓層
superjiangzhen 發表于 2015-4-22 12:46
我估計你這不是進入死循環 你這里面就沒有進入死循環的可能 你程序里有個判斷 發送完7個8位數才進入disp_da ...

應該不是那得問題,我想這是發送錯誤數據AA BB 01 3F 00 FF,他不處理,然后再發正確的數據比如 AA BB 01 3D 11 00 FF時,他能正常處理,不受之前的影響。
回復

使用道具 舉報

ID:68804 發表于 2015-4-22 13:41 | 顯示全部樓層
我告訴你,是你的程序問題。要改為if(i>=6)就可以了。

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:68804 發表于 2015-4-22 13:43 | 顯示全部樓層
順便再告訴你,你的數據等于六或小于六的時候很容易數組越界..
你的編程基礎有待提高,還有的代碼寫的不規范,看了就頭痛

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:72643 發表于 2015-4-22 14:03 | 顯示全部樓層
你還是試一下我說的吧 先發6個再發8個 你那程序的確寫的有問題

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:72643 發表于 2015-4-22 14:09 | 顯示全部樓層
你有沒有注意到,先發送6個數 i=6 是不能進入disp_data() 再發送7個數 發送第一個后進入disp_data(),不會有顯示,你后面再發送6個數 i=6不能進入disp_data() ;你分析一下你的程序吧

評分

參與人數 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:142488 發表于 2016-10-12 20:27 | 顯示全部樓層
誰有顯示時分秒并可以調鬧鐘的啊
回復

使用道具 舉報

ID:111634 發表于 2016-10-12 21:15 | 顯示全部樓層
本帖最后由 zl2168 于 2016-10-12 21:18 編輯
c72477044 發表于 2016-10-12 20:27
誰有顯示時分秒并可以調鬧鐘的啊

實例94  模擬電子鐘(由80C51定時器產生秒時基)


Proteus仿真一下,確認有效。





以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版


書中電路和程序設計有詳細說明,程序語句條條有注解。



回復

使用道具 舉報

ID:142511 發表于 2016-10-12 21:29 | 顯示全部樓層
前排不懂 頂頂
回復

使用道具 舉報

ID:94642 發表于 2016-10-13 13:19 | 顯示全部樓層
恩,頂頂
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人精品视频 | 韩国av一区二区 | 最新免费黄色网址 | 日韩欧美亚洲综合 | www国产成人免费观看视频,深夜成人网 | 成人一区二区三区在线观看 | 国产精品久久久久久久久久免费看 | 在线视频一区二区三区 | 亚洲欧美中文日韩在线v日本 | 综合久久综合久久 | 亚洲高清视频在线观看 | 91精品一区| 国产美女精品视频 | 国产精品一区二区久久 | 91精品国产一区二区三区 | 一级aaaa毛片 | 亚洲视频免费在线看 | 九九热精品在线 | 久久久久久久一区 | 午夜影院 | 粉色午夜视频 | 98久久| 日日综合 | 亚洲欧美国产毛片在线 | 午夜免费网 | 欧美成人免费电影 | 激情五月综合 | 欧美亚洲一区二区三区 | 成年人国产在线观看 | 国产精品成人69xxx免费视频 | 婷婷久久五月 | 久久久爽爽爽美女图片 | 亚洲国产区| 成人av免费播放 | 精品99爱视频在线观看 | 国产精品久久久久久久久久 | 久久久久久网站 | 日韩国产一区二区三区 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 亚洲精品日韩一区二区电影 | 黄色一级大片视频 |