0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机实用框架-1

汽车电子技术 来源:玩转单片机 作者:Julian 2023-02-10 14:28 次阅读

项目尽量不要出现delay(uchar data),但是有些协议是需要使用延迟来实现协议时序;前后台框架在一定程度上提高了时效性,但是如果如果一个主函数中多次使用就会对整个软件架构的时效性大打折扣,给个反面教材......

//主循环
while1)
{
  //上电进入主程序 或 触发触摸屏
  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

    文章

    598

    浏览量

    39177
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62426
  • 软件架构
    +关注

    关注

    0

    文章

    64

    浏览量

    10274
  • Delay
    +关注

    关注

    0

    文章

    10

    浏览量

    10877
收藏 人收藏

    评论

    相关推荐

    侃侃单片机裸奔的程序框架

    [url=]侃侃单片机裸奔的程序框架[/url]
    发表于 01-29 13:52

    单片机程序框架的相关资料分享

    单片机程序框架
    发表于 11-22 07:46

    CAFrame单片机程序框架分享

    CAFrame单片机程序框架简介程序运行优先级CAFrame配置通用事件应用FLowchart流程图简介CAFrame 单片机C语言程序开发框架可用于不同的
    发表于 11-24 07:18

    单片机,单片机是什么意思

    单片机,单片机是什么意思 1、什么是单片机 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理
    发表于 03-11 09:12 8880次阅读

    PIC单片机程序结构框架

    为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架
    发表于 06-27 13:41 5562次阅读

    原创分享:自制轻量级单片机UI框架

    原创分享:自制轻量级单片机UI框架框架元素用户接口代码开源平时常看csdn,但是从来没有自己写过。正好这几天需要用单片机做一个简易的ui界面,于是自己写了一个轻量级的ui
    发表于 11-05 15:20 29次下载
    原创分享:自制轻量级<b class='flag-5'>单片机</b>UI<b class='flag-5'>框架</b>

    单片机程序框架

    单片机程序框架
    发表于 11-13 14:21 15次下载
    <b class='flag-5'>单片机</b>程序<b class='flag-5'>框架</b>

    单片机裸机程序框架

    单片机裸机程序框架##单片机裸机开发时,要处理多个任务程序框架:轮询系统int main(void){ init_something(); while(
    发表于 11-13 19:21 12次下载
    <b class='flag-5'>单片机</b>裸机程序<b class='flag-5'>框架</b>

    51单片机如何跳出wile循环_基于proteus的51单片机开发实例(1

    的基本框架;4、了解LED发光二极管的特性。1.2. 设计思路电路设计思路:将一个发光二极管的一端连接到51单片机的一个I/O端口(P1端口)上,发光二极管的另一端连接到电源正极。程序设计思路:编写程序...
    发表于 11-23 16:23 4次下载
    51<b class='flag-5'>单片机</b>如何跳出wile循环_基于proteus的51<b class='flag-5'>单片机</b>开发实例(<b class='flag-5'>1</b>)

    单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架

    单片机学习笔记————51单片机实现判断数据尾来接收一串数据的串口通用程序框架
    发表于 11-23 17:06 8次下载
    <b class='flag-5'>单片机</b>学习笔记————51<b class='flag-5'>单片机</b>实现判断数据尾来接收一串数据的串口通用程序<b class='flag-5'>框架</b>

    单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架

    单片机学习笔记————51单片机实现在串口接收中断里即时解析数据头的特殊程序框架
    发表于 11-23 17:06 16次下载
    <b class='flag-5'>单片机</b>学习笔记————51<b class='flag-5'>单片机</b>实现在串口接收中断里即时解析数据头的特殊程序<b class='flag-5'>框架</b>

    单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架

    单片机学习笔记————51单片机(利用return)实现判断数据头来接收一串数据的串口通用程序框架
    发表于 11-23 17:06 17次下载
    <b class='flag-5'>单片机</b>学习笔记————51<b class='flag-5'>单片机</b>(利用return)实现判断数据头来接收一串数据的串口通用程序<b class='flag-5'>框架</b>

    浅谈单片机裸机系统程序框架

    浅谈单片机裸机系统程序框架
    发表于 11-23 17:51 12次下载
    浅谈<b class='flag-5'>单片机</b>裸机系统程序<b class='flag-5'>框架</b>

    单片机基础到程序框架

    单片机应用的核心技术是什么?是按键,数码管,流水灯,串口。是它们的程序框架。按键和数码管是 输入是人机界面,把它们的程序框架研究透了,以后做彩屏或者更花销的显示界面,程序框架也可以通
    发表于 09-07 14:45 9次下载

    单片机中使用的RTOS代码框架

    在这次开发中,也是遇到了很多的问题,主要的感想是关于代码的框架。在单片机开发中,特别是使用了RTOS的时候,一个良好的代码框架真的是相当的必要的。
    的头像 发表于 02-10 14:21 1083次阅读