亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機串口發送數據為什么要先關串口中斷?發送數據與字符串有什么區別? [打印本頁]

作者: 不想12453    時間: 2018-5-10 10:03
標題: 單片機串口發送數據為什么要先關串口中斷?發送數據與字符串有什么區別?
第一個是單片機串口發送數據的程序  可是為什么需要先關串口中斷?發送完數據再開串口中斷呢??還有。!發送串口數據與發送字符串有什么區別呢?

單片機源碼:
  1. /*----------------------------
  2. UART1 發送串口數據
  3. -----------------------------*/
  4. void UART1_SendData(uchar dat)
  5. {
  6.         ES=0;                                        //關串口中斷
  7.         SBUF=dat;                           //將數據放入發送數據緩沖器中
  8.         while(TI!=1);        //等待發送成功                TI=1時表示一幀數據發送成功,要求CPU取走SBUF里的數據
  9.         TI=0;                                        //清除發送中斷標志        TI必須軟件清零
  10.         ES=1;                                        //開串口中斷
  11. }
  12. /*----------------------------
  13. UART1 發送字符串
  14. -----------------------------*/
  15. void UART1_SendString(char *s)
  16. {
  17.         while(*s)//檢測字符串結束符
  18.         {
  19.                 UART1_SendData(*s++);//發送當前字符
  20.         }
  21. }
復制代碼


作者: liunian17    時間: 2018-5-10 11:00
我知道的是,不需要關閉中斷的,中斷是為了接受數據而不是發送數據的。
發送數據和發送字符串是一樣的,字符串就是數據。只是發送只能一個一個字符去發,所以發送字符串要拆開來一個一個字符發
作者: wulin    時間: 2018-5-10 11:27
1.串口發送數據時不能被接收中斷干擾,所以要關閉串口接收中斷。
2.串口發送程序一次只能發送一個字節,如果要發送字符串,就要反復調用發送程序,直到發送完畢。
作者: top_行癲    時間: 2018-5-10 12:07
關串口中斷只是一種嚴謹的方式,其實不關你的程序應該也可以。其次字符串的發送跟字節本質上是一樣的,只不過是將字符串按一個個字節連續發送而已
作者: guo6339419    時間: 2018-5-10 15:02
是怕發送的過程中被接收中斷打斷吧
作者: zfgansuchina    時間: 2018-5-10 16:52
發送串口數據是指發送一個字節,每個字符是2個字節,因此發送字符串其實是發送2*n個字節
作者: yzwzfyz    時間: 2018-5-10 18:37
不知道是哪個高手老師教一招!
我是這樣做的:
1、將要發的數據統統放在一個緩沖區中,假設有N個字節。
2、打開中斷
3、發一個字節,發完后就干別的事了!之后,當這個字節發完后就產生了中斷。
4、在發送中斷處理程序中,判斷一下是否N個字節是否全發完了,未完就續發下一個字節,退出中斷服務程序。
5、退出后,又干別的事了!再之后,這個字節發完后就產生了中斷。
……4-5-4-5-4-5-……
自打開機初始化后,就沒有關過串口中斷。!




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1