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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用單片機定時中斷做個定時水循環系統,代碼不報錯,時間和預想的不一樣

[復制鏈接]
跳轉到指定樓層
樓主
ID:821461 發表于 2022-4-19 19:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求幫助!我用定時中斷做個定時水循環系統,代碼沒報錯,但是關水泵的時間和預想的不一樣,請教大佬,我哪里弄錯了原定計劃是:5分鐘開, 30分鐘關,這樣一直循環。
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中斷函數
{
        static u16 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;
        }                        
}


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

使用道具 舉報

沙發
ID:624769 發表于 2022-4-19 21:39 來自手機 | 只看該作者
把定時器設置為10ms,i改成char 定100看看會不會準點
回復

使用道具 舉報

板凳
ID:911455 發表于 2022-4-19 22:09 | 只看該作者
用的什么型號的單片機,晶振頻率呢?說到底還初值賦的對不對,定義個輸出引腳,看下輸出周期對不對
回復

使用道具 舉報

地板
ID:213173 發表于 2022-4-20 05:37 | 只看該作者
  1. void time0() interrupt 1 //定時器0中斷函數
  2. {
  3.         static u16 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. }
復制代碼
回復

使用道具 舉報

5#
ID:821461 發表于 2022-4-20 10:01 | 只看該作者
感謝,wulin 、188610329、innere 各位大佬,已經解決了。萬分感謝。
回復

使用道具 舉報

6#
ID:911455 發表于 2022-4-20 10:13 | 只看該作者
xiaosps 發表于 2022-4-20 10:01
感謝,wulin 、188610329、innere 各位大佬,已經解決了。萬分感謝。

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

使用道具 舉報

7#
ID:821461 發表于 2022-4-20 17:49 | 只看該作者
innere 發表于 2022-4-20 10:13
別光感謝啊,解決了說說是哪的原因啊?

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

使用道具 舉報

8#
ID:1023659 發表于 2022-5-4 00:20 | 只看該作者
代碼主體沒問題,就是在判斷水泵開關的時候判斷反了,beng=1為關,beng=0為開
回復

使用道具 舉報

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

使用道具 舉報

10#
ID:1026496 發表于 2022-5-15 10:55 | 只看該作者
static u16 i;//定義靜態變量i         static u8 j;  //定義秒變量         static u8 k;  //定義分鐘變量 中加入Volatile
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 高清色视频 | 日韩在线视频网址 | 亚洲精品乱码久久久久v最新版 | 成人精品一区二区三区 | 欧美日批 | 日韩精品一区二区三区在线播放 | 特级黄一级播放 | 久久狼人天堂 | 国产精品视频一 | 国产无人区一区二区三区 | 国产精品久久久久久久久久久久冷 | 伊人超碰 | 色五月激情五月 | 久久亚洲一区 | 精品一区二区三区在线观看 | 久久精品小短片 | 国产欧美在线 | 伊人伊人伊人 | 美女天堂 | 亚洲一区二区三区国产 | 自拍偷拍一区二区三区 | 青青草一区二区 | 婷婷久久精品一区二区 | 午夜免费视频 | 香蕉婷婷 | 久久久久黄| 视频一区在线 | 天天精品综合 | 亚洲444eee在线观看 | 亚洲一区久久 | 日韩在线视频精品 | 国产精品久久久久久久白浊 | 国产目拍亚洲精品99久久精品 | 午夜在线视频 | 最新av在线播放 | 欧美日韩一区二区三区在线观看 | 亚洲性人人天天夜夜摸 | 日本中文字幕视频 | 小川阿佐美pgd-606在线 | 亚洲成人免费视频在线观看 | 精品91久久 |