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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3689|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)定時(shí)器與串口中斷沖突

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
100黑幣
本帖最后由 Elilala 于 2021-3-25 10:00 編輯

使用PWM控制電機(jī)轉(zhuǎn)速,同時(shí)實(shí)時(shí)使用串口采集溫度。同時(shí)TR0=1,TR1=1時(shí)溫度采集出錯(cuò)。將TR0=1注釋掉后正確,但是無法控制電機(jī)轉(zhuǎn)速,只能啟動(dòng)。部分代碼如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "Delay.h"
  4. #include <ds18b20mul.h>
  5. #include <uart.h>
  6. #include "motor.h"
  7. #define uchar unsigned char
  8. #define uint unsigned int

  9. void delay(uint j)
  10. {
  11. uint x;
  12. for(x=0;x<j;x++);
  13. }        

  14. void uart(void) interrupt 4                 
  15. {
  16.         unsigned char recv_data
  17.         if(RI)  
  18.                 {
  19.                 RI=0;
  20. //                        revbuf[revlen]=SBUF
  21.                 recv_data = SBUF;           
  22.                 revbuf[revlen]=SBUF;
  23.                         if(revbuf[0]=='*'
  24.                         {
  25.                                 if((revlen<16)&&(revbuf[revlen]!='\r'))
  26.                                         revlen++;
  27.                                 else revover=1;
  28.                         }
  29. //                        else clearrevbuf();
  30.                         if(recv_data == '0'
  31.                         {                        
  32.                                 if(speedA>0)speedA-=2;
  33.                                 if(speedB>0)speedB-=2;
  34.                         }
  35.                         else if(recv_data == '1')
  36.                         {
  37.                                 if(speedA<=20)speedA+=2;
  38.                                 if(speedB<=20)speedB+=2;
  39.                         }                                 
  40.                         else if(recv_data == '2')
  41.                         {
  42.                                 motorA_forward();
  43.                                 motorB_forward();        
  44.                         }
  45.                         else if(recv_data == '3')
  46.                         {
  47.                                 motorA_reversal();
  48.                                 motorB_reversal();                                       
  49.                         }
  50.                         else if(recv_data == '4')
  51.                         {
  52.                                 speedA=20;
  53.                                 speedB=20;                                       
  54.                         }
  55.                         else if(recv_data == '5')
  56.                         {
  57.                                 speedA=10;
  58.                                 speedB=10;                                       
  59.                         }
  60.                 }
  61. //        else   
  62. //                {
  63. //                  TI=0;
  64. //                  //sending=0;
  65. //                }
  66.                 if(TI)
  67.                 {
  68.                         TI=0;
  69.                 }
  70.         }


  71. void main()
  72. {
  73. UARTinit()
  74. // motor_Init();
  75. while(1
  76. {
  77.            delay(500000)
  78.            GetData(1)
  79.            sendstring("*1:");
  80.            sendstring(dispBuf);sendstring("\r\n")
  81.            GetData(2); //
  82.            sendstring("*2:");
  83.            sendstring(dispBuf);sendstring("\r\n")
  84. }
  85. }
復(fù)制代碼







1616595601(1).jpg (288.24 KB, 下載次數(shù): 90)

1616595601(1).jpg

DS18B20.rar

117.12 KB, 下載次數(shù): 3

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:306086 發(fā)表于 2021-3-24 20:48 | 只看該作者
采用串口助手控制電機(jī)轉(zhuǎn)速與采集溫度。
2代表啟動(dòng),3反轉(zhuǎn),0加速,1減速,4停止,5復(fù)位。
回復(fù)

使用道具 舉報(bào)

板凳
ID:390416 發(fā)表于 2021-3-24 21:41 | 只看該作者
DS18B20是串口?你確定沒搞錯(cuò)?
回復(fù)

使用道具 舉報(bào)

地板
ID:306086 發(fā)表于 2021-3-24 21:47 | 只看該作者
將TMOD=0x21后能正確讀取溫度,并且可以控制風(fēng)扇轉(zhuǎn)速,可是溫度讀取會(huì)偶爾出現(xiàn)錯(cuò)誤。
回復(fù)

使用道具 舉報(bào)

5#
ID:306086 發(fā)表于 2021-3-25 09:28 | 只看該作者
人人學(xué)會(huì)單片機(jī) 發(fā)表于 2021-3-24 21:41
DS18B20是串口?你確定沒搞錯(cuò)?

更新了一下代碼。DS18B20讀到的數(shù)據(jù)通過串口發(fā)送給上位機(jī)。
回復(fù)

使用道具 舉報(bào)

6#
ID:811405 發(fā)表于 2021-3-25 16:03 | 只看該作者
串口實(shí)時(shí)發(fā)送溫度值給上位機(jī),每一次發(fā)送之間沒有時(shí)間間隔,當(dāng)上位機(jī)通過串口下發(fā)指令時(shí),串口被占用而產(chǎn)生錯(cuò)誤

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:390416 發(fā)表于 2021-3-25 16:14 | 只看該作者
串口的發(fā)送 不能擁擠,比如9600波特率 發(fā)一個(gè)字節(jié)需要1ms  那么 連續(xù)兩次寫入SBUF 時(shí)間間隔必須大于1040us 。 可以看看我發(fā)的貼子, 串口發(fā)送不需要while 死等。提高CPU效率。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品-久久精品 | 国产精品久久久久国产a级 欧美日韩国产免费 | 国产乱码精品一区二区三区忘忧草 | 国产999精品久久久影片官网 | 久久久99国产精品免费 | 欧美美女爱爱 | 中日韩欧美一级片 | 国产精品国产成人国产三级 | 亚洲国产精品一区二区三区 | 免费午夜电影 | 欧美一区二区在线 | 羞羞羞视频 | 在线免费看毛片 | 在线观看黄色电影 | 鸳鸯谱在线观看高清 | 欧美簧片 | 欧美日韩在线免费观看 | 国产精品一区二区在线播放 | 免费黄色片在线观看 | 精品国产乱码久久久久久久久 | 亚洲天堂一区二区 | 亚洲精品视频一区二区三区 | 精彩视频一区二区三区 | 日本亚洲一区 | 日韩一区精品 | 精品日韩一区二区 | 国产精品一区二区欧美黑人喷潮水 | 精品国产久 | 免费观看毛片 | 精品视频久久久久久 | h网站在线观看 | 99精品视频在线 | 皇色视频在线 | 欧美成人综合 | www日韩高清 | 久久99国产精一区二区三区 | 国产精品精品视频一区二区三区 | 欧美日韩国产一区二区三区 | www久久久| 久久久久免费观看 | 99久久免费精品视频 |