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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求解,為什么我單片機定時函數沒有用呢?

[復制鏈接]
跳轉到指定樓層
樓主
我定時50MS,數碼管顯示+1. 但是仿真時,延遲函數卻沒有用上,這是怎么回事呢?
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit WE=P2^0;
  6. sbit DU=P2^1;
  7. sbit S1=P3^4;
  8. sbit S2=P3^5;
  9. uchar num,i,jia;
  10. uint Q,W,E,R;
  11. uchar code         duan[]={
  12.                             0x3F,  //"0"
  13.                 0x06,  //"1"
  14.                 0x5B,  //"2"
  15.                 0x4F,  //"3"
  16.                 0x66,  //"4"
  17.                 0x6D,  //"5"
  18.                 0x7D,  //"6"
  19.                 0x07,  //"7"
  20.                 0x7F,  //"8"
  21.                 0x6F,  //"9"
  22.                 0x77,  //"A"
  23.                 0x7C,  //"B"
  24.                 0x39,  //"C"
  25.                 0x5E,  //"D"
  26.                 0x79,  //"E"
  27.                 0x71,  //"F"
  28.                 0x76,  //"H"
  29. };
  30. void fangdou()
  31. {
  32.         uint a;
  33.          for(a=0;a<2400;a++);
  34. }
  35. void delay(uint z)
  36. {
  37.         uint x,y;
  38.         for(x=z;x>0;x--)
  39.                 for(y=120;y>0;y--);
  40. }
  41. void display()
  42. {       
  43.         if(i>0&&!i<9)
  44.         {
  45.         WE=1;
  46.         P0=0xfe;
  47.         WE=0;
  48.        
  49.         P0=duan[i%10];
  50.         DU=1;
  51.         DU=0;
  52.         delay(1);
  53.         }

  54.         if(i>10&&!i<99)
  55.         {
  56.                 WE=1;
  57.                 P0=0xfc;
  58.                 WE=0;

  59.                 P0=duan[i%100/10];
  60.                 DU=1;
  61.                 DU=0;
  62.                 delay(1);
  63.         }

  64.         if(i>100&&!i<999)
  65.         {
  66.                 WE=1;
  67.                 P0=0xf8;
  68.                 WE=0;

  69.                 P0=duan[i%1000/100];
  70.                 DU=1;
  71.                 DU=0;
  72.                 delay(1);
  73.         }

  74.                 if(i>1000&&!i<9999)
  75.         {
  76.                 WE=1;
  77.                 P0=0xf0;
  78.                 WE=0;

  79.                 P0=duan[i/1000];
  80.                 DU=1;
  81.                 DU=0;
  82.                 delay(1);
  83.         }

  84. }
  85. void timer0_init()
  86. {
  87.         TMOD=0x01;
  88.         TL0=(65536-50000)%256;
  89.         TH0=(65536-50000)/256;
  90.         TR0=1;
  91. }
  92. void main()
  93. {
  94.         timer0_init();
  95.         while(1)
  96.         {
  97.         if(TF0==1)
  98.         {
  99.                 TF0=0;
  100.                 TL0=(65536-50000)%256;
  101.                 TH0=(65536-50000)/256;
  102.                 num++;
  103.         }
  104.         if(num==20)
  105.                 num=0;
  106.                 i++;
  107.                 display();
  108.                 if(i>9999)
  109.                           i=0;
  110.                
  111. }
  112. }
  113.        
復制代碼



單片機.png (107.59 KB, 下載次數: 47)

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

使用道具 舉報

沙發
ID:25310 發表于 2019-11-25 14:29 | 只看該作者
EA 沒打開吧!
回復

使用道具 舉報

板凳
ID:625113 發表于 2019-11-25 15:20 來自手機 | 只看該作者
總中斷沒打開,初始化那里沒看到有
回復

使用道具 舉報

