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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)定時(shí)器延時(shí)問(wèn)題請(qǐng)教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:718523 發(fā)表于 2021-4-26 20:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 forest415 于 2021-4-27 14:20 編輯

下面的程序?yàn)槭裁磒11一直是0呢?定時(shí)器1感覺(jué)沒(méi)有作用。
  1. /***********************************************************************************************************/
  2. //HC-SR04 超聲波測(cè)距模塊 DEMO 程序
  3. //晶振:11。0592
  4. //接線:模塊TRIG接 P1.2  ECH0 接P1.1
  5. /***********************************************************************************************************/          
  6.         #include<reg52.h>
  7.         #include   <intrins.h>
  8.     #include   <STDIO.H>

  9.     #define uchar unsigned  char
  10.     #define uint  unsigned   int  
  11. sbit RX=P2^1;
  12. sbit TX=P2^0;
  13.   

  14.         unsigned int  time=0;
  15.         unsigned int  timer=0;
  16.         float         S=0;
  17.     bit           flag =0;
  18.         unsigned int  sum=0;
  19. sbit p11=P1^1;       

  20. /********************************************************/
  21.     void Conut(void)
  22.         {
  23.          time=TH0*256+TL0;
  24.          TH0=0;
  25.          TL0=0;
  26.          S=(time*1.87)/100;     //算出來(lái)是CM
  27.          if(flag==1)                    //超出測(cè)量
  28.          {
  29.           flag=0;
  30.           //p11=0;
  31.          }
  32.          if(S<50){
  33.          p11=0;
  34.          TR1=0;//關(guān)T0
  35.          }
  36.          else{
  37.          TR1=1;//開T0       
  38.          //p11=1;
  39.          //這里用定時(shí)器延時(shí)一會(huì)再關(guān)掉,能重復(fù)觸發(fā)的
  40.          }
  41.           
  42.         }
  43. /********************************************************/
  44. void delayms(unsigned int ms)                //@12.000MHz
  45. {
  46.         unsigned char i, j;

  47.         i = 39;
  48.         j = 230;
  49.         do
  50.         {
  51.                 while (--j);
  52.         } while (--i);
  53. }





  54. /********************************************************/
  55.      void zd0() interrupt 1                  //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍
  56.   {
  57.     flag=1;                                                         //中斷溢出標(biāo)志
  58.   }
  59. /********************************************************/

  60. void Timer1(void) interrupt 3  //定時(shí)器T1的中斷
  61. {                          //定時(shí)100微秒
  62.     TL1=0;              //重新給TL1賦初值
  63.     TH1=0;              //重新給TH1賦初值
  64.         sum++;
  65.         if(sum>300){p11=~p11;}
  66.     //***此處用戶自行添加定時(shí)器T1中斷處理程序***

  67.     //******************************************

  68. }
  69.    void  StartModule()                         
  70.   {
  71.           TX=1;                                         
  72.           _nop_();
  73.           _nop_();
  74.           _nop_();
  75.           _nop_();
  76.           _nop_();
  77.           _nop_();
  78.           _nop_();
  79.           _nop_();
  80.           _nop_();
  81.           _nop_();
  82.           _nop_();
  83.           _nop_();
  84.           _nop_();
  85.           _nop_();
  86.           _nop_();
  87.           _nop_();
  88.           _nop_();
  89.           _nop_();
  90.           _nop_();
  91.           _nop_();
  92.           _nop_();
  93.           TX=0;
  94.   }
  95. /********************************************************/



  96. void main(void)
  97. {  
  98.     TMOD=0x21;                   //設(shè)T0為方式1,GATE=1;
  99.         SCON=0x50;

  100. //定時(shí)器T1(延時(shí)用)
  101.         TH1=0;
  102.         TL1=0;
  103.         TR1=1;//開啟定時(shí)器
  104.         ET1=1;//允許T1中斷
  105. //定時(shí)器T0
  106.         TH0=0;
  107.         TL0=0;
  108.         TR0=1;             //開啟定時(shí)器
  109.         ET0=1;         //允許T0中斷
  110.                                   
  111.         TI=1;  //不知道啥東西

  112.         EA=1;                           //開啟總中斷


  113.         while(1)
  114.         {
  115.          StartModule();
  116.          while(!RX);                //當(dāng)RX為零時(shí)等待
  117.          TR0=1;                            //開啟計(jì)數(shù)
  118.          while(RX);                        //當(dāng)RX為1計(jì)數(shù)并等待
  119.          TR0=0;                                //關(guān)閉計(jì)數(shù)
  120.      Conut();                        //計(jì)算
  121.          delayms(30);                //100MS

  122.         }

  123. }              
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:718523 發(fā)表于 2021-4-26 20:10 | 只看該作者
還有void zd0() interrupt 1中的zd0是啥意思啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:844772 發(fā)表于 2021-4-26 22:41 | 只看該作者
1. 你都寫了延時(shí)函數(shù)了:void delayms(unsigned int ms)           delayms(2000);就是延時(shí)2S;
2. zd0() 是中斷函數(shù)啊,計(jì)數(shù)器溢出才會(huì)進(jìn)入,一旦進(jìn)入就是距離超范圍了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:889094 發(fā)表于 2021-4-27 00:38 來(lái)自手機(jī) | 只看該作者
定時(shí)器中斷每次觸發(fā)之后要重裝初值,好像你的中斷函數(shù)里沒(méi)有,比如你50ms一次定時(shí)器觸發(fā),弄個(gè)計(jì)數(shù)變量里面++就可以了,變量到20次1秒,400次就是20秒了,

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:889094 發(fā)表于 2021-4-27 00:39 來(lái)自手機(jī) | 只看該作者
記得前幾天看到的,函數(shù)中盡量少用delay,尤其是長(zhǎng)時(shí)間delay函數(shù),對(duì)程序結(jié)構(gòu)不好,我覺(jué)得人家說(shuō)的對(duì)
回復(fù)

