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

標題: 求PC與89C51單片機之間的串行通信(PC發送,單片機接收,,接收數值) [打印本頁]

作者: a838036398    時間: 2019-4-9 20:28
標題: 求PC與89C51單片機之間的串行通信(PC發送,單片機接收,,接收數值)
接收數值要賦給一個變量,這個變量時用來控制舵機pwm波占空比的,求大佬們解答這段串口通信程序怎么編?

作者: a838036398    時間: 2019-4-9 20:39
控制雙舵機,所以需要輸入兩個變量0.0,我覺得應該和一個變量差不多吧
作者: wulin    時間: 2019-4-10 06:27
a838036398 發表于 2019-4-9 20:39
控制雙舵機,所以需要輸入兩個變量0.0,我覺得應該和一個變量差不多吧

串口每次只能傳輸1個字節,如果沒有使用自定義協議傳輸數據串,只是用簡單的單字節傳輸兩個變量,可以用一個字節的高4位和低4位各表示一個變量。如收到0xab,高4位分解為x=0xab>>4; 低4位分解為 y=0xab&0x0f;
作者: a838036398    時間: 2019-4-10 13:19
wulin 發表于 2019-4-10 06:27
串口每次只能傳輸1個字節,如果沒有使用自定義協議傳輸數據串,只是用簡單的單字節傳輸兩個變量,可以用 ...

大佬,具體應該怎么寫呢?怎么定義這個變量,“uchar (隨機寫)=0xab”嗎?然后在主函數里提取x=。。。y=。。。這樣嗎?不好意思,小白給大佬添麻煩了

作者: a838036398    時間: 2019-4-10 13:22
wulin 發表于 2019-4-10 06:27
串口每次只能傳輸1個字節,如果沒有使用自定義協議傳輸數據串,只是用簡單的單字節傳輸兩個變量,可以用 ...

大佬那具體怎么寫呢,是uchar 。。=0xab,然后再主函數中用你說的x=。。y=。。。提取高四位第四位這樣嗎?小白給大佬添麻煩了
作者: wulin    時間: 2019-4-11 08:12
a838036398 發表于 2019-4-10 13:22
大佬那具體怎么寫呢,是uchar 。。=0xab,然后再主函數中用你說的x=。。y=。。。提取高四位第四位 ...

給你寫一個示例程序,兩種數據解析方案任選一種。輸出端口可以自行重新定義。


  1. #include <AT89X52.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit LED1=P1^0;
  5. sbit LED2=P1^1;

  6. bit flag;                                //接收完成標志,
  7. uchar num,num1,num2;        //接收/分解的變量

  8. void main()                                                       
  9. {
  10.         PCON &= 0x7F;                //波特率不倍速
  11.         SCON = 0x50;                //8位數據,可變波特率
  12.         TMOD|= 0x20;                //設定定時器1為8位自動重裝方式
  13.         TL1 = 0xFD;                        //設定定時初值
  14.         TH1 = 0xFD;                        //設定定時器重裝值
  15.         TR1 = 1;                        //啟動定時器1
  16.         ET1 = 0;                        //禁止定時器1中斷
  17.         EA = 1;                                //開總中斷
  18.         ES = 1;                                //開串口中斷
  19.         while(1)
  20.         {
  21.                 if(flag==1)                //接收完成標志為1
  22.                 {
  23.                         ES=0;                //關串口中斷
  24.                         flag=0;                //接收完成標志清0
  25.                         SBUF=num;        //返回PC收到的數據
  26.                         while(!TI);        //等待發送中斷請求標志位為1
  27.                         TI=0;                //發送中斷請求標志位清0
  28.                         ES=1;                //開串口中斷
  29.         /*************數據解析方案一************/
  30.                         num1=num&0xf0;
  31.                         num2=num&0x0f;
  32.                         if(num1==0xa0)LED1=0;
  33.                         if(num1==0xb0)LED1=1;
  34.                         if(num2==0x0a)LED2=0;
  35.                         if(num2==0x0b)LED2=1;
  36.         /*************數據解析方案二************/
  37. /*                        num1=num>>4;
  38.                         num2=num&0x0f;
  39.                         if(num1==0x0a)LED1=0;
  40.                         if(num1==0x0b)LED1=1;
  41.                         if(num2==0x0a)LED2=0;
  42.                         if(num2==0x0b)LED2=1;
  43. */
  44.                 }
  45.         }
  46. }

  47. void ser() interrupt 4
  48. {                                //當接收完成發生中斷請求RI由硬件置1
  49.         RI=0;                //接收中斷請求標志位必須軟件清0
  50.         num=SBUF;        //獲取SBUF接收到的數據
  51.         flag=1;                //接收完成標志置1
  52. }
復制代碼




作者: zyi    時間: 2019-4-11 10:25
按串口的協議持續將變量寫入舵機
作者: a838036398    時間: 2019-4-11 10:26
wulin 發表于 2019-4-11 08:12
給你寫一個示例程序,兩種數據解析方案任選一種。輸出端口可以自行重新定義。

非常感激,謝謝帶佬




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 毛片久久久 | 国产三级电影网站 | 亚洲精品久久久蜜桃网站 | 精品一区二区久久久久久久网站 | a国产视频 | 一级毛片免费 | 欧美美女二区 | 免费精品 | 九九热在线视频 | 日韩不卡一区二区 | 国产在线播 | 国产精品区二区三区日本 | 色资源在线视频 | 国产一区二区三区视频 | 日韩免费网站 | 国产视频日韩 | 九九精品久久久 | 日韩精品一区二区三区中文在线 | 国产精品国产成人国产三级 | 天堂素人约啪 | 欧美日韩国产精品一区 | 亚洲精品久久久久久国产精华液 | 在线观看欧美一区 | 正在播放一区二区 | 99这里只有精品视频 | 久久久国产精品一区 | 一级黄在线观看 | 欧美性一区二区三区 | www.国产| 麻豆久久久久久 | 在线国产一区二区 | 午夜影院在线播放 | 在线观看免费av网站 | 91久久久久久 | 精品亚洲一区二区三区 | 91精品在线播放 | 日韩精品一区二区三区在线播放 | 女人av | 国内精品久久影院 | 久久性色 | 超碰免费在线 |