wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機定時器,實現類似PLC多個軟定時器的MCU編程思路(原創代碼)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:471574 發表于 2020-11-13 15:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       單片機要想實現多個不同時基的控制,除了上系統外,本人采用分時段的方法,結合PLC的控制原理,實現出類似PLC定時器的控制方法,分別有0.01S定時器 12個,0.1MS定時器 10個,1S定時器10個,可以單獨設定,同時使用。如果MCU的程序容量比較大,可以實現更多的定時器,不過一般建議根據實際項目要求來調整。實現過程思路代碼如下(STC89單片機):
//以下程序及算法由本人zyhlove813原創,特別是soft_timer實現算法值得借鑒,適用所有MCU,源碼示例請下載附件
#include "reg51.h"
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
/* define constants */
#define true 1
#define false 0
#define FOSC 11059200L    //時鐘頻率
#define T1MS (65536-FOSC/12/1000)   //1MS定時器設定值
#define T10ms 12    //0.01S定時器數組索引上限=12-1=11,因此0.01S定時器的個數=12個
#define T100ms (T10ms+10) //0.1S定時器數組索引上限=22-1=21,因此0.1S定時器的個數=21-11=10個
#define Timers 32   //1S定時器數組索引上限=32-1=31,因此1S定時器的個數=31-21=10個
#define Timers_bit (Timers/8)  //八個定時器為一組,共32/8=4組
#define SET_BIT(s,b,c)(s=(s&(~(1<<b)))+(c<<b))  //宏,設置某個位的值,0或1的狀態
#define GET_BIT(s,b)((s>>b)&0x01)                //宏,獲取某個位的值,返回0或1的狀態
#define SET_EN(b,c) (SET_BIT(timer_en[b/8],b%8,c))  //設置對應定時器使能狀態
#define SET_ON(b,c) (SET_BIT(timer_on[b/8],b%8,c))  //設置對應定時器對應使能狀態
#define GET_EN(b) (GET_BIT(timer_en[b/8],b%8))     //獲取對應定時器對應使能狀態
#define GET_ON(b) (GET_BIT(timer_on[b/8],b%8))     //獲取對應定時器線圈狀態
uint8_t  timer_en[Timers_bit];    //定時器使能狀態緩存
uint8_t  timer_on[Timers_bit];    //定時器線圈狀態緩存
uint32_t  timer_pv[Timers];       //定時器目標值緩存
uint32_t  timer_cv[Timers];       //定時器當前值緩存
uint32_tcount_1ms;               //硬件定時器1MS計數器
sbit LED1=P1^1;                   //測試用的IO1
sbit LED2=P1^2;                     //測試用的IO2
void soft_timer(void);            //聲明函數
void timer0_isr() interrupt 1    //定時器0中斷,每1MS中斷一次
{
   TL0 = T1MS;                     //reloadtimer0 low byte
   TH0 = T1MS>> 8;                //reload timer0 high byte
   soft_timer();                  //調用軟件定時器判斷
}
void main()
{
   TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
   TL0 = T1MS;                     //initialtimer0 low byte
   TH0 = T1MS>> 8;                //initial timer0 high byte
   TR0 = 1;                        //timer0 start running
   ET0 = 1;                        //enable timer0 interrupt
   EA = 1;                         //open global interrupt switch
   count_1ms = 0;                  //initial counter
   timer_pv[1]=1;                    //0.01S定時器(1)的目標值設為1,即10MS
    timer_pv[2]=1;                  //0.01S定時器(2)的目標值設為1,即10MS
    timer_pv[12]=5;                 //0.1S定時器(12)的目標值設為5,即500MS
    timer_pv[13]=5;                 //0.1S定時器(13)的目標值設為5,即500MS
   SET_EN(1,1);                    //0.01S定時器(1)使能有效,開始計時
   SET_EN(12,1);                     //0.1S定時器(12)使能有效,開始計時
   while (1)
        {
             if(GET_ON(1))           //如果0.01S定時器(1)的定時線圈為1,即定時時間到
             {
                 LED1=1;             //LED1
                 SET_EN(2,1);        //0.01S定時器(2)使能有效,開始計時
                 SET_EN(1,0);        //0.01S定時器(1)使能無效,停止計時        
             }
             if(GET_ON(2))          //如果0.01S定時器(2)的定時線圈為1,即定時時間到
             {
                 LED1=0;            //LED1
                 SET_EN(1,1);       //0.01S定時器(1)使能有效,開始計時
                 SET_EN(2,0);       //0.01S定時器(2)使能無效,停止計時      
     }
             if(GET_ON(12))         //如果0.1S定時器(12)的定時線圈為1,即定時時間到
             {
                 LED2=1;             //LED2
                 SET_EN(13,1);        //0.1S定時器(13)使能有效,開始計時
                 SET_EN(12,0);        //0.1S定時器(12)使能無效,停止計時
             }
             if(GET_ON(13))
             {
                 LED2=0;              //LED2
                 SET_EN(12,1);        //0.1S定時器(12)使能有效,開始計時
                 SET_EN(13,0);        //0.1S定時器(13)使能無效,停止計時               
     }
   }
}
//軟件定時器的實現
void soft_timer()
{
    uint8_ti;
    uint8_ttemp;
    count_1ms++;        //1MS計數值+1
    if(count_1ms%10==0)    //判斷是否0.01S時間到
    {
        for(i=0;i<T10ms;i++)  //更新0.01S定時器的當前值
        {
             timer_cv+=GET_EN(i);  //如果EN=1,則當前值+1,否則+0
             timer_cv*=GET_EN(i);  //如果EN=1,則當前值不變,否則當前值=0 保障當前值根據使能狀態自動加或清零
             temp=GET_EN(i)*(timer_cv>=timer_pv);   //計算是否到達目標時間,如果使能無效的話,結果是0,如果使能有效的話,而且當前值大于目標值,結果是1
             SET_ON(i,temp);  //更新線圈是否到時狀態
        }
    }
    //以下算法相同
    if(count_1ms%100==0)   //判斷是否0.1S時間到
    {
        for(i=T10ms;i<T100ms;i++)
        {
             timer_cv+=GET_EN(i);
             timer_cv*=GET_EN(i);
             temp=GET_EN(i)*(timer_cv>=timer_pv);
             SET_ON(i,temp);
        }   
    }
    if(count_1ms%1000==0)   //判斷是否1S時間到
    {
        count_1ms=0;        //1MS計數器重啟
        for(i=T100ms;i<Timers;i++)
        {
             timer_cv+=GET_EN(i);
             timer_cv*=GET_EN(i);
             temp=GET_EN(i)*(timer_cv>=timer_pv);
             SET_ON(i,temp);
        }
    }   
}   



