亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

QQ登錄

只需一步,快速開始

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

MCU定時(shí)器實(shí)現(xiàn)多任務(wù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:77367 發(fā)表于 2015-4-19 02:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在單片機(jī)系統(tǒng)中,有許多情況下需要等待某個(gè)事件的發(fā)生,來繼續(xù)下一步操作,如果有一個(gè)任務(wù)還好說,單片機(jī)可以無限等待事件的發(fā)生,但是如果單片機(jī)要處理多個(gè)事件時(shí),這種系統(tǒng)一般不能實(shí)現(xiàn),除非用中斷,對(duì)!用中斷,但是中斷源的數(shù)量是有限的,并且有很多中斷源是針對(duì)特殊用處,這樣能給我自由分配的中斷源就只有定時(shí)器中斷和外部中斷,如果僅使用這幾個(gè)中斷源來實(shí)現(xiàn)異步,這樣可實(shí)現(xiàn)的異步事件時(shí)非常有限的,每個(gè)中斷源完成一個(gè)異步事件,效率是相當(dāng)?shù)停蟠蠼档土讼到y(tǒng)的性能,降低了定時(shí)器的利用率.
因此在這里我考慮使用定時(shí)器中斷來實(shí)現(xiàn)多個(gè)事件的異步,一個(gè)定時(shí)器如何實(shí)現(xiàn)多個(gè)任務(wù)的并發(fā)?
在這里使用一個(gè)任務(wù)一個(gè)計(jì)數(shù)器,根據(jù)任務(wù)實(shí)時(shí)性的強(qiáng)弱,來設(shè)計(jì)任務(wù)計(jì)數(shù)器的計(jì)數(shù)溢出值,每個(gè)任務(wù)的變量通過一個(gè)全局結(jié)構(gòu)體來定義,當(dāng)然這個(gè)結(jié)構(gòu)體必須包括這個(gè)計(jì)數(shù)溢出值。每到一個(gè)定時(shí)器中斷,各個(gè)任務(wù)計(jì)數(shù)器都加一,然后檢查計(jì)數(shù)器是否溢出,如果計(jì)數(shù)溢出就執(zhí)行相應(yīng)的任務(wù),同時(shí)將此任務(wù)的計(jì)數(shù)器值清零,,如果溢出執(zhí)行相應(yīng)的任務(wù),如果沒有,則此任務(wù)就不執(zhí)行!但一定要注意在中斷程序,千萬不能有死循環(huán),如果有等待一定要進(jìn)行超時(shí)檢測(cè),來避免死機(jī)!
這里舉個(gè)例子,剛剛成思路,因此寫的不是很好!這個(gè)程序使用一個(gè)4連體數(shù)碼管顯示從DS18B20中采集的溫度值,4位連體數(shù)碼管當(dāng)然只能使用動(dòng)態(tài)掃描方法來顯示數(shù)據(jù),并且這個(gè)動(dòng)態(tài)掃描不能在主程序中執(zhí)行,因?yàn)樵谥鞒绦騽?dòng)態(tài)掃描效果很容易收到中斷程序的影響,而使顯示效果下降,因此必須使用定時(shí)器來控制延時(shí)實(shí)現(xiàn)動(dòng)態(tài)掃描,但是ds18b20的讀寫時(shí)序?qū)ρ訒r(shí)的精度要求也是相當(dāng)高的,如果在主程序中,中斷程序造成的延時(shí)必然會(huì)對(duì)ds18b20采集數(shù)據(jù)的延時(shí)精確度造成干擾,而不能采集正確的數(shù)據(jù)!因此DS18b20采集數(shù)據(jù)的程序也不能夠放在主程序中,當(dāng)然我們可以使用兩個(gè)定時(shí)器來實(shí)現(xiàn)!這里我們使用一個(gè)定時(shí)器來實(shí)現(xiàn),由于DS18B20溫度轉(zhuǎn)換時(shí)間比較長(zhǎng)12位精度的溫度轉(zhuǎn)換需要接近1秒的時(shí)間,這對(duì)動(dòng)態(tài)掃描是無法容忍的,可行的辦法是將啟動(dòng)轉(zhuǎn)換,讀取溫度值放在同一個(gè)中斷的不同狀態(tài),也就是在任務(wù)中實(shí)現(xiàn)狀態(tài)機(jī),從而避免了在中斷中出現(xiàn)長(zhǎng)時(shí)間的等待,而影響系統(tǒng)的性能!以下中斷函數(shù)的具體實(shí)現(xiàn):
void interrupt main_int()
{
// t0_int(&data) ;
    uchar tl ,th ;
    uint temp ;
    if(T0IF)
    {
        T0IF=0 ;
        (ds.count)++ ;
        if(ds.count==80)
        {
           ds.count=0 ;
           switch(ds.state)
           {
                case 0 :
                    ds.state=1 ;
                    init_ds18b20() ;
                    write_ds18b20(ROM_SKIP) ;
                    write_ds18b20(MEM_CONVERT) ;
                    break ;
                case 1 :
                    init_ds18b20() ;
                    write_ds18b20(ROM_SKIP) ;
                    write_ds18b20(MEM_READ) ;
                    tl=read_ds18b20() ;
                    th=read_ds18b20() ;
                    if(!(th&0xf0))
                    {
                        th=th&0x07 ;
                        temp=th*256+tl ;
                        ds.data=temp/16 ;
                    }
                    else
                    {
                        th=th&0x07 ;
                        temp=th*256 +tl ;
                        ds.data=temp/16 ;
                    }
                    ds.state=0 ;
                    break ;
                default :
                    ds.state=0 ;
                    break ;
            }
        }
        int_display1(ds.data) ;
        TMR0=210 ;
    }
}





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

使用道具 舉報(bào)

沙發(fā)
ID:76944 發(fā)表于 2015-5-2 17:16 | 只看該作者
沒有太明白
回復(fù)

使用道具 舉報(bào)

板凳
ID:109246 發(fā)表于 2016-6-23 10:42 | 只看該作者
不是很懂哎,希望樓主描述詳細(xì)一點(diǎn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表