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

標題: 單片機串口數據接收程序問題 [打印本頁]

作者: YXLlll    時間: 2023-1-20 17:51
標題: 單片機串口數據接收程序問題
想要實現串口從上位機接收到的數據一個一個存入數組中,
但是經過測試,數據只能存到數組的第一位中,而且RI=0所在位置不同,存入內容長短不同


void UART1_Isr() interrupt 4
{
        if(RI==1)
        {
                Data=SBUF;
                if(Data!='\0')
                {Sbuf[i++]=Data;}
               
                uart_send(Sbuf[0]);
                uart_string(Sbuf);RI=0;


作者: chenbingjy    時間: 2023-1-21 20:11
你的程序不完整。而且發送的程序不要在中,有可能造成數據沒發送完又收到新的數據,會丟數據。
中斷只負責把數據送人緩沖區,其他處理在主函數。
作者: Hephaestus    時間: 2023-1-23 11:18
代碼不全無法分析,i怎么定義的,代碼后面如何處理i的?
作者: 名字不是重點    時間: 2023-1-26 18:01
Sbuf[i++],,這個i是全局變量,該不會是被其它函數修改了吧?
全局變量最好能起個有意義的、個性的名字,不然有可能會被誤操作,我看用rxd_count就不錯
接收數據的數組Sbuf,盡量不要用系統關鍵字SBUF,雖然KEIL大小寫不一樣,你無法保證會不會被誤操作,你看rxd_arr[]如何?
起名字是個學問~~好聽、好拼寫、還要有意義,英文簡寫或漢語拼音都可以啊。不用這么懶吧?
作者: Y_G_G    時間: 2023-2-9 23:58
當初學ModBus的時候寫的,代碼不怎么好,但也算是正確,你參考一下
void Uart1_Isr() interrupt 4                                                //串口1中斷函數
{
        static unsigned RX_Count=0;                                                //接收到的字節數
        if(TI)                                                                                          //發送中斷
                   {                          
                         TI=0;                                          
                        busy=0;                  
                }
        //────────────────────────────────────────────────────
        if(RI)                                                                                        //接收中斷
                {       
                        RI=0;                                               
                        if((New_Cmd))                                                        //新命令
                           {
                                        New_Cmd=0;                                                //新命令標志位清除       
                                        TR0 = 1;                                                //接收到串口信號后,定時器0開始計時       
                                        RX_Count=0;                                                //重新指定指針位置
                                        Buffer0.cnt_Byte=0;                                //接收字節數清除                                                                       
                                }
                        Buffer0.buf_uart[RX_Count]=SBUF;                //把接收到的數據保存
                        RX_Count++;                                                                //數組指針加1
                        Buffer0.cnt_Byte++;                                                //接收字節數+1
                        T0_1ms_uart=0;                                                        //接收完一個字節數據,重新計時                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                }
        //───────────────────────────────────────────────────────────                                                       
}






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 免费在线成人 | 久久一二区 | 国产特黄一级 | 毛片软件 | 国产精品久久久久久久久久久久久 | 中文字幕日韩一区 | 日韩在线一区二区 | 国产精品海角社区在线观看 | 欧美成人一区二区三区片免费 | 日韩视频一区 | 久久精品国产a三级三级三级 | 欧美在线a | 超碰免费在线观看 | 妞干网av| 国产一区欧美 | 超碰在线免费av | 亚洲综合成人网 | 国产偷自视频区视频 | 你懂的免费在线 | 国产精品一二区 | 日皮视频免费 | 欧美精品一二三 | 亚洲国产成人精品女人久久久 | 香蕉视频在线播放 | 2018中文字幕第一页 | 成人精品免费视频 | 国产一级毛片视频 | 日韩av手机在线观看 | 91精品国产欧美一区二区 | 91精品一区二区三区久久久久 | 久草综合在线视频 | 久久亚| 国产99久久精品一区二区永久免费 | 欧美一区二区三区视频在线观看 | 亚洲精品丝袜日韩 | 国产精品久久 | 国产精品久久久久久久久久免费看 | 黄色片网站国产 | 欧美黑人一级爽快片淫片高清 | 成人免费视频观看 |