0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)實(shí)用框架-2

汽車電子技術(shù) ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:Julian ? 2023-02-10 14:30 ? 次閱讀

碰到需要長時(shí)間需要關(guān)閉所有中斷以保證通信協(xié)議不被打斷的項(xiàng)目,這么保證參考時(shí)間盡可能減少誤差呢?不要小看這一問題,您要是有更好的想法或思路記得在后臺給我留言哦

#include 


uinsigned char time_num = 0;       //時(shí)間緩存
uinsigned char time_100us = 0;     //時(shí)間標(biāo)準(zhǔn)


void initT0()
{
    TMOD |= 0x01;   //使用方式1,16位定時(shí)器
    TH0 = 0x0FF;    //給TH1和TL1初初值
    TL0 = 0xCE;     //延時(shí)時(shí)間為50us
    EA = 1;         //總中斷打開
    ET0 = 1;        //定時(shí)器中斷打開
    TR0 = 1;        //定時(shí)器開關(guān)打開
}


void Do(void)
{
    ......
}


void Protocol(void)
{
    static unsigned int ii;
    for( ii = 0; ii < 1000; ii++)  //約50MS
    {
        Do();        //假設(shè)執(zhí)行一次50us
        time_num++;
        if( time_num>= 2)
        {
            time_num = 0; 
            time_100us++;
        }
        if( time_100us )
        {
            time_100us = 0;
            //==========參考時(shí)間任務(wù)========
            ......
            //-----------------------------
        }
    }
}


void Delay_50us(void)
{
    ......
}


void main(void)
{
    //初始化定時(shí)器
    initT0();
    initT1();
    while(1)
    {
        EA = 0;
        Protocol();
        EA = 1;
        Delay_50us();  //協(xié)議需要
        //======任務(wù)==========
        ......
        //--------------------
    }
 }
//===============================
//t0定時(shí)器中斷服務(wù)程序
//每隔50us進(jìn)入一次該程序
//===============================
void t0Intr() interrupt 1
{
    TH0 = 0x0FF;    //給TH1和TL1初初值
    TL0 = 0xCE;     //延時(shí)時(shí)間為50us

     time_num++;
}
//--------------------------------

有同學(xué)就會問這么麻煩,誤差還挺大的,為啥不用DMA呢,而我想說這只是提供一種思路,畢竟不是什么單片機(jī)都有DMA可以使用,有時(shí)候做項(xiàng)目的時(shí)候都會受單片機(jī)硬件的限制(主要的目的就是把控成本),很多時(shí)候都會想辦法從軟件層面上提出解決方案(軟件改動方便,付出的成本低)。

收錄于合集 **#**Frame

7個(gè)

上一篇單片機(jī)實(shí)用框架(一)下一篇框架|軟件定時(shí)時(shí)間片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628407
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4570

    瀏覽量

    86699
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    552

    瀏覽量

    99931
