項目盡量不要出現(xiàn)delay(uchar data),但是有些協(xié)議是需要使用延遲來實現(xiàn)協(xié)議時序;前后臺框架在一定程度上提高了時效性,但是如果如果一個主函數(shù)中多次使用就會對整個軟件架構的時效性大打折扣,給個反面教材......
//主循環(huán)
while(1)
{
//上電進入主程序 或 觸發(fā)觸摸屏
Function1();//播放提示語音
Delay();//等待播放完畢
//讀取M1卡信息
Function2();
Delay();//等待讀卡數(shù)據返回
//播放提示語音
Function3();
Delay();//等待播放完畢
//M1卡數(shù)據交互,判定下一步操作及提示
Function4();
Delay();//等待數(shù)據處理完畢
……
……
}
提出“switch 外加定時中斷”理論,主要方便初學者理解單片機程序大概的“邏輯框架”。switch 是一個萬能語句,它外加 while 與 for 循環(huán)就可以做任何復雜的算法,比如,搜索算法,運動算法,提取關鍵詞算法,等等。它外加定時中斷,就可以搭建一個系統(tǒng)的基本框架。比如,做通信的程序框架,人機界面的程序框架,按鍵服務的程序框架,等等。switch 的精髓在于“根據條件進行步驟的靈活切換”。
#include
sbit led0 = P0^0;
uinsigned char time_500ms_flag = 0; //500ms標志位
uinsigned char led_state = 0; //狀態(tài)緩存
void initT0()
{
TMOD |= 0x01; //使用方式1,16位定時器
TH0 = (65536-50000)/256; //給TH1和TL1初初值,計數(shù)器由15536開始計數(shù),到65535溢出
TL0 = (65536-50000)%256; //外部晶振為12MHz,對應的延時時間為50ms
EA = 1; //總中斷打開
ET0 = 1; //定時器中斷打開
TR0 = 1; //定時器開關打開
}
void main()
{
//初始化定時器
initT0();
initT1();
//初始化led燈
led0 = 0;
while(1)
{
switch(led_state)
{
case 0:
if( time_500ms_flag )
{
time_500ms_flag = 0;
led_state = 1;
//=========任務========
led0 = 1;
//---------------------
}
break;
case 1:
if( time_500ms_flag )
{
time_500ms_flag = 0;
led_state = 0;
//=========任務========
led0 = 0;
//---------------------
}
break;
default: break;
}
}
}
//===============================
//t0定時器中斷服務程序
//每隔50ms進入一次該程序
//===============================
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;
}
}
}
//--------------------------------
用個小程序說明這框架的主要思路,這框架可拓展性很強,時效性有保證,可以滿足很多項目的需求,但是這框架最致命的是遇到需要長時間關閉單片機所有中斷的項目,因為有些協(xié)議是不能被中斷打斷,有興趣的可以留意后續(xù)推文。
-
協(xié)議
+關注
關注
2文章
612瀏覽量
39704 -
函數(shù)
+關注
關注
3文章
4365瀏覽量
63872 -
軟件架構
+關注
關注
0文章
64瀏覽量
10439 -
Delay
+關注
關注
0文章
10瀏覽量
11030
發(fā)布評論請先 登錄
相關推薦
CAFrame單片機程序框架分享
單片機,單片機是什么意思
原創(chuàng)分享:自制輕量級單片機UI框架

單片機裸機程序框架

單片機學習筆記————51單片機實現(xiàn)判斷數(shù)據尾來接收一串數(shù)據的串口通用程序框架

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

單片機學習筆記————51單片機(利用return)實現(xiàn)判斷數(shù)據頭來接收一串數(shù)據的串口通用程序框架

評論