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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機串口程序,不清楚為什么出錯

[復制鏈接]
跳轉到指定樓層
樓主
這也是一次單片機練習,我是根據課上講的仿照寫的,但是出錯了,不清楚出錯點,請各位大佬給指點指點。

要求:計算機發送數據0x00~0x0F,一次發送一個數據,單片機接收后在1位共陽數碼管上顯示,并返回計算機一個信息,例如接收到0x00,返回一個0x80,接收0x01,返回0x81

單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char//宏定義非整型字符
#define uint unsigned int//宏定義整型字符
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管0~16段碼
uchar code sendbuf[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
0x8A,0x8B,0x8C,0x8D,0X8E,0X8F};//單片機返回數字
uchar dat;
void delay(uint a);
void uart();
void send(uchar byte);
/****主函數*****/
void main()
{   uart();
   while(1);
}
/*****串口方式初始化*******/
void uart()
{  SCON=0x50;//串口方式一,允許接收
    PCON=0x80; //波特率加倍
    TMOD=0x20; //T1定時方式2
    TH1=0xf3;
    TL1=0xf3;//4800b/s
    TR1=1;
    ES=1;
    EA=1;
}
/******中斷服務函數*****/
void rf()interrupt 4
{      RI=0;
       dat=SBUF;
       switch(dat)
       {case 0x00: SBUF=sendbuf[0]; P2=seg[0];break;
       case 0x01: SBUF=sendbuf[1]; P2=seg[1];break;
       default:break;
       }
        
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2023-10-28 18:44 | 只看該作者
哪里出錯了?是編譯失敗,還是執行錯誤,你不講清楚是不行的。
回復

使用道具 舉報

板凳
ID:1096616 發表于 2023-10-28 18:56 | 只看該作者
Hephaestus 發表于 2023-10-28 18:44
哪里出錯了?是編譯失敗,還是執行錯誤,你不講清楚是不行的。

抱歉,是我沒有形容準確,是沒有反饋,這個目的是希望輸出00,然后就返回80,接著數碼管燈亮,但現在在串口調試助手發送00,沒有返回值80,數碼管也不亮。

屏幕截圖 2023-10-28 185553.png (180.08 KB, 下載次數: 80)

屏幕截圖 2023-10-28 185553.png
回復

使用道具 舉報

地板
ID:213173 發表于 2023-10-28 21:19 | 只看該作者
  1. #include<reg52.h>
  2. #define uchar unsigned char//宏定義非整型字符
  3. #define uint unsigned int//宏定義整型字符
  4. uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管0~16段碼
  5. uchar code sendbuf[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
  6. 0x8A,0x8B,0x8C,0x8D,0X8E,0X8F};//單片機返回數字
  7. uchar dat;
  8. bit busy;
  9. bit flag;
  10. //void delay(uint a);
  11. void uart();
  12. void send(uchar byte);

  13. /****主函數*****/
  14. void main()
  15. {
  16.         uart();
  17.         while(1)
  18.         {
  19.                 if(flag)
  20.                 {
  21.                         flag=0;
  22.                         switch(dat)
  23.                         {
  24.                                 case 0x00: P2=seg[0]; break;
  25.                                 case 0x01: P2=seg[1]; break;
  26.                                 default:break;
  27.                         }
  28.                         while(busy);
  29.                         busy = 1;
  30.                         SBUF = sendbuf[dat];
  31.                 }
  32.         }
  33. }
  34. /*****串口方式初始化*******/
  35. void uart()
  36. {
  37.         SCON=0x50;//串口方式一,允許接收
  38.         PCON=0x80; //波特率加倍
  39.         TMOD=0x20; //T1定時方式2
  40.         TH1=0xf3;
  41.         TL1=0xf3;//4800b/s
  42.         TR1=1;
  43.         ES=1;
  44.         EA=1;
  45. }
  46. /******中斷服務函數*****/
  47. void rf()interrupt 4
  48. {
  49.         if (TI)
  50.         {
  51.                 TI = 0;
  52.                 busy = 0;
  53.         }
  54.         if (RI)
  55.         {
  56.                 RI = 0;
  57.                 dat = SBUF;
  58.                 flag=1;
  59.         }
  60. }
復制代碼
回復

使用道具 舉報

5#
ID:1096616 發表于 2023-10-29 08:36 | 只看該作者

我剛剛嘗試了你的方法,雖然是有返回值,但是返回值不對,而且數碼管也沒有亮起來。

屏幕截圖 2023-10-29 083402.png (415.88 KB, 下載次數: 68)

屏幕截圖 2023-10-29 083402.png

屏幕截圖 2023-10-29 083425.png (405.72 KB, 下載次數: 68)

屏幕截圖 2023-10-29 083425.png
回復

使用道具 舉報

6#
ID:213173 發表于 2023-10-29 10:52 | 只看該作者
深層次 發表于 2023-10-29 08:36
我剛剛嘗試了你的方法,雖然是有返回值,但是返回值不對,而且數碼管也沒有亮起來。


回復

使用道具 舉報

7#
ID:1096616 發表于 2023-10-29 16:34 | 只看該作者

我明白我的錯誤在哪里了,在串口調試助手處我應該選擇16進制發送的,這樣子就可以得到正確的返回值,謝謝大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级av毛片 | 日韩视频在线观看 | av在线免费观看网站 | 日韩午夜片 | 中文字幕综合 | 91操操操 | 黄色日批视频 | 日韩欧美精品一区 | 亚洲福利网 | 亚洲黄色影院 | 神马香蕉久久 | 一区二区三区网站 | 天天操网站 | 日本天堂在线观看 | 国内av在线 | 成人在线免费av | 日韩精品在线视频 | 久草资源站 | 六月丁香激情 | 国产日韩免费 | 在线播放国产精品 | 男人天堂av网 | 日韩精品视频免费播放 | 国产精品美女久久 | 国产精品视频免费在线观看 | 欧美成人黄色 | 青娱乐av| 亚洲www啪成人一区二区麻豆 | 欧美日韩国产在线观看 | 日韩在线小视频 | 毛片毛片毛片 | 91色国产 | 成人免费毛片aaaaaa片 | 一区二区三区久久 | 亚洲福利视频一区 | 91一区二区三区 | 天堂中文av | 国产777| 亚洲网站在线观看 | 欧美日韩久久久 | 国产亚洲欧美日韩高清 |