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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

新手疑惑 關于C51單片機串口通訊的問題,挺急的在線等

查看數: 2537 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2018-7-31 23:08

正文摘要:

各位好,本人由于剛剛接觸51單片機,在學習串口通訊中遇到了困難, 問題是: 由串口助手輸入字符串后,再返回到串口助手上的字符串卻有丟失,丟失的特點為,間隔丟失。 自己的理解: 函數中有比較函數 ...

回復

ID:379876 發表于 2018-8-2 08:21
謝謝各位前輩給我的建議和熱心的解答!但是我的問題是為什么會出現這樣的情況以及解決方法,最佳答案只能給解決了這兩個問題的人哈。大家對我編程的建議我都應用在后續程序中了,使得邏輯更加清晰了,非常感謝!
ID:381546 發表于 2018-8-1 09:39
void intSIO() interrupt 4 using 2
{
    if(TI)
    {
        TI=OFF;
        if(bSD)
        {
        if(curSND<lenSND) SBUF=bufSND[curSND++];
       else {bSD=OFF;/*mSI=0;*/}}}
      if(RI){
         RI=OFF;
          bufRCV[putRCV++]=SBUF;
            putRCV &= 0X07;}
}
ID:379876 發表于 2018-8-1 07:38
那請問將發送寫入中斷后,如何觸發TI=1的條件呢?如果不能觸發TI=1就不能將數據寫入SBUF,而數據沒有寫入SBUF,就無法觸發TI=1的條件,這是個死循環啊。。。。。。 我的理解是這樣的
ID:375003 發表于 2018-8-1 01:22
象這樣寫.
void intSIO() interrupt 4 using 2
{
if(TI){
  TI=OFF;
  if(bSD){
   if(curSND<lenSND) SBUF=bufSND[curSND++];
   else {bSD=OFF;/*mSI=0;*/}}}
if(RI){
  RI=OFF;
  bufRCV[putRCV++]=SBUF;
  putRCV &= 0X07;}
}
ID:375003 發表于 2018-8-1 01:21
把發送也要寫到中斷里,不能這樣寫
ID:221865 發表于 2018-7-31 23:08
你的send_str函數里面已經在for循環里將i++了,然后你TI = 0;后依然i++。檢查一下。
void send_str(void)                        //發送接收到的字符串
{
    u8 i;
    for(i=0; i<10; i++)
    {
        TI = 0;
        SBUF=rec[i];
        while(!TI);
        TI = 0;
    }
}

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩亚洲一区 | 黄色免费av | 国产999精品久久久久久 | 最新中文字幕在线 | 国产精品久久久久久福利一牛影视 | 欧美日韩视频在线第一区 | 欧美成人一区二免费视频软件 | 国产sm主人调教女m视频 | 国产精品视频在 | 免费h在线 | a级网站| 夜久久 | 看一级毛片视频 | 国产精品区二区三区日本 | 欧美精品一区在线 | 国产精品视频网 | 爱综合| 亚洲人人 | 国产一区 | 久久大陆| 亚洲欧美日韩精品久久亚洲区 | 一区二区三区观看视频 | 成人免费小视频 | 久久久婷婷 | 九九综合九九 | 亚洲一区二区三区四区五区中文 | 中文字幕亚洲视频 | 国产精品国产亚洲精品看不卡15 | 国产成人av免费看 | 精品一区二区三区四区五区 | 在线看黄免费 | 亚洲免费人成在线视频观看 | 在线观看中文字幕dvd播放 | 国产精品久久久久久一区二区三区 | 亚洲精品丝袜日韩 | 91久久国产综合久久91精品网站 | 国产一区二区三区色淫影院 | 永久www成人看片 | 国产精品mv在线观看 | 亚洲成人99 | 夜夜骑综合 |