使用道具 舉報(bào)

6#
ID:718523 發(fā)表于 2021-4-27 12:45 | 只看該作者
glinfei 發(fā)表于 2021-4-26 22:41
1. 你都寫了延時(shí)函數(shù)了:void delayms(unsigned int ms)           delayms(2000);就是延時(shí)2S;
2. zd0( ...

zd0()我寫成abc()行不行啊
回復(fù)

使用道具 舉報(bào)

7#
ID:718523 發(fā)表于 2021-4-27 12:45 | 只看該作者
birdzhyli 發(fā)表于 2021-4-27 00:38
定時(shí)器中斷每次觸發(fā)之后要重裝初值,好像你的中斷函數(shù)里沒(méi)有,比如你50ms一次定時(shí)器觸發(fā),弄個(gè)計(jì)數(shù)變量里面 ...

程序里有一個(gè)定時(shí)器了計(jì)算距離的那個(gè),我想再弄個(gè)定時(shí)器做延時(shí)用
回復(fù)

使用道具 舉報(bào)

8#
ID:913264 發(fā)表于 2021-4-27 21:44 | 只看該作者
你的定時(shí)器沒(méi)裝初值吧

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:844772 發(fā)表于 2021-4-28 11:20 | 只看該作者
forest415 發(fā)表于 2021-4-27 12:45
zd0()我寫成abc()行不行啊

那還不是看你開心,寫啥都行,另外你設(shè)定了自動(dòng)重裝初值,所以中斷函數(shù)中就不用再重裝了。
回復(fù)

使用道具 舉報(bào)

10#
ID:844772 發(fā)表于 2021-4-28 11:22 | 只看該作者
yu1037764293 發(fā)表于 2021-4-27 21:44
你的定時(shí)器沒(méi)裝初值吧

他等著66ms溢出,所以不用裝初值
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91欧美精品 | 91传媒在线播放 | 欧美电影免费网站 | 欧美激情一区二区 | 一级欧美一级日韩片免费观看 | 午夜精品一区二区三区在线观看 | 麻豆亚洲 | 中文字幕视频在线看5 | 欧美精品久久 | 国产精品久久久久久久久久久久久 | 国产精品国产成人国产三级 | 天堂一区二区三区四区 | 日韩国产免费 | 欧美九九 | www.久久99| 福利一区在线观看 | 精品国产乱码久久久久久久久 | 亚洲综合在线一区二区 | 青久草视频 | 国产精品综合视频 | 国产真实精品久久二三区 | 一本色道精品久久一区二区三区 | 国产成人精品一区二 | 亚洲国产成人精品女人久久久 | 蜜桃在线一区二区三区 | 亚洲色图综合 | 激情欧美日韩一区二区 | 国产日韩精品在线 | 成人在线播放网站 | 伊人久久大香线 | 日韩亚洲视频在线 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 成人精品福利 | 国产成人在线一区二区 | 日本aa毛片a级毛片免费观看 | 成人免费视频在线观看 | 亚洲精品在线免费播放 | 亚洲精品一区二区在线观看 | 99re视频这里只有精品 | 亚洲h视频 | 欧美精品91 |