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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)串口和定時(shí)器0沖突了怎么辦?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:584919 發(fā)表于 2019-7-16 10:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char

  6. sbit up = P1^0;
  7. sbit down = P1^1;
  8. sbit thousand = P2^0;    //數(shù)碼管com與顯示數(shù)組
  9. sbit hundred = P2^1;
  10. sbit tan = P2^2;
  11. sbit one = P2^3;

  12. uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  13. uint frequency;    //電機(jī)上下的次數(shù),上升算一次,下降算一次
  14. uint num = 0;    //定時(shí)器計(jì)數(shù)

  15. void putin(uchar c)    ;     //串口輸出
  16. void ddelay(uint z);     //設(shè)置一秒
  17. void show(uint z);         //數(shù)碼管顯示數(shù)字


  18. void main()
  19. {
  20.     uint q = 0;
  21.     frequency = 0;
  22.     up = 0;
  23.     down = 1;

  24.     TMOD = 0x21;    //定時(shí)器1方式2  定時(shí)器0方式1
  25.     TH0  = (65536-45872)/256; //裝初值11.0592M晶振定時(shí)50ms數(shù)為45872
  26.     TL0  = (65536-45872)%256;   
  27.     TH1  = 0xf4;    //裝載初值
  28.     TL1  = 0xf4;
  29.    
  30.     SCON = 0x50;    //串口方式1
  31.     PCON = 0x00;    //不倍增
  32.    
  33.     EA     = 1;        //打開全局中斷
  34.     ES     = 1;        //打開串口中斷
  35.     ET0  = 1;         //打開定時(shí)器0中斷
  36.     TR0  = 1;        //打開定時(shí)器0,開始計(jì)時(shí)
  37.     TR1  = 1;        //打開定時(shí)器1,用于串口通信   

  38.     while(1)
  39.     {
  40.         if(num == 20) //如果到了20次,說明1秒時(shí)間
  41.         {
  42.             q++;         
  43.             num=0;
  44.         
  45.             if(q == 3) //每3秒串口發(fā)送數(shù)據(jù)
  46.             {
  47.                 up = ~up;        //指示燈
  48.                 down = ~down;
  49.                 frequency++;
  50.                 q = 0;            //重置時(shí)間
  51.                 putin(0xff);
  52.             }
  53.         }
  54.         putin(0xfe);
  55.         show(frequency);
  56.     }
  57. }



  58. void ddelay(uint z)  //設(shè)置一秒
  59. {

  60.     unsigned char h, i, j, k, l;

  61.     for (l = z; l > 0; l--)
  62.     for (h = 5; h > 0; h--)
  63.     for (i = 4; i > 0; i--)
  64.     for (j = 116; j > 0; j--)
  65.     for (k = 214; k > 0; k--);
  66. }

  67. void putin(uchar c)        //串口輸出
  68. {
  69.      SBUF = c;
  70.     while(TI == 0);
  71.     TI = 0;
  72. }

  73. void show(uint z) //數(shù)碼管顯示數(shù)字
  74. {
  75.     uchar i,j,k,l;
  76.     i = z/1000;
  77.     j = (z%1000)/100;
  78.     k = (z%100)/10;
  79.     l = z%10;
  80.    
  81.     P0 = 0xff;
  82.     P0 = table[i];
  83.     thousand = 0;
  84.     thousand = 1;
  85.    
  86.     P0 = 0xff;
  87.     P0 = table[j];
  88.     hundred  = 0;
  89.     hundred  = 1;
  90.    
  91.     P0 = 0xff;
  92.     P0 = table[k];
  93.     tan = 0;
  94.     tan = 1;
  95.    
  96.     P0 = 0xff;
  97.     P0 = table[l];
  98.     one = 0;
  99.     one = 1;
  100. }

  101. void T0_time()interrupt 1    //定時(shí)器0中斷
  102. {
  103.     TH0=(65536-45872)/256; //重新裝載初值
  104.     TL0=(65536-45872)%256;
  105.     num++;
  106. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2019-7-16 13:41 | 只看該作者
T0中斷優(yōu)串口中斷,串口中斷時(shí)間間隔是一個(gè)字節(jié)的串轉(zhuǎn)并時(shí)間,相對來說是較長的。只有T0的中斷服務(wù)程序運(yùn)行時(shí)間,小于串口的“一個(gè)字節(jié)的串轉(zhuǎn)并時(shí)間”,串口是不會(huì)丟數(shù)據(jù)的。
解決的方案是:
兩種中斷的服務(wù)程序盡可能用時(shí)少。
回復(fù)

使用道具 舉報(bào)

板凳
ID:7485 發(fā)表于 2019-7-16 17:40 | 只看該作者
串口別用循環(huán)等待,也用中斷方式。如果一個(gè)字節(jié)還沒發(fā)送或接收完,這時(shí)產(chǎn)生了定時(shí)器中斷,有可能會(huì)影響到串口發(fā)送和接收。需要根據(jù)需要設(shè)置中斷優(yōu)先權(quán)。

11.0592的晶振的初裝值不對啊應(yīng)該是65536-46080    就是(11.0592/12)*50000=46080
回復(fù)

使用道具 舉報(bào)

地板
ID:585414 發(fā)表于 2019-7-16 21:59 | 只看該作者
可以在進(jìn)入串口的子程里面把總中斷給關(guān)了,快出去了再開,被定時(shí)器打斷會(huì)出好多亂碼
回復(fù)

使用道具 舉報(bào)

5#
ID:123289 發(fā)表于 2019-7-17 10:43 | 只看該作者
地板的方式是錯(cuò)誤的,沙發(fā)OK。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九免费视频 | 天天综合国产 | 国产成人精品a视频一区www | 国产亚洲成av人片在线观看桃 | 亚洲欧美在线观看 | 欧美黑人又粗大 | 性网站免费 | 欧美九九 | 国产精品久久久久久久毛片 | 国产一区二区精品在线观看 | zzzwww在线看片免费 | 成人性视频在线播放 | 国产在线观看不卡一区二区三区 | 91精品国产综合久久久亚洲 | 国产亚洲精品久久久久动 | 国产一二三区在线 | 九一在线观看 | 国产精品高潮呻吟久久 | 亚洲一区二区三区免费在线观看 | 午夜一区 | 中文字幕一页二页 | 国产精品免费福利 | 国产日韩欧美精品 | 国产成人精品免高潮在线观看 | 81精品国产乱码久久久久久 | 中文字幕在线观看精品 | 高清视频一区二区三区 | 青青久草 | 99资源站| 精品免费国产一区二区三区四区 | 日本精品视频 | 中文字幕亚洲精品 | 亚洲天堂一区 | 日韩中文字幕 | 精品久久一区 | 欧美bondage紧缚视频 | 久久最新 | 丝袜 亚洲 欧美 日韩 综合 | 99这里只有精品视频 | h视频网站在线观看 | 欧美精品久久 |