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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機串口流水燈時間問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:100982 發表于 2021-10-9 14:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
現在串口發送一個1 流水燈時間按道理應該是1s 一個啊,實際很快,奇怪了,頭大了

單片機源程序如下:
  1. #include <reg52.h>

  2. void config_uart(unsigned int baud);
  3. void config_time0(unsigned char ms);
  4. void ledscan();

  5. unsigned char code ledchar[] = { 0xfc,0xc,0xda,0xf2,0x66,0xb6,0xbe,0xe0,
  6.                                                                       0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e };
  7. unsigned char ledbuf[] = {0x00,0x00};

  8. unsigned char rxd = 0;
  9. unsigned char th0 = 0;
  10. unsigned char tl0 = 0;
  11. unsigned char flag = 0;

  12. int main()
  13. {
  14.         unsigned char tmp = 0x01;
  15.         EA = 1;

  16.         config_time0(1);
  17.         config_uart(9600);
  18.       
  19.         P0 = 0x00;

  20.         while(1)
  21.         {               
  22.                 if( flag )
  23.                 {
  24.                         P0 = rxd;
  25.                         flag = 0;
  26.                         rxd <<= 1;
  27.                         if(rxd == 0x80)
  28.                         {
  29.                                 rxd = 0x01;
  30.                         }
  31.                 }
  32.                
  33.         }
  34.         return 0;
  35. }

  36. void config_time0(unsigned char ms)
  37. {
  38.         TL0 = 0x66;               
  39.         TH0 = 0xFC;

  40.         TMOD &= 0xf0;
  41.         TMOD |= 0x01;

  42.         ET0 = 1;
  43.         TR0 = 1;
  44. }

  45. void config_uart(unsigned int baud)
  46. {
  47.         SCON = 0x50;
  48.         TMOD &= 0xf0;
  49.         TMOD |= 0x20;

  50.         TH1 = 256 - (11059200/12/32)/baud;
  51.         TL1 = TH1;

  52.         ES = 1;
  53.         ET1 = 0;
  54.         TR1 = 1;
  55. }

  56. void interrupt0() interrupt 1
  57. {
  58.         static unsigned long tmp = 0;

  59.         TL0 = 0x66;               
  60.         TH0 = 0xFC;
  61.                
  62.         tmp++;
  63.         if(tmp >= 1000)
  64.         {
  65.                 flag = 1;
  66.                 tmp = 0;
  67.       
  68.         }      
  69. }

  70. void uart() interrupt 4
  71. {
  72.         if(RI)
  73.         {
  74.                 RI = 0;
  75.                 rxd = SBUF;
  76.                 SBUF = rxd;      
  77.         }
  78.         if(TI)
  79.         {
  80.                 TI = 0;
  81.         }      

  82. }
復制代碼


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

使用道具 舉報

沙發
ID:624769 發表于 2021-10-9 15:45 | 只看該作者
              if( flag )
                {
                        P0 = rxd;
                        flag = 0;
                        rxd <<= 1;
                        if(rxd == 0x80)
                        {
                                rxd = 0x01;
                        }
                }
這里有個 邏輯問題,
rxd  是 SBUF 賦值獲得,
如果 SBUF  是 0x80
那么,你這個主程序里面  P0 = 0x80 之后
后面移位rxd 就 變成了 0x00
下面的 if 也不會 執行,燈就徹底滅了。

然后很快的問題,應該是定時器設定問題吧。
回復

使用道具 舉報

板凳
ID:100982 發表于 2021-10-9 16:21 | 只看該作者
188610329 發表于 2021-10-9 15:45
if( flag )
                {
                        P0 = rxd;

先不考慮這個,因為我只給值1  定時器我看了,沒有問題啊
回復

使用道具 舉報

地板
ID:624769 發表于 2021-10-9 16:32 | 只看該作者
wifen 發表于 2021-10-9 16:21
先不考慮這個,因為我只給值1  定時器我看了,沒有問題啊

這樣吧,既然暫時找不出問題。就多做實驗。

比如:        static unsigned long tmp = 0;
把這句,去掉 static, 把  long 變成 short 然后放到  第10行,或者第15行?
回復

使用道具 舉報

5#
ID:624769 發表于 2021-10-9 16:36 | 只看該作者
找到了,

void config_uart(unsigned int baud)
{
        SCON = 0x50;
        TMOD &= 0xf0;                <==  這里錯了, 應該:  TMOD &= 0x0f;
        TMOD |= 0x20;

所以,你定時器都亂了。
回復

使用道具 舉報

6#
ID:100982 發表于 2021-10-11 08:27 | 只看該作者
188610329 發表于 2021-10-9 16:36
找到了,

void config_uart(unsigned int baud)

哈,感謝,確實是這個問題,解決了,謝謝,太粗心了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久一精品 | 91在线视频免费观看 | 五月激情综合网 | 日本精品久久久一区二区三区 | 人人叉| 成人精品久久 | 日韩有码一区 | 91久久国产综合久久 | 久久里面有精品 | 在线视频中文字幕 | 成人在线视频网 | 在线观看视频一区二区三区 | 精品国产乱码久久久久久丨区2区 | 久久久久久国产精品免费免费男同 | 欧美黑人一级爽快片淫片高清 | 国产福利在线视频 | 视频一区二区中文字幕 | 亚洲视频www | 日一区二区 | 久久久久久国产精品 | 日日夜夜天天 | 成人精品鲁一区一区二区 | 天天干狠狠| 欧美成人综合 | 精品一区国产 | 国产精品视频久久久 | 一区二区三区欧美 | av黄色免费 | 天天操网 | 久久久91精品国产一区二区三区 | 精品久久一区 | 亚洲免费观看视频网站 | 免费在线观看一级毛片 | 国产不卡一区 | 欧美综合国产精品久久丁香 | 日韩午夜 | 蜜桃免费一区二区三区 | www.中文字幕.com| 粉嫩一区二区三区性色av | 成人精品国产一区二区4080 | 国产精品欧美一区二区 |