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

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

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

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

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

項(xiàng)目盡量不要出現(xiàn)delay(uchar data),但是有些協(xié)議是需要使用延遲來(lái)實(shí)現(xiàn)協(xié)議時(shí)序;前后臺(tái)框架在一定程度上提高了時(shí)效性,但是如果如果一個(gè)主函數(shù)中多次使用就會(huì)對(duì)整個(gè)軟件架構(gòu)的時(shí)效性大打折扣,給個(gè)反面教材......

//主循環(huán)
while1)
{
  //上電進(jìn)入主程序 或 觸發(fā)觸摸屏
  Function1();//播放提示語(yǔ)音
  Delay();//等待播放完畢


  //讀取M1卡信息
  Function2();
  Delay();//等待讀卡數(shù)據(jù)返回


  //播放提示語(yǔ)音
 Function3();
  Delay();//等待播放完畢


  //M1卡數(shù)據(jù)交互,判定下一步操作及提示
 Function4();
  Delay();//等待數(shù)據(jù)處理完畢


  ……
  ……
}

提出“switch 外加定時(shí)中斷”理論,主要方便初學(xué)者理解單片機(jī)程序大概的“邏輯框架”。switch 是一個(gè)萬(wàn)能語(yǔ)句,它外加 while 與 for 循環(huán)就可以做任何復(fù)雜的算法,比如,搜索算法,運(yùn)動(dòng)算法,提取關(guān)鍵詞算法,等等。它外加定時(shí)中斷,就可以搭建一個(gè)系統(tǒng)的基本框架。比如,做通信的程序框架,人機(jī)界面的程序框架,按鍵服務(wù)的程序框架,等等。switch 的精髓在于“根據(jù)條件進(jìn)行步驟的靈活切換”。

#include 


sbit led0 = P0^0;


uinsigned char time_500ms_flag = 0; //500ms標(biāo)志位


uinsigned char led_state = 0;       //狀態(tài)緩存


void initT0()
{
    TMOD |= 0x01;    //使用方式1,16位定時(shí)器
    TH0 = (65536-50000)/256;    //給TH1和TL1初初值,計(jì)數(shù)器由15536開(kāi)始計(jì)數(shù),到65535溢出
    TL0 = (65536-50000)%256;    //外部晶振為12MHz,對(duì)應(yīng)的延時(shí)時(shí)間為50ms
    EA = 1;      //總中斷打開(kāi)
    ET0 = 1;      //定時(shí)器中斷打開(kāi)
    TR0 = 1;      //定時(shí)器開(kāi)關(guān)打開(kāi)
}


void main()
{
    //初始化定時(shí)器
    initT0();
    initT1();
    //初始化led燈
    led0 = 0;
    while(1)
    {
        switch(led_state)
        {
          case 0:
              if( time_500ms_flag  )
              {
                  time_500ms_flag  = 0;
                  led_state = 1;
                  //=========任務(wù)========
                  led0 = 1;
                  //---------------------
              }
              break;
           case 1:
              if( time_500ms_flag  )
              {
                  time_500ms_flag  = 0;
                  led_state = 0;
                   //=========任務(wù)========
                  led0 = 0;
                  //---------------------
              }
              break;
            default: break;
        }
    }
}
//===============================
//t0定時(shí)器中斷服務(wù)程序
//每隔50ms進(jìn)入一次該程序
//===============================
void t0Intr() interrupt 1
{
    static unsigned int num;

    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;

    if( !time_500ms_flag )
    {
        num++;
        if( num >= 10 )
        {
            num = 0;
            time_500ms_flag = 0xff;
        }
    }
}
//--------------------------------

用個(gè)小程序說(shuō)明這框架的主要思路,這框架可拓展性很強(qiáng),時(shí)效性有保證,可以滿足很多項(xiàng)目的需求,但是這框架最致命的是遇到需要長(zhǎng)時(shí)間關(guān)閉單片機(jī)所有中斷的項(xiàng)目,因?yàn)橛行﹨f(xié)議是不能被中斷打斷,有興趣的可以留意后續(xù)推文。

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

    關(guān)注

    2

    文章

    592

    瀏覽量

    39053
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61973
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10254
  • Delay
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    10856
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    單片機(jī),單片機(jī)是什么意思

    單片機(jī),單片機(jī)是什么意思 1、什么是單片機(jī) 單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理
    發(fā)表于 03-11 09:12 ?8757次閱讀

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

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

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

    原創(chuàng)分享:自制輕量級(jí)單片機(jī)UI框架框架元素用戶接口代碼開(kāi)源平時(shí)??碿sdn,但是從來(lái)沒(méi)有自己寫(xiě)過(guò)。正好這幾天需要用單片機(jī)做一個(gè)簡(jiǎn)易的ui界面,于是自己寫(xiě)了一個(gè)輕量級(jí)的ui
    發(fā)表于 11-05 15:20 ?29次下載
    原創(chuàng)分享:自制輕量級(jí)<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ī)開(kāi)發(fā)時(shí),要處理多個(gè)任務(wù)程序框架:輪詢系統(tǒng)int main(void){ init_something(); while(
    發(fā)表于 11-13 19:21 ?12次下載
    <b class='flag-5'>單片機(jī)</b>裸機(jī)程序<b class='flag-5'>框架</b>

    單片機(jī)筆記(1)--單片機(jī)概述

    單片機(jī)概述單片機(jī)單片機(jī)微型單片機(jī),是將單片機(jī)主機(jī)(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)
    發(fā)表于 11-18 15:36 ?26次下載
    <b class='flag-5'>單片機(jī)</b>筆記(<b class='flag-5'>1</b>)--<b class='flag-5'>單片機(jī)</b>概述

    51單片機(jī)如何跳出wile循環(huán)_基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例(1

    的基本框架;4、了解LED發(fā)光二極管的特性。1.2. 設(shè)計(jì)思路電路設(shè)計(jì)思路:將一個(gè)發(fā)光二極管的一端連接到51單片機(jī)的一個(gè)I/O端口(P1端口)上,發(fā)光二極管的另一端連接到電源正極。程序設(shè)計(jì)思路:編寫(xiě)程序...
    發(fā)表于 11-23 16:23 ?4次下載
    51<b class='flag-5'>單片機(jī)</b>如何跳出wile循環(huán)_基于proteus的51<b class='flag-5'>單片機(jī)</b>開(kāi)發(fā)實(shí)例(<b class='flag-5'>1</b>)

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

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)判斷數(shù)據(jù)尾來(lái)接收一串?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ù)尾來(lái)接收一串?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ù)頭來(lái)接收一串?dāng)?shù)據(jù)的串口通用程序框架

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)(利用return)實(shí)現(xiàn)判斷數(shù)據(jù)頭來(lái)接收一串?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ù)頭來(lái)接收一串?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代碼框架

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