具体描述
内容简介
本书是《单片机应用技术丛书》中专门介绍单片机应用系统软
件设计的一本著作。
书中总结了作者多年来在MCS-51系列单片机应用系统软件
设计中的实践经验,归纳出一整套应用程序设计方法和技巧。在内
容安排上不仅有实现功能要求的应用程序设计步骤、子程序、监控
程序及常用功能模块设计方法,还以较大篇幅介绍了提高系统可
靠性的抗干扰设计和容错设计技术以及程序测试的正确思想方
法。附录中向读者提供了多年使用过的定点运算子程序库和浮点
运算子程序库的程序文本、注释和使用方法。
本书深入浅出,并配以大量实例,可作为广大工程技术人员从
事单片机应用系统研究中软件设计的指导用书。
作者简介
目录信息
第一章 应用程序的设计步骤
1.1设计任务书的编写
1.2硬件电路设计
1.3软件任务分析
1.4数据类型和数据结构规划
1.5资源分配
1.6编程及调试
第二章 程序流程图与子程序设计
2.1程序流程图
2.1.1程序流程图的画法
2.1.2从程序流程图到程序
2.2子程序设计
2.2.1结构化的程序设计风格
2.2.2参数的使用
2.2.3算法的合理性和可靠性
2.2.4子程序的透明性设计
2.2.5子程序的相容性设计
2.2.6子程序的容错性设计
第三章 系统监控程序设计
3.1监控程序的任务
3.2监控程序的结构
3.2.1作业顺序调度型
3.2.2作业优先调度型
3.2.3键码分析作业调度型
3.3监控程序的设计方法
3.3.1系统状态分析
3.3.2状态转移分析
3.3.3状态顺序编码型监控程序的设计方法
3.3.4状态特征编码型监控程序的设计方法
第四章 常用功能模块的设计
4.1时钟
4.1.1时钟系统的建立
4.1.2时钟的校对
4.1.3实时任务的触发与撤除
4.1.4相对时钟(闹钟)
4.2键 盘
4.2.1软件去抖动处理
4.2.2连击的处理
4.2.3复合键的处理
4.2.4键盘编码
4.3显 示
4.3.1显示模块在系统软件中的安排
4.3.2显示配置与输出驱动
4.3.3灭零处理
4.3.4闪烁处理
4.3.5低速串行显示
第五章 抗干扰设计
5.1干扰的作用机制及后果
5.2抗干扰的硬件措施
5.2.1抗串模干扰的措施
5.2.2抗共模干扰的措施
5.3数字信号输入输出中的软件抗干扰措施
5.3.1数字信号的输入方法
5.3.2数字信号的输出方法
5.4数字滤波
5.4.1程序判断滤波
5.4.2中值滤波
5.4.3算术平均滤波
5.4.4去极值平均滤波
5.4.5加权平均滤波
5.4.6滑动平均滤波
5.4.7低通滤波
5.5CPU抗干扰技术
5.5.1人工复位
5.5.2掉电保护
5.5.3睡眠抗干扰
5.5.4指令冗余
5.5.5软件陷阱
5.5.6程序运行监视系统(WATCHDOG)
5.6系统恢复
5.6.1系统复位
5.6.2热启动过程
5.6.3重要信息的恢复
5.6.4系统状态的重入
第六章 容错设计
6.1硬件故障的自诊断技术
6.1.1CPU的诊断
6.1.2ROM的诊断
6.1.3RAM的诊断
6.1.4A/D通道的诊断与校正
6.1.5D/A通道的诊断
6.1.6数字I/O通道的诊断
6.1.7硬件自诊断模块
6.2人机界面的容错设计
6.2.1输入提示功能的设计
6.2.2参数输入的容错设计
6.2.3命令输入的容错设计
6.2.4输入界面的安全性设计
6.2.5输出界面的容错设计
6.3一般软件的容错设计
6.3.1堆栈溢出的预防
6.3.2中断中的资源冲突及其预防
6.3.3状态转移的条件审查
6.3.4重要模块的安全措施
6.3.5软件算法的容错设计
6.3.6软件标志的使用
6.3.7子程序的使用
第七章 程序测试
7.1程序测试的心理准备
7.1.1程序测试的正确定义
7.1.2程序测试结果的正确评价
7.1.3培养正常的测试心理状态
7.2程序测试方法
7.2.1程序会审和口头宜讲
7.2.2白盒测试法
7.2.3黑盒测试法
7.2.4自顶向下测试法
7.2.5自底向上测试法
7.3程序纠错
7.3.1程序跟踪法
7.3.2分析推理法
7.3.3纠错原则
附录:MCS-51单片机实用子程序库
参考文献
· · · · · · (收起)
读后感
用户评价
这本书的语言风格非常直白且带着一股子技术人员特有的务实劲儿。没有太多华丽的辞藻,全是干货。我最欣赏它在处理**通信协议**那一块的深度。很多教材只是简单介绍一下UART或SPI的物理层特性,这本书却深入到了数据包的错误校验、流控机制,甚至还对比了不同速率下缓存溢出的风险点。我记得其中一段详细解析了CRC校验算法的位操作实现,那段代码写得极其精炼,看完之后我立刻去修改了我之前项目中一个不稳定的数据传输模块,效果立竿见影。这种“带着问题去解释技术原理”的处理方式,让学习过程充满了解决问题的乐趣。对于那些致力于开发需要高可靠性数据交换产品的工程师来说,这本书中关于协议栈实现和鲁棒性考虑的部分,绝对是值得反复研读的宝藏章节,它不仅仅是告诉你协议长什么样,更是教你如何构建一个“健壮”的通信链路。
从一个硬件工程师的角度来看,这本书的价值在于它极大地提升了我对软件层面的理解深度。我过去更侧重于电路和PCB设计,对软件的看法有时会停留在“能跑就行”的层面。然而,这本书中关于**存储器映射**和**流水线冲突**的讨论,彻底改变了我的看法。它用图示清晰地展示了指令预取和数据访问延迟是如何影响程序执行效率的,并且给出了通过调整编译器优化选项来规避这些性能陷阱的具体步骤。我甚至发现,我过去认为的“代码冗余”问题,在某些特定时序要求下,反而是为了保证关键任务的确定性执行而故意为之的“优化手段”。这种跨学科的视角,让我能更好地与软件团队进行有效沟通,并且在下一代产品设计中,能更早地在硬件选型时就考虑到软件的执行效率需求,避免了后期因为软件性能瓶颈导致的硬件返工,这本书提供的系统性认知提升,比单纯学习一门语言要宝贵得多。
这本书的装帧设计很有意思,封面那种深邃的蓝色调,配上一些电路板的抽象线条,一下子就抓住了我的眼球。我本来是想找本入门级的微控制器书籍的,结果这本拿在手里感觉分量十足,字体排版也相当专业,感觉像是为那些已经有点基础,想要更深入了解底层原理的工程师准备的。书里的插图和图表制作得非常精良,特别是那些时序图和寄存器布局的示意图,清晰得让人一眼就能明白复杂的硬件操作流程。我翻阅了好几章的介绍性内容,发现作者在系统地讲解完MCU的基本架构后,立刻就切入了具体的例程和应用场景,这种由浅入深,但很快就扎到核心技术的讲解方式,让人有种迫不及待想上手实践的冲动。不过,对于完全没有接触过嵌入式领域的读者来说,可能第一遍阅读需要配合大量的外部资料才能跟上节奏,因为它跳过了很多基础概念的赘述,直接进入了“硬核”部分。整体感觉,这是一本注重实战效果和系统理解的工具书,而非简单的科普读物,适合那些追求效率和深度的学习者。
我最近在研究低功耗设计策略,手里囤了好几本相关的资料,但总觉得有些理论太过空泛,直到我看到了这本书的某个章节。这本书的厉害之处在于,它没有停留在理论的层面去讨论功耗优化,而是直接展示了如何在具体的外设配置中通过代码优化来实现能效比的最大化。我特别欣赏它对不同工作模式(如休眠、唤醒、中断服务)的切换逻辑进行了详尽的分析,并且给出了不同MCU系列在这些模式下的实际功耗数据对比。这对我优化一个便携式医疗设备的原型设计简直是雪中送炭。作者的叙述风格非常严谨,每一个性能指标的提出都配有明确的测试条件和验证方法,让人倍感信服。相比于那些只会罗列寄存器名称的书籍,这本书更像是一个资深专家的实战经验总结,它教你的不仅仅是“如何做”,更是“为什么必须这样做”的底层逻辑。读完这部分,我感觉对如何平衡实时性与功耗有了更成熟的认识。
说实话,这本书的章节组织结构对我来说是有些挑战性的,但一旦适应了它的逻辑链条,就会发现其精妙之处。它不是按照传统的“I/O、定时器、ADC”这种模块化的方式来展开的,而是围绕着几个复杂的大型项目(比如一个实时数据采集系统、一个基于PID控制的电机驱动)来串联知识点的。这种项目驱动的学习路径,迫使读者必须学会如何将分散的知识点融会贯通,形成一个完整的系统思维。我尤其喜欢它在讲解中断系统时引入的实时操作系统(RTOS)的概念,虽然没有深入讲解RTOS的全部细节,但它清晰地阐述了在多任务环境下如何安全地管理共享资源和避免竞态条件。这种将底层驱动与上层架构无缝衔接的叙述手法,极大地拓宽了我对嵌入式软件设计边界的认知。它要求读者具备很强的抽象思维能力,能够从具体的代码片段中提炼出通用的设计模式。