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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2092|回復: 9
收起左側

用單片機定時中斷做個定時水循環(huán)系統(tǒng),代碼不報錯,時間和預想的不一樣

[復制鏈接]
ID:821461 發(fā)表于 2022-4-19 19:07 | 顯示全部樓層 |閱讀模式
求幫助!我用定時中斷做個定時水循環(huán)系統(tǒng),代碼沒報錯,但是關水泵的時間和預想的不一樣,請教大佬,我哪里弄錯了原定計劃是:5分鐘開, 30分鐘關,這樣一直循環(huán)。
void time0_init(void)
{
        TMOD|=0X01;//選擇為定時器0模式,工作方式1
        TH0=0XFC;        //給定時器賦初值,定時1ms
        TL0=0X18;        
        ET0=1;//打開定時器0中斷允許
        EA=1;//打開總中斷
        TR0=1;//打開定時器               
}
void main()
{        
        time0_init();//定時器0中斷配置
//        beng=0;
        while(1)
        {                        

        }               
}


void time0() interrupt 1 //定時器0中斷函數(shù)
{
        static u16 i;//定義靜態(tài)變量i
        static u8 j;  //定義秒變量
        static u8 k;  //定義分鐘變量
        TH0=0XFC;        //給定時器賦初值,定時1ms
        TL0=0X18;
        i++;
        if(i==1000)                  //一秒的計時
        {
                i=0;
                j++;
        }               
        if(j==60)                  //一分鐘的計時
        {
                k++;
                j=0;
                i=0;
        }        
        if(k==5 && beng==0)          //到了5分鐘,并且水泵打開的情況下
        {
                beng=1;                          //關閉水泵
                k=0;
                i=0;
                j=0;
        }
        if(k==30 && beng==1)          //到了30分鐘,并且水泵關閉的情況下
        {
                beng=0;                          //打開水泵
                k=0;
                i=0;
                j=0;
        }                        
}


回復

使用道具 舉報

ID:624769 發(fā)表于 2022-4-19 21:39 來自觸屏版 | 顯示全部樓層
把定時器設置為10ms,i改成char 定100看看會不會準點
回復

使用道具 舉報

ID:911455 發(fā)表于 2022-4-19 22:09 | 顯示全部樓層
用的什么型號的單片機,晶振頻率呢?說到底還初值賦的對不對,定義個輸出引腳,看下輸出周期對不對
回復

使用道具 舉報

ID:213173 發(fā)表于 2022-4-20 05:37 | 顯示全部樓層
  1. void time0() interrupt 1 //定時器0中斷函數(shù)
  2. {
  3.         static u16 i;//定義靜態(tài)變量i
  4.         static u8 j;  //定義秒變量
  5.         static u8 k;  //定義分鐘變量
  6.         TH0=0XFC;        //給定時器賦初值,定時1ms
  7.         TL0=0X18;
  8.         i++;
  9.         if(i==1000)                  //一秒的計時
  10.         {
  11.                 i=0;
  12.                 j++;               
  13.                 if(j==60)                  //一分鐘的計時
  14.                 {
  15.                         j=0;
  16.                         k++;
  17.                         if(k==35)k=0;               
  18.                 }               
  19.         }
  20.         if(k<5)beng=0;  //打開水泵
  21.         if(k>=5)beng=1; //關閉水泵
  22. }
復制代碼
回復

使用道具 舉報

ID:821461 發(fā)表于 2022-4-20 10:01 | 顯示全部樓層
感謝,wulin 、188610329、innere 各位大佬,已經(jīng)解決了。萬分感謝。
回復

使用道具 舉報

ID:911455 發(fā)表于 2022-4-20 10:13 | 顯示全部樓層
xiaosps 發(fā)表于 2022-4-20 10:01
感謝,wulin 、188610329、innere 各位大佬,已經(jīng)解決了。萬分感謝。

別光感謝啊,解決了說說是哪的原因啊?
回復

使用道具 舉報

ID:821461 發(fā)表于 2022-4-20 17:49 | 顯示全部樓層
innere 發(fā)表于 2022-4-20 10:13
別光感謝啊,解決了說說是哪的原因啊?

單片機是51的,晶振是12M,我原來的意思是想水泵工作5分鐘,休息30分鐘。
代碼成功燒錄后遇到的問題是,休息時間過長,工作時間太短。
使用的是wulin大佬的辦法解決的,我看了下應該是我的判斷不對,導致重復判斷了。
回復

使用道具 舉報

ID:1023659 發(fā)表于 2022-5-4 00:20 | 顯示全部樓層
代碼主體沒問題,就是在判斷水泵開關的時候判斷反了,beng=1為關,beng=0為開
回復

使用道具 舉報

ID:593706 發(fā)表于 2022-5-5 17:06 | 顯示全部樓層
用普通的單片機做定時器,不管程序寫的多么好,想精確定時是不可能地,這是單片機的硬件和軟件同共造成的誤差,如果使用外部時鐘源,情況就會好很多,我以前用單片機內(nèi)部中斷做過電子鐘,每24小時誤差隨便都在15秒以上,用外部的時鐘源配合單片機做的時鐘,一個月的誤差不超過5秒
回復

使用道具 舉報

ID:1026496 發(fā)表于 2022-5-15 10:55 | 顯示全部樓層
static u16 i;//定義靜態(tài)變量i         static u8 j;  //定義秒變量         static u8 k;  //定義分鐘變量 中加入Volatile
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美不卡一区二区 | 伊人伊成久久人综合网站 | 欧美精品一区二区免费 | 日韩欧美网| 亚洲精品电影网在线观看 | 超碰在线国产 | 中文字幕av在线 | 精品免费国产一区二区三区四区 | 亚洲一区二区三区在线播放 | 欧美一区二区免费电影 | 欧美激情国产日韩精品一区18 | 99精品视频一区二区三区 | 久久久久国产 | 精品国产乱码久久久久久88av | 伊人免费在线观看高清 | 日韩美女在线看免费观看 | 国产高潮av | 成人精品一区二区三区中文字幕 | 91精品久久久久久久久中文字幕 | 国产2区| 精品一区二区三区在线观看 | 91在线精品播放 | 91电影院| 91精品久久久 | 国产精品久久久久久久久图文区 | 国产成人99 | 精品国产区 | 午夜资源| 精品福利在线视频 | 国产91久久精品一区二区 | 色婷婷综合网站 | hdfreexxxx中国妞 | 久一精品 | 国产一区二区在线视频 | 午夜视频导航 | 亚洲一视频 | 欧美高清视频在线观看 | 亚洲激情av | av久久 | 久久精品99 | 亚洲精品在线播放 |