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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1402|回復: 1
打印 上一主題 下一主題
收起左側

單片機串口定時中斷超時接收 附源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:948358 發表于 2022-6-5 13:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
借助T0定時器,不斷的計數+1
    接收到一幀數據(1Byte)后,串口中斷服務函數將定時器T0計數清0(類似喂狗),并創建一個計數標志
    一幀數據(1Byte)長度約為1.04ms[9600bps,1,0,1]。當串口中斷數據接收完畢后,短時間無有效數據接收并進入中斷服務函數,此時T0計數器不被清0,不斷累加
    持續檢測到大于固定時間時,認為此刻一串數據已傳輸完畢。
    固定時間間隔一般設置3-5倍的一幀數據長度(1.04ms)

UART中斷服務函數處理:
    接收到一個字節,打開T0計數軟件標志,清一次計數器(計數器在T0定時器中一直在+1)
  1. void uart_ISR() interrupt 4
  2. {               
  3.         if(RI)
  4.         {
  5.                 RI = 0;
  6.                 timer_start = 1;                        //1. 接收到一幀數據時,打開T0軟件計數器開始計數
  7.                 recv_buf[recv_Cnt] = SBUF;
  8.                 recv_Cnt++;               
  9.                 if(recv_Cnt >= MAX_LENGTH)                //超出開辟數組的保護處理,剩余掐斷
  10.                 {
  11.                         recv_Cnt = MAX_LENGTH;
  12.                 }
  13.                 ctimer_Cnt = 0;                                //3. 一幀數據接收完成后,將T0計數單元清0,類似喂狗。但T0一直累加        
  14.         }
  15. }
復制代碼

T0定時中斷服務函數處理:
接收到串口一個字節數據到達標志,開始計數+1。判斷計數累計循環次數,確定一串數據已發送完成

  1. void Timer0_ISR() interrupt 1
  2. {        
  3.         TR0 = 0;        //進T0中斷首先關閉定時器
  4.         if(timer_start)
  5.         {
  6.                 ctimer_Cnt++;                                        //2. 接收到一幀數據后,定時時間計數單元開始計數
  7.                 if(ctimer_Cnt > MAX_RECV_TIME)                //4. 一串數據接收完成后,下一幀無數據,此時ctimer_Cnt一直被累加,
  8.                 {                                                                        // 當計時大于3ms,認為一串數據已接收完成,將完成標志置1
  9.                         ctimer_Cnt = 0;                        
  10.                         recv_flag = 1;
  11.                         cRealLen = recv_Cnt;        //5. 一串數據傳輸完畢后,將實際長度輸出,生成數組recv_buf[],由主函數處理解析                                
  12.                         recv_Cnt = 0;                                       
  13.                 }
  14.         }               
  15.         TL0 = 0x66;                //裝初值
  16.         TH0 = 0xFC;
  17.         TR0 = 1;                //打開定時器T0
  18. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:390416 發表于 2022-6-6 10:50 | 只看該作者
單片機發送到串口助手,以及串口助手顯示到LCD1602
http://www.zg4o1577.cn/bbs/dpj-214747-1.html
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久精品免费看国产高清 | 国产一区二区三区四区hd | 黄色大片观看 | 精品区一区二区 | 一区二区在线 | 99re国产 | 好婷婷网| 国产亚洲一区二区在线观看 | 天天干天天谢 | 888久久久| 男女污网站 | 蜜桃在线视频 | 国产精品一区二区三区四区 | 国产一二区免费视频 | 欧美日韩成人在线 | 欧美精三区欧美精三区 | 亚洲欧美激情精品一区二区 | 91精品综合久久久久久五月天 | 91视频网址 | se婷婷| 亚洲国产aⅴ成人精品无吗 综合国产在线 | 91亚洲国产亚洲国产 | 国产成人精品一区二区三区 | 国产一区在线免费观看视频 | 日韩电影免费观看中文字幕 | 天天爽夜夜操 | 午夜免费福利电影 | 欧美精品在线播放 | 欧美国产精品一区二区三区 | 亚洲高清在线 | 亚洲欧美一区二区三区国产精品 | 五月天婷婷久久 | 久久夜夜 | 高清黄色毛片 | 亚洲午夜三级 | 成人欧美一区二区 | 久久精品免费观看 | 欧美成人精品 | 怡红院成人在线视频 | 亚洲精品乱码久久久久久蜜桃91 | 色爱综合网 |