当前位置:文档之家› 单片机基本结构及常用程序运行构架

单片机基本结构及常用程序运行构架

2.2分支结构 多分支程序结构如右图: EX:
switch(State) { case 1:分支程序1;
break;
case2:分支程序2;
break;
…… default:break;
}
二、程序的基本结构
2.3循环结构
在应用程序中,有时需要多次反复执行相同的操作, 只是操作的操作数(数据)不同,这是就可以采用循环 程序结构。循环程序可以显著缩短程序,减少程序所 占存储空间(ROM),使程序结构大大优化。
二、程序的基本结构
2.2 分支结构
分支结构根据分支数出口的多寡分 为单分支结构和多分支结构。
单支程序结构如右图:
EX:
if(Key==1) goto @F; //跳到下一 处@@处
$ LED Toggle; .delay 1000000; @@: NOP;
开始 程序段1
条件
Y
N
程序段A
程序段B
二、程序的基本结构
单片机程序基本构架及实 现
Kerwin 2019.11.20
目录
• 一、总述 • 二、程序的基本结构
• 2.1 顺序结构 • 2.2 分支结构 • 2.3 循环结构
• 三、单片机程序执行构架
• 3.1 简单顺序执行法 • 3.2 时间片轮询法 • 3.3 操作系统(略)
一、总述
单片机程序普遍采用结构化程序设计方法,任何复 杂的程序都是由
顺序结构 ……
程序段A
程序段B
……
二、程序的基本结构
2.2分支结构 顺序结构只解决一些简单的运算、
逻辑处理等。实际控制MCU往往 要求CPU能根据给定的条件进行 判断,再选择不同的处理路径, 从而表现出某种智能。 这时候就要求改变程序的执行顺 序,即程序的流向有两个或两个 以上,这种程序结构称为分支程 序结构。分支程序结构的特点是 程序根据不同条件,进行判断和 跳转。如右图
环结构。即先执行后判 断和先判断后执行。 EX:简单的流水灯 PBC = 0xFF; PB = ~0x01; Byte Icnt = 7; D0 {
PB <<= 1; PB |= 0x01; .delay 100000; Icnt --;
}while(Icnt)
三、单片机程序执行构架
3.1 前后台顺序执行法 通大过多执数行人循使序用编的写方应法用,程不序需即要可思。考程序具体构架,直接 前后台程序一般是指没有“操作系统”的程序。所谓的
顺序结构、分支结构、循环结构 这三种基本结构组成。结构化程序设计可以使程序
结构清晰、易于读写和验证,可靠性高。 而软件构架,似乎只有纯上位机才有,其实,单片
机软件也有构架可言,只有好的构架,才能结构清晰, 方便开发和让系统稳定的工作。 单片机程序执行构架而言,分为: 顺序执行程序、时间片轮询法执行程序和操作系统 等。 本文将以应广单片机为例(本文无意穿插广告),详细 讲述单片机程序的结构,以及运行构架。
三、单片机程序执行构架
3.1前后台顺序执行法
如果喜欢使用此法的同学,如果 编写比较复杂的应用程序,一定要 先理清头脑,设计好完整的流程图 再编写程序,否则后果很严重。当 然应该程序本身很简单,此法还是 一个非常必须的选择。
三、单片机程序执行构架
3.1 前后台顺序执行法
EX:
void
FPPA0(void)
前台,就是主动去判断处理某个事务,这个是主循环里要 做的事,也就是你代码主要要写的。所谓的后台,指的是: 中断,也就是不需要你的CPU去判别,就会自动进入某一 种状态,你在这个状态下做你要做的事就可以了。 这种方法大多数人都会采用,而且我们接受的教育也基 本都是使用此法。对于我们这些基本没有学习过数据结构, 程序架构的单片机工程师来说,无疑很难在应用程序的设 计上有一个很大的提高,也导致了不同工程师编写的应用 程序很难相互利于和学习。 对一些比较简单的应用程序,实时性,并行性要求不太 高的情况下是不错的方法,程序设计简单,思路比较清晰。 但是当应用程序比较复杂的时候,如果没有一个完整的流 程图,恐怕别人很难看懂程序的运行状态,而且随着程序 功能的增加,编写应用程序的工程师的大脑也开始混乱。 即不利于升级维护,也不利于代码优化。
{
Init(); while(1) {
Task1(); Task2(); if(state==x)
}
TaskX();
}
void Interrupt(void)
{
TaskN();
}
三、单片机程序执行构架
• 3.2 时间片轮询法 • 此法是介于前后台顺序执行法与操作系统之间的一
种方法,很多人刚开始用此法会遇到很多问题,甚 至觉得还是需要操作系统才能实现真正的任务及编 程。 • 对于有操作系统的程序(如PC程序),我们并不需要 了解任务之间的切换。我们只需划分好任务,以及 任务之间通讯就可以了。但是时间片轮询法中所有 的的任务之间的通讯,任务之间的切换等等都要程 序员来实现,所以注意的问题也比较多。
• 下面着重讨论,使用此法应该注意哪些问题,才能 实现真正的任务级编程。
三、单片机程序执行构架
• 3.2 时间片轮询法 • 注意事项: • 1. 任务的划分:任务一定要划分的非常合理,尽
量做到任务的相对独立; • 2. 任务的优先:一定要注意任务优先级的设计,
循环程序一般包括4个部分:
(1)设置循环初值 进入循环前要对循环次数等 赋初值
(2)循环处理 的主题部分
即循环体部分,是循环结构
(3)循环修改
每次循环后对参数进行修改,
载入不同操作数,

进入下一次循环做准备
(4)循环控制 及时结束循环
对循环结束条件进行判断,
二、程序的基本结构
2.3 循环结构 如有图是两种常见的循
二、程序的基本结构
程序基本结构
顺序结构
程序的 基本结构
分支结构
循环结构
二、程序的基本结构
2.1顺序结构、
它是最简单、最基本的程序 结构,其特点是按指令的排 列顺序逐条执行,直到全部 执行完为止,如右图。无论 多么简单或复杂的程序,都 离不开这种形式。
EX:简单的顺序结构流水 灯
LED = 0B1111_1110; .delay 1000000 LED = 0B1111_1101; .delay 1000000 …… LED = 0B0111_1111; while(1) NOP;
相关主题