地板
ID:213173 發表于 2019-11-25 15:36 | 只看該作者
動態數碼管顯示不能像你這樣寫,定時時間太長了,會出錯。給你改了。
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit WE=P2^0;
  6. sbit DU=P2^1;
  7. sbit S1=P3^4;
  8. sbit S2=P3^5;
  9. uchar i,j;
  10. uint num,Q,W,E,R;
  11. uchar code duan[]={
  12.     0x3F,  //"0"
  13.     0x06,  //"1"
  14.     0x5B,  //"2"
  15.     0x4F,  //"3"
  16.     0x66,  //"4"
  17.     0x6D,  //"5"
  18.     0x7D,  //"6"
  19.     0x07,  //"7"
  20.     0x7F,  //"8"
  21.     0x6F,  //"9"
  22.     0x77,  //"A"
  23.     0x7C,  //"B"
  24.     0x39,  //"C"
  25.     0x5E,  //"D"
  26.     0x79,  //"E"
  27.     0x71,  //"F"
  28.     0x76,  //"H"
  29. };
  30. /*
  31. void fangdou()
  32. {
  33.         uint a;
  34.         for(a=0;a<2400;a++);
  35. }
  36. void delay(uint z)
  37. {
  38.         uint x,y;
  39.         for(x=z;x>0;x--)
  40.                 for(y=120;y>0;y--);
  41. }*/
  42. void display()
  43. {        
  44.         P0=0x00;//消隱
  45.         DU=1;
  46.         DU=0;
  47.         if(j==0)
  48.         {
  49.                 P0=0xfe;
  50.                 WE=1;
  51.                 WE=0;
  52.                 P0=duan[i/1000%10];
  53.                 DU=1;
  54.                 DU=0;
  55.         }
  56.         if(j==1)
  57.         {
  58.                 P0=0xfd;
  59.                 WE=1;
  60.                 WE=0;
  61.                 P0=duan[i/100%10];
  62.                 DU=1;
  63.                 DU=0;
  64.         }
  65.         if(j==2)
  66.         {
  67.                 P0=0xfb;
  68.                 WE=1;
  69.                 WE=0;
  70.                 P0=duan[i/10%10];
  71.                 DU=1;
  72.                 DU=0;
  73.         }
  74.         if(j==3)
  75.         {
  76.                 P0=0xf7;
  77.                 WE=1;
  78.                 WE=0;
  79.                 P0=duan[i%10];
  80.                 DU=1;
  81.                 DU=0;
  82.         }
  83.         j++;
  84.         if(j==4)
  85.                 j=0;
  86. }
  87. void timer0_init()
  88. {
  89.         TMOD=0x01;
  90.         TL0=(65536-2000)%256;
  91.         TH0=(65536-2000)/256;
  92.         TF0=0;
  93.         TR0=1;
  94. }
  95. void main()
  96. {
  97.         timer0_init();
  98.         while(1)
  99.         {
  100.                 if(TF0==1)
  101.                 {
  102.                         TF0=0;
  103.                         TL0=(65536-2000)%256;
  104.                         TH0=(65536-2000)/256;
  105.                         num++;
  106.                         if(num>=500)
  107.                         {
  108.                                 num=0;
  109.                                 i++;
  110.                                 if(i>9999)
  111.                                         i=0;        
  112.                         }
  113.                         display();
  114.                 }
  115.         }
  116. }
  117.       
復制代碼
回復

使用道具 舉報

5#
ID:302973 發表于 2019-11-25 16:27 | 只看該作者
wulin 發表于 2019-11-25 15:36
動態數碼管顯示不能像你這樣寫,定時時間太長了,會出錯。給你改了。

我這么寫的原因是因為想要1個數碼管顯示個位,隨后顯示10位的時候才會打開第二個數碼管。直到千位的時候才會全部打開4個數碼管。 我也初學者,自己琢磨著搞
回復

使用道具 舉報

6#
ID:400014 發表于 2019-11-25 16:30 | 只看該作者
void timer0_init()
{
        TMOD=0x01;
        TL0=(65536-2000)%256;
        TH0=(65536-2000)/256;
        TF0=0;
        TR0=1;
}


這段函數少了兩個,一個是函數名后面還要跟一個 interrupt 0   ,還有一個是函數體里沒有EA=1 打開總開
回復

使用道具 舉報

7#
ID:302973 發表于 2019-11-25 16:31 | 只看該作者
luozhao 發表于 2019-11-25 15:20
總中斷沒打開,初始化那里沒看到有

我EA=1; 后面寫了,但是依然沒有用。  定時器不延遲,只有delay才有延遲效果。
回復

使用道具 舉報

8#
ID:644988 發表于 2019-11-25 16:49 | 只看該作者
void timer0_init()
{
        TMOD=0x01;
        TL0=(65536-50000)%256;
        TH0=(65536-50000)/256;
        TR0=1;
              EA=1;     
        ET0=1;
}
回復

使用道具 舉報

9#
ID:400014 發表于 2019-11-25 21:36 | 只看該作者
void timer0_init() interrupt 0
{
        TMOD=0x01;
        TL0=(65536-50000)%256;
        TH0=(65536-50000)/256;
        TR0=1;
              EA=1;     
        ET0=1;
}
回復

使用道具 舉報

10#
ID:302973 發表于 2019-11-25 22:01 | 只看該作者
發現問題了,display()沒有加變量 i,所以沒有效果。uchar i  也應該改成 uint i。不然超過256就不加了 。。問題終結。謝謝各位大佬。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕色站 | 亚洲二区精品 | 亚洲一区二区三区视频免费观看 | 欧美一区二区三区高清视频 | 成人免费在线小视频 | 久久久精品网站 | 福利网址 | 欧美精品片 | 精品国产91乱码一区二区三区 | 天天色天天色 | 国产一区二区精品在线 | se婷婷 | 日韩精品视频在线 | 亚洲精品99| 日韩三片| 国产99视频精品免费播放照片 | 欧美男人天堂 | 蜜桃五月天 | www日本在线播放 | 国产一区日韩在线 | 在线视频一区二区 | 精品日本久久久久久久久久 | 久久精品久久久久久 | 欧美视频日韩 | 国产乱码久久久久久一区二区 | 四虎最新地址 | 蜜桃五月天 | 国产精品一区在线观看 | 国产福利视频在线观看 | 国产精品国产三级国产aⅴ入口 | 国产三级大片 | 欧美1级| 在线天堂免费中文字幕视频 | 国产高清一区二区三区 | 亚洲欧美日韩一区 | 午夜视频一区二区 | avhd101在线成人播放 | 人人插人人 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 国产视频一区在线 | 久久久www成人免费精品 |