全部資料51hei下載地址:
SoftTimer.rar (31.31 KB, 下載次數: 107)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:97678 發表于 2020-11-15 09:09 | 只看該作者
好東西!!!
下載來用用看!!!
回復

使用道具 舉報

無效樓層,該帖已經被刪除
地板
ID:240034 發表于 2021-1-15 14:41 | 只看該作者
定時部分程序結構不錯,參考借用下,
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
ID:878420 發表于 2021-3-3 15:33 來自觸屏版 | 只看該作者
沒有看懂啊
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
ID:948578 發表于 2021-10-27 18:26 | 只看該作者
s,a,b,c分別是表示啥參數?
回復

使用道具 舉報

9#
ID:471574 發表于 2021-10-30 10:40 | 只看該作者
yjheeqgnui 發表于 2021-10-27 18:26
s,a,b,c分別是表示啥參數?

b表示第幾個軟定時器,c表示ON或為OFF,用于設置定時器EN或ON的狀態
s表示軟定時器變量,因為是數組(timer_en,timer_on),需要計算出索引值,
注意得是timer_en[0]中二進制每個位,對應了軟件定時器0-7的狀態
回復

使用道具 舉報

10#
ID:875095 發表于 2021-10-31 10:21 | 只看該作者
嗯,這幾天也在想定時問題,借鑒一下
回復

使用道具 舉報

11#
無效樓層,該帖已經被刪除
12#
ID:346397 發表于 2022-5-30 18:50 | 只看該作者
思路不錯
回復

使用道具 舉報

13#
ID:105206 發表于 2022-7-3 07:49 | 只看該作者
漂亮,感謝樓主分享。
回復

使用道具 舉報

14#
ID:462629 發表于 2022-7-9 15:25 | 只看該作者
這個思路可以,學習了
回復

使用道具 舉報

