1_第3章 单片机软件工程基础
单片机基础知识资料-PPT
第1、3章 单片机应用概述与开发步骤
1. 电子计算机的发展概述
2. 单片机的发展过程及产品近况
3. 单片机的特点 4. 单片机应用系统开发简介
5.1 计算机语言概述
5.2 80C51单片机寻址方式
5.3 80C51单片机指令系统
暂时不讲
5.4 80C51汇编语言程序设计
5.5 80C51单片机C51程序设计语言
5.6 C51的运算符和表达式
5.7 C51的库函数
5.8 C51的应用技巧
第5章 80C51单片机软件基础知识
单片机应用系统
大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
第1、3章 单片机应用概述与开发步骤
软件系统
• 系统资源分配 • 程序结构 • 数学模型 • 程序流程 • 编制程序
第1、3章 单片机应用概述与开发步骤
程序设计
通常是C语言或者汇编语言,在特定的集成开发环境(IDE)中编程 调试,比如应用最广泛的KEIL uVision3
通过特殊功能寄存器可实现对单片机内部资源的 操作和管理。
常用特殊功能寄存器
第4章 80C51单片机硬件基础知识
常用特殊功能寄存器
第4章 80C51单片机硬件基础知识
常用特殊功能寄存器
端口P0~P3
特殊功能寄存器P0~P3分别是I/O端口P0~P3的锁存 器。80C51单片机是把I/O当作一般的特殊功能寄存器 使用,不专设端口操作指令,使用方便。
•数据缓冲区 30H~7FH是数 据缓冲区,即 用户RAM区, 共80个单元。
第1章 51单片机的基础知识
第1章 51单片机的基础知识51单片机是一种广泛应用的嵌入式微控制器,具有强大的功能和灵活性。
在学习和使用51单片机之前,了解其基础知识是至关重要的。
本章将介绍51单片机的基础知识,包括硬件结构、寄存器、指令集和编程语言。
1.1 51单片机的硬件结构51单片机的硬件结构是指其内部的组成部分和外部连接。
51单片机包含中央处理器(CPU)、存储器、输入/输出(I/O)口、定时器/计数器、串行通信口等功能模块。
这些功能模块共同协作,完成各种任务。
1.1.1 中央处理器(CPU)51单片机的中央处理器是核心部件,负责执行指令、控制程序运行和处理数据。
51单片机采用哈佛结构,将程序存储器和数据存储器分开。
它包含一个8位的累加器(A)和一个指令寄存器(IR),用于指令的执行。
1.1.2 存储器51单片机的存储器包括程序存储器和数据存储器。
程序存储器用于存储程序指令,可以是内部存储器或外部存储器。
数据存储器用于存储程序运行中产生的数据,包括RAM和ROM。
1.1.3 输入/输出(I/O)口51单片机具有一定数量的I/O口,用于与外部设备进行数据交互。
输入口用于接收外部信号,输出口用于发送数据或控制外部设备。
它们可以是并行口或串行口,根据需要进行配置。
1.1.4 定时器/计数器定时器/计数器是51单片机的重要组成部分,用于产生定时延迟和计数脉冲。
定时器可以设置为定时模式或计数模式,定时器中断可用于实现时间控制和精确计时。
1.1.5 串行通信口串行通信口是51单片机与外部设备进行串行通信的接口,常用的有UART和SPI。
它们通过串行传输数据,实现与外部设备的数据交换和通信。
1.2 51单片机的寄存器51单片机具有一组特殊功能寄存器,用于配置和控制其各项功能。
这些寄存器负责存储和传输数据,执行各种功能操作。
常见的寄存器包括通用寄存器、状态寄存器、特殊功能寄存器等。
1.2.1 通用寄存器通用寄存器是用于存储临时数据的寄存器,包括8个存储器编号,分别为R0 - R7。
单片机基础3
单片机基础3
第3章 指令系统
第3章 指令系统
第3章 指令系统
3.1 寻址方式
所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放、传送、运算 都要通过指令来完成。 编程者必须自始至终都 要十分清楚操作数的位置, 以及如何将它们传送 到适当的寄存器去参与运算。每一种计算机都 具有多种寻址方式。寻址方式的多少是反映指 令系统优劣的主要指标之一。
7. 位寻址
该种寻址方式中, 操作数是内部RAM单元中某一位的 信息。 MOV C,30H
第3章 指令系统
3.2 指令系统
3.2.1 指令分类
按指令的功能, MCS -51 指令系统可分为下列 5 类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。
#data——指令中的 8 位常数。
#data16——指令中的 16 位常数。 addr16——16 位的目的地址, 用于LJMP, LCALL指令, 可 指向 64 KB程序存储器地址空间。
பைடு நூலகம்
第3章 指令系统
addr11——11位的目的地址, 用于AJMP, ACALL指令。 目的地址必须与下一条指令的第一个字节在同一个 2 KB程 序存储器地址空间之内。
第3章 指令系统
5. 基址寄存器加变址寄存器间接寻址 这种寻址方式用于访问程序存储器中的数据表 格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 例如: MOVC A, @A+DPTR MOVC A, @ A+PC JMP @A+DPTR;散转指令
第3章 指令系统
在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间:
软件工程基础知识
●04
第四章 软件设计
结构化设计
结构化设计是软件设计中的重要概念,包括模块 化设计和使用数据流图、DFD等技术来组织和管 理软件系统的结构。通过结构化设计,可以更好 地理清软件的模块,提高软件的可维护性和可扩
展性。
面向对象设计
封装
将数据和操作封装 在一个单元中
多态
同一操作作用于不 同的对象,产生不
模块化、层次化的 编程方法
敏捷开发
迭代、增量式的开 发方法
面向对象编程
将数据和操作封装 在对象中
DevOps
开发和运维的一体 化
软件工程敏捷开发
敏捷开发是一种迭代式的开发方法,注重团队合 作、快速反馈和灵活应对变化。敏捷开发通过持 续交付、用户参与和迭代开发来提高开发效率和
软件质量。
●02
第2章 软件开发方法
总结
重要性
软件需求工程是软件开发的关键阶段,需求获取和验证的准确性直接影响最终 软件质量
持续性
需求工程是一个持续循环的过程,随着项目的发展和变化,需求也会不断更新 和调整
沟通能力
与用户有效沟通是需求获取的关键,能够确保开发团队真正理解用户需求
展望
软件需求工程是软件工程中非常重要的一个环节,随着信息 技术的不断发展,需求工程的重要性也日益凸显。未来,随 着人工智能、大数据等新技术的广泛应用,需求工程也将面 临更多的挑战和机遇。
目标设定
明确团队目标与方 向
冲突解决
及时解决团队内部 矛盾
激励机制
激励团队成员保持 积极性
结语
软件工程实践是软件工程师必备的基础知识之一,通过学习 和实践,我们能够更好地应对各种复杂的软件项目,提高项 目成功率和质量。不断学习和提升技能是软件工程师成长的 关键,希望大家能够在软件工程的道路上不断前行,创造更 加优秀的软件产品。
单片机基础知识.ppt
7
三、单片机的特点及应用
1. 采用哈佛体系结构 2. 采用面向控制的指令系统 3. 引脚功能服用 4. 片内RAM作寄存器 5. 类型齐全 6. 功能通用 • 具有三高优势(集成度高、可靠性高、性价比高)。
2020/6/8
8
三、单片机的特点及应用
• 单片机主要应用于工业检测与控制、计算 机外设、智能仪器仪表、通讯设备、家用 电器等。 特别适合于嵌入式微型机应用系 统。
到最低位。举例:
1. 0.625转换成二进制数
0.625
×2
1.250 ×2
1 (b-1)
0.5 0 ×2
0 (b-2)
1.0
1 (b-3)
• 0.625 = 0.101B
2. 0.625转换成十六进制数 0.625 × 16 = 10.0 0.625 = 0.AH
3. 208.625 转换成十六进制 数208.625 = D0.AH
2 19
1 ( b1)
29
1 ( b2)
24 22
0 ( b3) 0 ( b4)
21
1 ( b5)
0 2020/6/8
2. 208转换成十六进制 数
208 = D0H
16 208 16 13
余0 余 13 =DH
0
20
十进制数转换成二、十六进制数
小数转换法
• “乘基取整”:用转换进制的基数乘以小数部分,直至小数为0 或达到转换精度要求的位数。每乘一次取一次整数,从最高位排
系列8098/8096、80C198/80C196
• 90年代初-至今 16位单片机高档32位单片机
2020/6/8
6
三、单片机的特点及应用
第一章 单片机基础知识
第一章单片机基础知识单片机基础知识单片机(Microcontroller)是一种被广泛应用于电子设备中的微型计算机芯片,它集成了中央处理器(CPU)、存储器、输入输出端口及定时器等重要元件。
它的应用范围非常广泛,从简单的家电控制器到复杂的工控系统,无不离开单片机的应用。
一、单片机的起源及发展单片机的起源可以追溯到上世纪70年代早期,当时Intel公司推出了Intel 8048和Intel 8051,这两款单片机被视为单片机的奠基之作。
此后,各大芯片厂商纷纷推出了自己的单片机产品,并且随着技术的不断进步,单片机的功能和性能也得到了极大的提升。
二、单片机的组成单片机由CPU、存储器、输入输出端口和定时器等组成。
其中,CPU是单片机的核心部件,它负责执行指令和进行计算。
存储器主要用来存储程序指令和数据。
输入输出端口用于与外部设备进行数据交互。
定时器则负责计算时间和生成定时信号。
三、单片机的工作原理单片机以时钟信号驱动,指令按照一定的时序依次执行。
当单片机上电后,首先会复位,然后进入初始化程序,接着执行主程序。
单片机可以根据需要从输入端口读取数据,经过处理后再通过输出端口输出结果。
四、单片机的应用单片机广泛应用于各个领域,如家电控制、工控系统、汽车电子、医疗设备等。
以家电控制为例,我们可以通过单片机来实现空调的温度控制、洗衣机的程序控制、电视机的遥控功能等。
五、单片机的学习方法学习单片机需要掌握汇编语言和C语言编程。
首先,我们需要了解单片机的基本原理和功能,然后学习如何使用编译器和开发环境搭建单片机的开发环境。
接下来,可以通过编写简单的程序来加深对单片机的理解,并逐步掌握单片机的高级功能和应用。
六、单片机的发展趋势随着科技的不断进步,单片机的功能和性能将会不断提升。
未来,单片机将朝着低功耗、高性能和高可靠性的方向发展。
同时,随着物联网的兴起,单片机的应用也将会更加广泛。
七、总结单片机作为一种重要的电子元件,广泛应用于各种电子设备中。
单片机第3章软件基础
单片机原理及应用授课人:曾孟佳第3章单片机软件基础•3.1 数制•3.2 数制转换•3.3 补码运算•3.4 溢出问题•3.5 奇偶校验技术3.1 数制●十进制●二进制●八进制●十六进制第3章单片机软件基础3.2 数制转换●十进制和二进制的互化●二进制和八进制、十六进制的互化十二整数部分除2取余,小数部分乘2取整二十按权展开,各项相加二八十六二数的机器码表示和码制互化①真值+移码值,不考虑符号位,结果为十进制;②先求补码,由补码的符号位取反,其余各位不变。
●原码一个数的原码用1位最高位表示符号,其后的各位表示数值,0为正,1为负。
●反码●补码●移码正数的反码同原码。
负数的反码符号位不变仍为1,数值位全部取反。
正数的补码同原码。
负数的补码由原码的最低位向高位看,遇到的第一个1之前的各位(包括1)不变,其余各位取反,符号位不变。
3.3 补码运算补码加法运算[x]补+[y]补=[x+y]补补码减法运算[x-y]补=[x]补-[y]补=[x]补+[-y]补[-y]补=﹁[y]补+2-n﹁表示对[y]补作包括符号位在内的求反操作,2-n表示最末位的1第3章单片机软件基础3.4 溢出问题运算结果超出了所能表示的数据范围,就会产生溢出。
溢出检测方法●单符号位检测法2.最高有效位产生进位而符号位无进位时,发生上溢。
最高有效位无进位而符号位产生进位时,发生下溢。
最高有效位的进位与符号位的进位值相异时发生溢出。
●双符号位检测法(变形补码)运算结果的两符号位相异时发生溢出。
1.同符号数相加,运算结果符号与加数符号相异,发生溢出。
第3章单片机软件基础3.5 奇偶校验技术奇校验偶校验1210-⊕⊕⊕⊕=n x x x x C ⊕表示按位加1210-⊕⊕⊕⊕=n x x x x C 数据偶校验编码奇校验编码101010101010101001010101010000000000000000000000000101111111011111111011111110奇偶校验提供奇数个错误检测,无法检测偶数个错误,更无法识别错误信息的位置。
单片机第3章
操作码 操作数
MCS-51系列单片机中,双字节的机器指令共有46条。
(3)三字节指令 三字节指令的第一个字节为操作码,第二个字节和第三个字 节都是操作数或操作数的地址。这类指令的指令格式为:
nn
操作码
nn +1 第一操作数
nn +2 第二操作数
例如MOV 2FH,#00H指令,其功能为2FH←00H。
一台计算机所能执行的指令集合称为该计算机的指令系 统。指令系统是由计算机生产厂家预先定义的,用户必 须遵循这个预定的规定。
MCS-51系列单片机指令有两种标识方式: 机器语言方式 和汇编语言方式。
• 机器语言方式由二进制代码组成(通常用十六进制表示 ),被称为机器指令。用机器指令编写的程序称为机器 语言源程序,它是机器所能理解和执行的,但人们记忆 和读写都很困难。
(4)操作数指出了指令的操作对象。表示的是参与操作的数据来源 和操作之后结果数据的存放位置。操作数可以是一个具体的数据 ,也可以是存放数据的单元地址或寄存器符号,还可以是符号常 量或符号地址等。指令的操作数可能有1个、2个或3个,有些指令 可能没有操作数。操作数与操作数之间用“,”分隔,操作码与 操作数之间用空格分隔。具有保存操作结果的操作数称为目的操 作数,只提供数据的称为源操作数。
例如:一本书放在甲抽屉中,上了锁;其开锁的钥匙放在 乙抽屉中,乙抽屉也上了锁。问如何才能取到哪本书? 这就是一个间接寻址的问题,要经过两次寻址才能找到 哪本书。 MOV 30H,#20H ;书放在甲抽屉中 MOV R0,#30H ;甲抽屉的钥匙放在乙抽屉中 MOV A,@R0 ;取书,A中 20H
外部数据存储空间,其取值范围为0000H~0FFFFH。
13. /:加在位地址的前面,表示对该位先求反再参加 运算,不影响该位的原值。
单片机及控制-第一章单片机基础知识
单片机及控制-第一章单片机基础知识单片机及控制第一章单片机基础知识在当今科技飞速发展的时代,单片机作为一种重要的微控制器,广泛应用于各个领域,从家用电器到工业自动化,从汽车电子到航空航天,都能看到单片机的身影。
那么,什么是单片机?它又是如何工作的呢?让我们一起来揭开单片机的神秘面纱,走进单片机的基础知识世界。
单片机,顾名思义,就是将计算机的主要功能部件集成在一块芯片上的微型计算机。
它通常包括中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入/输出接口(I/O 接口)、定时器/计数器以及中断系统等。
这些部件协同工作,使得单片机能够完成各种复杂的控制任务。
中央处理器(CPU)是单片机的核心,它负责执行指令和进行数据运算。
就像人的大脑一样,指挥着整个系统的运行。
单片机的 CPU 虽然性能不如我们常见的个人电脑 CPU 那么强大,但它具有功耗低、体积小、成本低等优点,非常适合用于控制特定的设备和系统。
存储器是单片机用来存储程序和数据的地方。
程序存储器用于存放单片机运行所需的程序代码,数据存储器则用于存储运行过程中的临时数据。
程序存储器通常是只读存储器(ROM),如闪存(Flash),而数据存储器可以是随机存取存储器(RAM)。
输入/输出接口(I/O 接口)是单片机与外部世界进行交互的通道。
通过这些接口,单片机可以接收外部的输入信号,如传感器的检测信号,也可以向外输出控制信号,驱动执行机构工作。
例如,控制电机的转动、点亮 LED 灯等。
定时器/计数器在单片机中也起着重要的作用。
它们可以用于实现定时功能,比如定时发送数据、控制周期性的操作等。
计数器则可以用于对外部脉冲进行计数,实现测量、计数等功能。
中断系统则让单片机能够及时响应外部的紧急事件。
当有中断请求发生时,单片机可以暂停当前正在执行的任务,转而去处理中断服务程序,处理完后再返回原来的任务继续执行。
单片机的工作过程可以简单地描述为:首先,通过编程将所需的控制程序写入程序存储器。
单片机软件工程基础
在软件升级后,对原有功能进行测 试,确保功能未受影响。
04
03
单片机软件工程实践
单片机软件项目启动与规划
确定项目目标
明确单片机软件项目的目标,包括功能需求、性 能要求和预期的输出结果。
制定项目计划
根据项目目标,制定项目计划,包括时间表、预 算和资源分配等。
组建项目团队
根据项目需求,组建具备相关技能和经验的团队, 明确团队成员的职责和分工。
智能化
随着人工智能和机器学习技术的不断发展,单片机软件将 更加智能化,能够实现更高级别的自动化和自主决策。
嵌入式系统
嵌入式系统是现代电子产品的重要组成部分,单片机软件 工程将更加注重嵌入式系统的设计和开发,以满足各种应 用需求。
云计算和物联网
云计算和物联网技术的发展将为单片机软件工程提供更广 阔的发展空间,实现更高效的数据处理和远程控制。
快速迭代和灵活性
随着市场需求和技术发展的快速变化,单 片机软件工程需要具备快速迭代和灵活应 对的能力,以满足不断变化的市场需求。
嵌入式系统设计和开发
随着嵌入式系统的广泛应用,单片机 软件工程需要加强嵌入式系统的设计 和开发能力,以满足各种应用需求。
THANKS
感谢观看
单片机具有体积小、功耗低、可 靠性高、价格便宜等特点,广泛 应用于智能仪表、工业控制、智 能家居等领域。
单片机软件工程的重要性
实现单片机功能
降低成本
单片机软件工程是实现单片机功能的 关键,通过编写程序,可以实现单片 机的各种控制和数据处理功能。
单片机软件工程可以降低单片机的成 本,因为可以通过软件实现硬件的功 能,从而减少硬件的用量和成本。
详细描述
该案例中,单片机负责控制医疗设备的运行 和数据采集,如监护仪、呼吸机等。通过编 程,系统可以自动监测患者的生理参数,并 在异常情况下自动报警或采取紧急措施。此 外,系统还可以将医疗设备与医生工作站连 接起来,方便医生远程查看患者数据和诊断 病情。
单片机第1-3章
第1章 单片机基础知识概述
反码:正数的反码与原码相同,负数的反码为:符号位 不变,数值部分按位取反。 例如,原码 1000 0100B→反码 1111 1011B 8位无符号反码数的范围是 0000 0000B~1111 1111B(0 ~ FFH或0 ~255) 8位有符号反码数的范围是 1111 1111B~0111 1111B(FFH~7FH或-127~127)
SCM——将通用微计算机 基本功能部件集成在一块 芯片上构成的一种专用微 计算机系统
SCM = CPU+程序存储器+数据存储器+定时器/计数器+
内外中断+可编程I/O+可编程全双工串行口+…
第2章MCS-51单片机结构及原理
2.1.1 MCS-51单片机的内部结构
INTEL MCS-51系列单片机一览表
0100 1111 + 1010 0001 ———————— AC=1 1111 0000 半进位
用途:1、根据AC判断加减运 算时有无半进位或半借位;
2、在BCD码调整运算中要用 到AC标志
第2章MCS-51单片机结构及原理 PSW.6 PSW.5 PSW.3
PSW.7
PSW.4
PSW.2
第2章 MCS-51单片机结构及原理
2.1 MCS-51单片机结构
2.2 MCS-51的存储器结构
2.3单片机的复位、时钟与时序
2.4并行I/O口
第2章MCS-51单片机结构及原理
2.1 MCS-51单片机结构
2.2 MCS-51的存储器结构
2.3单片机的复位、时钟与时序 2.4并行I/O口
第2章MCS-51单片机结构及原理
第1章 单片机基础知识概述
第3章单片机软件工程基础
第3章单片机软件工程基础对于初学者来说,在掌握了单片机内部资源的使用方法之后,接下来的问题是:如何将众多的功能集成在一起构成一个完整的系统?如何让多个功能〔任务)同时执行?如何让外部的事件都能立即得到处理?如何与最终用户进行友好的人机交互?如何保持程序具有扩展性,能够很容易地增加新功能?本章从软件结构,工程方法的角度出发,对上述问题进行探讨。
并为读者详解两种常用的程序架构,以及在相应架构下的编程方法。
还介绍“状态机建模”这一强大的并行多任务建模手段,以及“状态机建模”在程序设计中的应用。
实际上,各类单片机系统的软件在硬件隔离层之上并无本质区别,各种功能都可以通过软件工程手段实现,各种程序结构框架也是通用的。
所以,掌握本章的内容,对于各种嵌入式系统开发与设计都会有帮助。
3.1前后台程序结构前后台程序结构是最常用的程序结构之一,简单地说,前后台程序由主循环加中断构成,主循环程序称为“后台程序”或“背景程序”,各个中断程序称为“前合程序”,依靠中断内的前台程序来实现事件响应与信息收集。
后台程序中多个处理任务顺序依次执行,从宏观上看,这些任务将是同时执行的。
3.1.1任务首先明确“任务”的概念。
任务(Task)是指完成某一单一功能的程序。
例如温度报警装置,根据功能划分为:获取温度、显示温度、门限比较并驱动报警装置、用户设置报警值、数据通信5个任务。
从宏观上看这5个任务必须是同时进行的,任何时候一旦超温必须报警;任何时候按设置按钮都能进入菜单设置温度上下限;任何时候串口如果收到数据请求帧,都必须立即回复温度数据等。
这种多个任务同时执行,且各种事件对响应时间要求严格的软件系统被称为“实时多任务系统”。
大多数单片机系统都属于实时多任务系统。
而CPU本身是一个串行执行部件,它只能依次执行代码,不能同时执行多段代码,需要借助一定的软件手段来实现多任务的同时执行。
目前,有许多成熟的软件结构与方法能够实现实时多任务系统,如小巧灵活的前后台程序结构、适合并发多任务的事件触发结构、适合大型软件系统的R'I'OS等,各有其优缺点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.4 状态机建模应用实例
例3.2.3 在MSP430单片机上,P1.5、P1.6、P1.7口各接有一个按键(S1、S
2、S3),按下为低电平。编写一个键盘程序。要求能够识别长、短按键并 返回不同键值。当按键时间小于2s时,认为是一次短按键,按键时间大于
2s后返回一次长键(0xC0+键值),之后每隔0.25s返回一次连续长按键(0x80 +键值)。且要求键盘程序不阻塞CPU运行。
(3)前后台多任务程序
图3.1.1 一个前后台程序结构的例子
3.1.2 实时性
(1)实时性最高的事件 (2)实时性较高的事件 (3)实时性较低的事件
(1)实时性最高的事件
它指对于要求零延迟、立即响应或立即动作的 事件。例如高速波形的产生、波形采集触发、 微秒级脉宽测量等场合,要求响应速度在数十 至数百纳秒级,甚至小于单片机的一个指令执 行周期。
3.2.3 通过状态转移图生成代码
(1) 在状态中判断事件(事件查询) (2) 在事件中判断状态(事件触发)
(1) 在状态中判断事件(事件查询)
图3.2.9 将该状态机模型写成代码
(2) 在事件中判断状态(事件触发)
另一种实现方法是在每个事件的中断(或查询到 事件发生)函数内,判断当前状态,并根据当前 状态执行不同的动作,再做相应的状态转移。
(4)CPU字长造成的临界代码
MSP430单片机具有16位CPU内核。这说明它具 有16位字长的处理能力,每条指令都可以处理1 6比特数据。
(5)临界代码保护的方法
第一种方法,也是最简单的方法,就是在上面各例中 采用的用DINT()语句关闭中断,临界代码结束后用EINT() 函数开启中断。 第二种方法,也是在嵌入式软件中最通用的方法。 第三种方法是关中断前将总中断允许控制位状态保存 到一个变量里,然后再关中断保护临界代码,之后根 据保存的控制字决定是否恢复中断。 第四种方法是用软件模拟堆栈的行为,将进入临界代 码的次数和退出临界代码的次数进行统计,如果各临 界代码之间有调用关系,则只对最外层的临界代码区 进行中断开关操作。
例3.2.2 某电子表具有两个按键A和B用于操作与设 置,按键功能和操作方法如下。为该电子表的按键 操作程序画出状态转移图,并写出代码。
图3.2.7 电子表程序的状态转移图
(2)状态转移表(来表示, 还能以二维文本列表或矩阵方法来表示。
(2)状态转移表(转移矩阵)
3.1.6 前后台程序结构的特点
这种串行的顺序执行带了了许多优点: 首先,在后台循环中,一个任务执行完毕后才 执行下一任务。 其次,在后台任务顺序执行的结构中,不会出 现多个后台任务同时访问共享资源的情况。 第三,前后台程序的结构灵活,实现形式与实 现手段多样,可以根据实际需要灵活地调整。
3.1.6 前后台程序结构的特点
3.2 状态机建模
3.2.1 3.2.2 3.2.3 初识“状态机” 状态机模型的描述方法 通过状态转移图生成代码
3.2.4
状态机建模应用实例
3.2.1 初识“状态机”
(1)流程图的缺点 (2)状态机建模的例子
(1)流程图的缺点
图3.2.1 在洗衣过程中插入对上盖的处理
(1)流程图的缺点
图3.2.2 电子表按键操作的流程图
(1)依靠软件产生时间严格时序的程序段
某些产生很短延迟的程序,可以直接用软件延 迟完成。因为占用CPU很短,不会造成严重的阻 塞。但此时一定要注意如果延迟过程被中断, 产生的延迟将不准确。
例3.1.9 1-Wire总线时序规定:向1-Wire总线器件写 一个字时,一字节由8bit构成,低位在先。每个比特 发送时序如下:先拉低,保持1~15μs;再根据该比 特是1或者0输出高或低电平,保持60~120μs,再拉 高至少1μs(见图3.1.9)。为其编写代码,找出并保护 临界代码区。
状态转移图又称状态跳转图,它用圆圈或圆角 的矩形表示系统的各种状态,用一个带箭头的 黑点表示初始状态;用有向箭头表示状态的状 态转移(跳转)。
例3.2.1 以洗衣机控制逻辑为例,要求洗衣过程 “先正转2s,再暂停1s,然后反转2s,再暂停1s,依 次循环”。画出状态转移图。
图3.2.6 洗衣机控制程序的状态转移图
(5)时序程序设计
图3.1.7 步进电动机驱动的硬件电路与时序
3.1.4 函数重入
图3.1.8 非重入代码因中断造成的错误
3.1.4 函数重入
(1)决定函数可重入性的因素 (2)避免函数重入性隐患的方法
(1)决定函数可重入性的因素
首先,若某函数对静态数据进行了赋值操作和 访问,则它是不可重入的。 其次,涉及硬件设备操作的函数大部分都是不 可重入的。 第三,函数重入性与C语言编译器有关。
(4)使用缓冲区
图3.1.4 一个经典的键盘程序
(4)使用缓冲区
图3.1.5 采用定时中断读取键盘
(4)使用缓冲区
图3.1.6 采用FIFO作为键盘缓冲区
(5)时序程序设计
时序的产生中间包含大量的延迟。例如先高电 平0.1s再低电平0.2s…。如果用软件延迟来实现 电平变化之间的延迟,必然会阻塞CPU。
09ho5
主编
第3章 单片机软件工程基础
3.1 3.2 3.3 前后台程序结构 状态机建模 事件触发程序结构
3.1 前后台程序结构
3.1.1 3.1.2 3.1.3 任务 实时性 前后台程序的编写原则
3.1.4 3.1.5 3.1.6
函数重入 临界代码 前后台程序结构的特点
3.1.1 任务
(1)单任务程序 如果整个处理器系统只实现一个单一功能,或者只处理
• 但这种灵活性也为前后台程序带来了众多的缺点: • 首先,程序多任务的执行依靠每个任务的非阻塞性 来保证,这要求编程者耗费大量的时间精力来消除 阻塞,而且最终的代码的样子,可能与对任务的描 述差异很大 • 其次,程序的健壮性及安全性没有保障。 • 第三,每个程序员的思路、实现方法、软件架构等 各不相同,而前后台程序中软件实现方法是开放式 的,并无统一的标准和方法。 • 第四,实际上,前后台系统的整体实时性比预计的 要差。 • 第五,缺乏软件的描述手段。
(1)流程图的缺点
图3.2.3 双色报警器的流程图
(2)状态机建模的例子
图3.2.4 双色报警器
(2)状态机建模的例子
1) 在“正常状态”,如果出现“报警”事件,则系统变成“报警未确认” 状态,同时亮红灯。 2) 在“报警未确认状态”,如果出现“报警撤销”事件,则系统变成“报
警自行撤销”状态,同时亮黄灯。 3) 在“报警自行撤销”状态如果发生“确认”事件,则系统变成“正常” 状态,报警灯灭。
图3.2.10 长短键的状态机模型与时序图
先用语言描述按键过程状态与事件之间的关系: 1)在按键“未按下状态”时,若键被按下,按键状态变为 “短按状态”。 2)在按键处于“短按状态”时,若键被释放,认为是一次 短按键,短键的键值压入键盘缓冲区,并回到“未按下状态”。 3)在按键处于“短按状态”时,若超过2s,认为是一次长按 键,“首次长键”的键值压入键盘缓冲区,并将按键状态变为 “长按状态”。 4)在按键处于“长按状态”时,每当超过0.25s,认为是一 次“连续长键”,长键的键值压入键盘缓冲区,但状态不改变。
(2)避免函数重入性隐患的方法
1)应尽量使用可重入函数。 2)在进入不可重入函数之前关闭中断,退出该函数之后再开中断。 3)采用双缓冲区结构。
4)采用信号量。
3.1.5 临界代码
(1)依靠软件产生时间严格时序的程序段 (2)共享资源互斥性造成的临界代码 (3)避免函数重入造成的临界代码
(4)CPU字长造成的临界代码 (5)临界代码保护的方法
(2)实时性较高的事件
对于允许数微秒至数十微秒延迟的事件,可以 利用中断响应(前台)来处理。但要注意主循环 (后台)中不能长时间关闭中断,否则仍会造成实 时性下降。
(3)实时性较低的事件
1)对于允许数毫秒至数秒延迟的事件,可以在主程序中查询处理。 2)如果某事件虽然要求实时性较低,但本身出现的时间很短,小于一个循 环周期,仍有可能会被漏掉。
3) 如果上述情况无法产生中断或标志位,可以使用定时中断查询事件,然 后置标志位。 4) 如果在一个循环周期内,某事件会连续突发出现多次,对事件捕获要求
实时性高,但对事件处理的实时性要求不高,可以利用中断获取事件信息,
并用FIFO将事件信息存储起来,在主循环内将这些信息依次取出逐个处 理。
3.1.3 前后台程序的编写原则
(3)尽量使用低CPU占用率的外设
• 对于软件系统来说,为了让更多的任务能 够同时进行,硬件上就应选择CPU占用率更 低的方案。例如同样完成显示功能,用动 态扫描LED所耗费的CPU资源就比静态显示 要多。
(4)使用缓冲区
图3.1.2 采用数组作为扫描显示的缓冲区
(4)使用缓冲区
图3.1.3 动态扫描的典型硬件电路
计算出旋转轴相对角度的变化。
图3.2.11 旋转编码器的输出时序图
图3.2.12 旋转编码器
图3.2.13 旋转编码器4细分原理
图3.2.14 旋转编码器4细分的状态转移图
图3.2.15 旋转编码器与MSP430单片机的连接
例3.2.5 在MSP430F425单片机上,P1.3接有一只红色LED,P 1.1接有一只绿色LED,均为高电平点亮。要求串口收到“red” 字符串时,点亮红色LED;收到“green”字符串时点亮绿色L ED。收到“black”字符串时关闭所有LED。要求不阻塞CPU, 在串口中断内完成。且要求无论单词前后是否有其他字母,都 要正确解析。
图3.1.9 1-Wire总线写1bit的时序
(2)共享资源互斥性造成的临界代码
涉及共享资源的访问操作,都属于临界代码。 共享资源访问时需要被独占,避免数据破坏。 程序中任何可被占用的实体都称为“资源”。