项目尽量不要出现delay(uchar data),但是有些协议是需要使用延迟来实现协议时序;前后台框架在一定程度上提高了时效性,但是如果如果一个主函数中多次使用就会对整个软件架构的时效性大打折扣,给个反面教材......
//主循环
while(1)
{
//上电进入主程序 或 触发触摸屏
Function1();//播放提示语音
Delay();//等待播放完毕
//读取M1卡信息
Function2();
Delay();//等待读卡数据返回
//播放提示语音
Function3();
Delay();//等待播放完毕
//M1卡数据交互,判定下一步操作及提示
Function4();
Delay();//等待数据处理完毕
……
……
}
提出“switch 外加定时中断”理论,主要方便初学者理解单片机程序大概的“逻辑框架”。switch 是一个万能语句,它外加 while 与 for 循环就可以做任何复杂的算法,比如,搜索算法,运动算法,提取关键词算法,等等。它外加定时中断,就可以搭建一个系统的基本框架。比如,做通信的程序框架,人机界面的程序框架,按键服务的程序框架,等等。switch 的精髓在于“根据条件进行步骤的灵活切换”。
#include
sbit led0 = P0^0;
uinsigned char time_500ms_flag = 0; //500ms标志位
uinsigned char led_state = 0; //状态缓存
void initT0()
{
TMOD |= 0x01; //使用方式1,16位定时器
TH0 = (65536-50000)/256; //给TH1和TL1初初值,计数器由15536开始计数,到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;
}
}
}
//--------------------------------
用个小程序说明这框架的主要思路,这框架可拓展性很强,时效性有保证,可以满足很多项目的需求,但是这框架最致命的是遇到需要长时间关闭单片机所有中断的项目,因为有些协议是不能被中断打断,有兴趣的可以留意后续推文。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
协议
+关注
关注
2文章
593浏览量
39129 -
函数
+关注
关注
3文章
4276浏览量
62303 -
软件架构
+关注
关注
0文章
64浏览量
10268 -
Delay
+关注
关注
0文章
10浏览量
10867
发布评论请先 登录
相关推荐
CAFrame单片机程序框架分享
CAFrame单片机程序框架简介程序运行优先级CAFrame配置通用事件应用FLowchart流程图简介CAFrame 单片机C语言程序开发框架可用于不同的
发表于 11-24 07:18
原创分享:自制轻量级单片机UI框架
原创分享:自制轻量级单片机UI框架框架元素用户接口代码开源平时常看csdn,但是从来没有自己写过。正好这几天需要用单片机做一个简易的ui界面,于是自己写了一个轻量级的ui
发表于 11-05 15:20
•29次下载
单片机裸机程序框架
单片机裸机程序框架##单片机裸机开发时,要处理多个任务程序框架:轮询系统int main(void){ init_something(); while(
发表于 11-13 19:21
•12次下载
51单片机如何跳出wile循环_基于proteus的51单片机开发实例(1)
的基本框架;4、了解LED发光二极管的特性。1.2. 设计思路电路设计思路:将一个发光二极管的一端连接到51单片机的一个I/O端口(P1端口)上,发光二极管的另一端连接到电源正极。程序设计思路:编写程序...
发表于 11-23 16:23
•4次下载
单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架
单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架
发表于 11-23 17:06
•8次下载
单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架
单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架
发表于 11-23 17:06
•16次下载
单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架
单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架
发表于 11-23 17:06
•17次下载
从单片机基础到程序框架
单片机应用的核心技术是什么?是按键,数码管,流水灯,串口。是它们的程序框架。按键和数码管是
输入是人机界面,把它们的程序框架研究透了,以后做彩屏或者更花销的显示界面,程序框架也可以通
发表于 09-07 14:45
•9次下载
在单片机中使用的RTOS代码框架
在这次开发中,也是遇到了很多的问题,主要的感想是关于代码的框架。在单片机开发中,特别是使用了RTOS的时候,一个良好的代码框架真的是相当的必要的。
评论