收藏 人收藏

    評論

    相關(guān)推薦

    AVR單片機(jī)C語言程序框架(單片機(jī)最簡操作系統(tǒng))及詳解

    本帖最后由 lvhoujun 于 2014-2-28 00:37 編輯 這是本人以ATMEGA128為例編寫的C語言程序框架,做簡單的修改即適合AVR所有單片機(jī)??梢哉f是一個(gè)單片機(jī)
    發(fā)表于 02-12 20:27

    單片機(jī)程序框架的相關(guān)資料分享

    單片機(jī)程序框架
    發(fā)表于 11-22 07:46

    CAFrame單片機(jī)程序框架分享

    CAFrame單片機(jī)程序框架簡介程序運(yùn)行優(yōu)先級CAFrame配置通用事件應(yīng)用FLowchart流程圖簡介CAFrame 單片機(jī)C語言程序開發(fā)框架可用于不同的
    發(fā)表于 11-24 07:18

    單片機(jī)應(yīng)用技術(shù)選編2

    單片機(jī)應(yīng)用技術(shù)選編(2) 目錄 第一章 單片機(jī)系統(tǒng)綜合應(yīng)用技術(shù)1 1.1 析8098單片機(jī)特點(diǎn)及HSO編程技術(shù)21.2 8031單片機(jī)DMA
    發(fā)表于 03-21 22:25 ?320次下載
    <b class='flag-5'>單片機(jī)</b>應(yīng)用技術(shù)選編<b class='flag-5'>2</b>

    PIC單片機(jī)程序結(jié)構(gòu)框架

    為了快速掌握PIC單片機(jī)源程序的基本結(jié)構(gòu),這里給出一個(gè)典型的程序結(jié)構(gòu)框架。
    發(fā)表于 06-27 13:41 ?5513次閱讀

    原創(chuàng)分享:自制輕量級單片機(jī)UI框架

    原創(chuàng)分享:自制輕量級單片機(jī)UI框架框架元素用戶接口代碼開源平時(shí)常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機(jī)做一個(gè)簡易的ui界面,于是自己寫了一個(gè)輕量級的ui
    發(fā)表于 11-05 15:20 ?29次下載
    原創(chuàng)分享:自制輕量級<b class='flag-5'>單片機(jī)</b>UI<b class='flag-5'>框架</b>

    單片機(jī)程序框架

    單片機(jī)程序框架
    發(fā)表于 11-13 14:21 ?15次下載
    <b class='flag-5'>單片機(jī)</b>程序<b class='flag-5'>框架</b>

    單片機(jī)裸機(jī)程序框架

    單片機(jī)裸機(jī)程序框架##單片機(jī)裸機(jī)開發(fā)時(shí),要處理多個(gè)任務(wù)程序框架:輪詢系統(tǒng)int main(void){ init_something(); while(1) { do_someth
    發(fā)表于 11-13 19:21 ?12次下載
    <b class='flag-5'>單片機(jī)</b>裸機(jī)程序<b class='flag-5'>框架</b>

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)判斷數(shù)據(jù)尾來接收一串?dāng)?shù)據(jù)的串口通用程序框架

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)判斷數(shù)據(jù)尾來接收一串?dāng)?shù)據(jù)的串口通用程序框架
    發(fā)表于 11-23 17:06 ?8次下載
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)筆記————51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)判斷數(shù)據(jù)尾來接收一串?dāng)?shù)據(jù)的串口通用程序<b class='flag-5'>框架</b>

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)在串口接收中斷里即時(shí)解析數(shù)據(jù)頭的特殊程序框架

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)在串口接收中斷里即時(shí)解析數(shù)據(jù)頭的特殊程序框架
    發(fā)表于 11-23 17:06 ?16次下載
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)筆記————51<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)在串口接收中斷里即時(shí)解析數(shù)據(jù)頭的特殊程序<b class='flag-5'>框架</b>

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)(利用return)實(shí)現(xiàn)判斷數(shù)據(jù)頭來接收一串?dāng)?shù)據(jù)的串口通用程序框架

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)(利用return)實(shí)現(xiàn)判斷數(shù)據(jù)頭來接收一串?dāng)?shù)據(jù)的串口通用程序框架
    發(fā)表于 11-23 17:06 ?17次下載
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)筆記————51<b class='flag-5'>單片機(jī)</b>(利用return)實(shí)現(xiàn)判斷數(shù)據(jù)頭來接收一串?dāng)?shù)據(jù)的串口通用程序<b class='flag-5'>框架</b>

    淺談單片機(jī)裸機(jī)系統(tǒng)程序框架

    淺談單片機(jī)裸機(jī)系統(tǒng)程序框架
    發(fā)表于 11-23 17:51 ?12次下載
    淺談<b class='flag-5'>單片機(jī)</b>裸機(jī)系統(tǒng)程序<b class='flag-5'>框架</b>

    單片機(jī)基礎(chǔ)到程序框架

    單片機(jī)應(yīng)用的核心技術(shù)是什么?是按鍵,數(shù)碼管,流水燈,串口。是它們的程序框架。按鍵和數(shù)碼管是 輸入是人機(jī)界面,把它們的程序框架研究透了,以后做彩屏或者更花銷的顯示界面,程序框架也可以通
    發(fā)表于 09-07 14:45 ?9次下載

    單片機(jī)中使用的RTOS代碼框架

    在這次開發(fā)中,也是遇到了很多的問題,主要的感想是關(guān)于代碼的框架。在單片機(jī)開發(fā)中,特別是使用了RTOS的時(shí)候,一個(gè)良好的代碼框架真的是相當(dāng)?shù)谋匾摹?/div>
    的頭像 發(fā)表于 02-10 14:21 ?1003次閱讀

    非常實(shí)用,推薦一種面向?qū)ο笏季S的單片機(jī)程序框架

    非常實(shí)用,推薦一種面向?qū)ο笏季S的單片機(jī)程序框架
    的頭像 發(fā)表于 10-24 18:03 ?436次閱讀
    非常實(shí)用,推薦一種面向?qū)ο笏季S的<b class='flag-5'>單片機(jī)</b>程序<b class='flag-5'>框架</b>