当前位置:
文档之家› 单片机基本结构及常用程序运行构架
单片机基本结构及常用程序运行构架
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;