15#
ID:914666 發表于 2022-7-11 12:50 | 只看該作者
51hei有你更精彩
回復

使用道具 舉報

16#
ID:71535 發表于 2022-7-27 20:27 | 只看該作者
算法思路值得學習,學習分享
回復

使用道具 舉報

17#
ID:137736 發表于 2022-10-31 16:44 | 只看該作者
頂,軟定時器,本人正在學習,編了一個仿Arduno的millis程序,實現多程序非阻塞運行
回復

使用道具 舉報

18#
ID:334781 發表于 2023-1-31 10:35 | 只看該作者
下載過來,研究一下,這個定時的思路不錯!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
中国一区二区三区| www.久久伊人| 免费成人在线视频网站| 精品国产二区三区| 欧美一级淫片免费视频| 人人做人人爽人人爱| 屁屁影院在线观看| 成人福利影视| 一本色道69色精品综合久久| 欧美国产一级| 精品一区二区在线播放| 日韩码欧中文字| 欧美一级高清片在线观看| 色七七影院综合| 国产专区精品视频| 中文字幕一区二区三区四区五区| 国产永久免费网站| 黄色一级视频在线观看| 日本激情一区二区| 91xxxxx| 青青草原av在线| 日韩成人一级| 日韩电影一区二区三区四区| 国产精品嫩草99a| 欧美丰满少妇xxxxx高潮对白| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲毛片av在线| 亚洲国产欧美久久| 国产精品普通话| 国产成人精品免费看在线播放| 久久久久久国产精品日本| 国产精品第108页| 亚洲欧美精品中文第三| 亚洲精品套图| 欧美另类中文字幕| 日韩黄色免费电影| 亚洲va在线va天堂| 久久精品国产成人精品| 激情小说综合网| 91小视频网站| 日韩不卡视频在线| 性生活视频网址| 青春草在线视频| 日韩综合在线| 久久久亚洲精品一区二区三区| 777色狠狠一区二区三区| 青青草99啪国产免费| japanese在线播放| 中文字幕91视频| 日本一本久久| 欧美午夜电影一区二区三区| 国产影视一区| 久久色成人在线| 亚洲爱爱爱爱爱| 91九色极品视频| 天堂av在线8| 中文字幕乱码一区二区| 韩国av电影免费观看| 午夜影院在线观看国产主播| 欧美精品综合| 亚洲精品国产精品乱码不99| 欧美成年人视频网站欧美| 亚洲一区二区三区精品视频| 国产在线综合视频| 中文字幕在线看精品乱码| 欧美成年黄网站色视频| 日本午夜一区| 亚洲视频一区二区在线| 久久天天躁狠狠躁夜夜躁| 人人妻人人澡人人爽精品欧美一区| 一级特黄曰皮片视频| 日韩不卡高清| 蜜臀av国内免费精品久久久夜夜| 欧美在线国产| 亚洲成人av一区| 91高清免费视频| 日韩免费高清在线| 91午夜交换视频| 91美女精品网站| 五月伊人六月| 色婷婷av一区二区三区丝袜美腿| 91网上在线视频| 欧美日韩免费网站| 免费在线超碰| 嫩草影院一区二区三区| www天堂在线观看| 久久影院资源网| 欧美在线视频免费| 精品久久免费观看| 法国伦理少妇愉情| 国产色视频在线| 男女羞羞视频教学| 国产美女高潮在线观看| 欧美日韩中文字幕一区二区三区 | 欧美日韩午夜电影网| 99亚洲伊人久久精品影院红桃| 欧美激情在线一区二区| 精品国产乱码久久久久久1区2区| 日本欧美在线视频| 一二三在线视频| 神马久久久久久久久久久| 97人妻精品一区二区三区视频| 福利视频导航大全| 1区2区在线观看| 欧美女优在线视频| 国产98色在线|日韩| 在线视频国内自拍亚洲视频| 欧美国产精品va在线观看| 色乱码一区二区三在线看| 波多野结衣在线免费观看| 日批视频免费在线观看| 免费午夜一级| 蜜桃麻豆影像在线观看| 亚洲夜间福利| 亚洲精品国产品国语在线app| 日韩一区二区欧美| 亚洲无玛一区| 小泽玛利亚一区| 国产麻豆永久视频| а√天堂资源官网在线资源| 亚洲高清二区| 欧美日韩国产一区在线| 91国语精品自产拍在线观看性色 | 91视频一区| 日本一区二区三级电影在线观看| 亚洲精品之草原avav久久| 国产在线精品日韩| 中文乱码人妻一区二区三区视频| 亚洲女人18毛片水真多| 亚洲专区第一页| 欧洲免费av| 国产精品亚洲成在人线| 麻豆久久久久久久| 欧美嫩在线观看| 91色精品视频在线| 亚洲熟妇一区二区| 天天操天天操天天干| av基地在线| 97视频精品| 亚洲一区二区在线观看视频| 国内自拍欧美激情| 三级在线免费看| 国产男女裸体做爰爽爽| 你懂的免费在线观看| 日韩高清欧美| 亚洲一区二区三区四区五区中文 | 久热99视频在线观看| 僵尸世界大战2 在线播放| 精品国产乱子伦| 瑟瑟在线观看| 99久久婷婷国产综合精品电影√| 一区二区三区四区在线| 日本久久中文字幕| aaaaa黄色片| 四虎精品影院在线观看视频 | 国产精品久久免费观看| 五月婷婷丁香激情| 95精品视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久草精品在线播放| 国产乱码精品一区二三区蜜臂| 精品欧美不卡一区二区在线观看| 亚洲国产精品久久久久蝴蝶传媒| 亚洲国产视频直播| 国产噜噜噜噜久久久久久久久| 香港三级日本三级| 你懂的网站在线播放| 日韩综合一区二区三区| 国产精品妹子av| 国产精品jvid在线观看蜜臀| 午夜视频在线观看国产| 日本www高清| 91综合久久爱com| 最新日韩在线视频| 国产精品亚洲欧美导航| 风间由美一二三区av片| 免费一级片网址| 亚洲精品动态| 久久人人99| 一本到一区二区三区| 国产精品久久久久久久久久久久午夜片 | 国产欧美日韩精品在线| 欧美亚洲午夜视频在线观看| 国产xxxxxxxxx| 黄色网址大全在线观看| 美女亚洲一区| 日韩欧美aⅴ综合网站发布| 久久精品国产第一区二区三区最新章节| 久久r这里只有精品| 在线黄色国产视频| 国产精品久久777777毛茸茸| 日韩av在线天堂网| 欧美激情国产精品日韩| 午夜国产福利| 欧美电影免费网站| 欧美午夜视频一区二区| 欧美一级片免费观看| 正在播放亚洲精品| 1区2区3区在线| 久久久夜色精品亚洲| 国产精品91久久久久久| 国产免费一区二区三区四区| 在线观看黄色| 日韩电影在线免费看| 最近中文字幕mv在线一区二区三区四区| 成人免费在线观看视频网站| 国产9色视频| 欧美一区电影| 日韩一级片在线播放| 国产素人在线观看| 精品视频二区三区| 日本欧美视频| 亚洲精品720p| 在线看免费毛片| 18av千部影片| 一本久久综合| 久久精品视频免费播放| aaaa黄色片| 在线视频尤物| 国内精品伊人久久久久av影院| 97视频免费看| 中文字幕乱码av| 幼a在线观看| 9久草视频在线视频精品| 国产精品美女久久久免费| 久久久久久久久久久97| 性国产高清在线观看| 亚洲国产精品传媒在线观看| 国产一区二区高清视频| 999精品国产| 国产在线不卡一区二区三区| 欧美视频中文字幕在线| 人妻少妇精品久久| 小小的日本在线观看免费色网| 欧美福利网址| 久久精品国产91精品亚洲| 久久中文字幕人妻| 邻居大乳一区二区三区| 99精品久久只有精品| 99视频免费观看| 国产chinasex对白videos麻豆| 99精品视频在线免费播放| 91黄色免费网站| 99精品视频播放| 成人eeuss影院在线观看| 青青草成人在线观看| 国产精品吹潮在线观看| 久久久久亚洲视频| 成人精品在线| 欧美一区二区播放| 免费国偷自产拍精品视频| 最近中文字幕在线中文视频| 国产aⅴ综合色| 国产另类自拍| 美女把尿口扒开给男人桶视频| 色棕色天天综合网| 一区二区日韩精品| 国产极品美女在线| 在线免费av资源| 欧美视频中文字幕| 午夜激情影院在线观看| 日韩在线无毛| 国产精品黄色在线观看| 18视频在线观看娇喘| 天堂网在线观看| 免费在线看一区| 99在线影院| 一区三区三区不卡| 欧美三级在线| 国产精品678| 亚洲精品无码专区| 香港欧美日韩三级黄色一级电影网站| 精品国产区一区二区三区在线观看| 一起操在线播放| 成人h在线观看| 精品免费一区二区三区| 人妻大战黑人白浆狂泄| 羞羞的视频在线看| 在线观看日韩国产| 久久久国产精品久久久| 国产精品扒开做爽爽爽的视频| 亚洲一区二区综合| 91av俱乐部| 国产视频网站在线| 亚洲国产另类av| 在线观看国产福利| 午夜视频在线看| 狠狠躁18三区二区一区| 国产在线视频三区| 亚洲婷婷噜噜| 欧美理论电影在线| www.日本高清| 悠悠资源网亚洲青| 日韩精品专区在线| 91嫩草丨国产丨精品| 亚洲va欧美va人人爽成人影院| 伊人成人开心激情综合网| 九九九在线观看| 久久99高清| 欧美一级视频一区二区| 高清乱码毛片入口| 久久国产日韩| 蜜桃传媒视频第一区入口在线看| 色啪免费观看视频| 97精品久久久久中文字幕| 成人在线免费观看视频网站| 360天大佬第二季在线观看| 亚洲天堂av老司机| 亚洲av无日韩毛片久久| wwww亚洲| 亚洲精品久久久久中文字幕二区| 久久中文字幕无码| 精品国产一区二区三区av片| 国产精品电影网站| 欧美一级手机免费观看片| 国产酒店精品激情| 黄色录像特级片| 日本大片在线观看| 欧美丝袜第三区| 国产真实乱在线更新| 极品粉嫩饱满一线天在线| 国产精品久久久久一区二区三区| 又色又爽又高潮免费视频国产| 日本在线www| 91精品国产入口| 久草网在线观看| 久久国产亚洲精品| 91九色在线视频| 青丝免费观看高清影视| 国产日韩欧美精品电影三级在线| 国产一级不卡毛片| 擼擼色在线看观看免费| 亚洲人成五月天| 91资源在线视频| 母乳一区在线观看| 中文字幕一区二区三区乱码 | 亚洲免费视频一区二区| 国产成人av免费| 香蕉久久久久久久av网站| 亚洲精品一区国产精品| 在线欧美一级视频| 欧美性大战久久久久久久 | 免费不卡av| 在线色欧美三级视频| 国产日韩欧美一区二区东京热| 蜜桃伊人久久| 日本免费a视频| 91精品久久| 亚洲欧洲一区二区三区在线观看 | 久久先锋影音av| 国产美女视频免费看| 成人在线观看免费视频| 久久全国免费视频| 四虎国产精品永久在线| 久久影音资源网| 26uuu国产| 成人性生交大片免费看中文视频| 国产精品久久久久久亚洲调教| 黄色网免费观看| 精品久久久精品| 麻豆chinese极品少妇| 激情欧美丁香| 国产成人一二三区| missav|免费高清av在线看| 日韩一区二区三区在线播放| 久久婷婷综合中文字幕| 中文字幕av一区 二区| 国产熟妇搡bbbb搡bbbb| 国产一区二区三区日韩精品| 久久精品国产精品青草色艺 | 亚洲国产午夜精品| 精品国产一区二| 91香蕉亚洲精品| 在线免费观看你懂的| 精品国产免费一区二区三区香蕉| 国产aⅴ爽av久久久久成人| 不卡av电影在线播放| 老司机av网站| 婷婷五月色综合香五月| 欧美精品一区在线发布| www视频在线免费观看| 美女福利视频一区| 一个人看的日本免费视频 | 欧美大胆视频| 免费久久99精品国产自| 美女国产在线| 国产精品色在线| 国产又粗又猛又爽又黄av| 正在播放日韩欧美一页| 国产精品一色哟哟| 六九午夜精品视频| 亚洲www在线观看| 国产亚洲依依| 日韩中文字幕在线观看| 日批视频网站| 欧美片在线播放| 国产综合在线播放| 成人免费一区二区三区在线观看| 欧美日韩精品一区二区三区视频播放| 久久av最新网址|