内容简介
《PIC单片机原理与实践:汇编及C语言》以介绍PIC16F877A型号单片机硬件为主,兼顾关联系列。后续推出的PIC16F193X系列(PIC16F182X系列、PIC16F151X系列)在每一章也单独列出一节专门介绍。CCS公司的C语言函数在每一章的末节也作了专门讲解。
《PIC单片机原理与实践:汇编及C语言》共分21章,内容全面,解说清晰,系统性强,注重实践环节与能力培养。在每一章节通过编排实验来认识硬件的工作原理,安排的实验及程序大多逻辑简明、目的明确,容易学习。实验中的汇编程序都有对应的C语言程序,方便读者比较分析。在对硬件原理的讲解或实验过程中,插入了大量的原理图、带标注示波器图及各类示意图,这使读者更易理解并融会贯通。
《PIC单片机原理与实践:汇编及C语言》定位于电子技术应用层次,可供测量、控制等相关专业的工程技术人员使用,也可作为单片机研发人员的自学用书以及高等院校电气电子、机电一体化、工业自动控制等专业的教学参考用书。
作者简介
曾辉,1998年毕业于武汉水利电力大学电气工程系。毕业后一直从事电子技术应用方面的工作,主攻基于PIC微控制器的各类电测及控制系统设计。迄今为止,独立设计或参与设计的技术成果多达几十种,分别应用于石油、电力、汽车、军工等行业。基于微控制器的电子系统设计是一项综合性很强的工作,作者在设计过程中不光关注技术本身,还注重使用辩证法分析各种技术方法的利弊,由此引导读者根据实际情况作出权衡。由于技术不断地进步,新产品也不断地推出,解决问题的手段也在发生变化。在这个过程中,作者注重利用基本的经济学原理分析技术方法的演变,从而使读者在设计时能够根据自身条件进行合理决策。多年来一直信奉“Practice makes Perfect”。
内页插图
目录
第1章 PIC16F877A硬件系统
1.1 PIC16F877A硬件配置概览
1.2 PIC16F877A引脚布置图
1.3 PIC16F877A内部结构图
1.4 PIC16F877A程序存储器结构图
1.5 PIC16F877A数据存储器结构图
1.6 两种不同的存储器组织结构的比较
1.7 PIC16F193X硬件配置概览
1.8 PIC16F193X引脚布置图
1.9 PIC16F193X内部结构图
第2章 指令系统
2.1 关于指令系统
2.2 RISC与CISC指令系统的比较
2.3 指令的格式
2.4 RISC指令的时序
2.5 指令系统概览
2.6 指令系统说明
2.7 寻址方式
2.8 PIC16F193X的指令系统
2.9 C语言中与位操作有关的函数
第3章 汇编语言编程
3.1 关于汇编语言
3.2 汇编器
3.3 汇编语言的语句格式
3.4 操作数格式描述
3.5 汇编伪指令
3.6 汇编语言的程序格式
3.7 顺序程序结构
3.8 循环程序结构
3.9 分支程序结构
3.10 子程序结构
3.11 延时程序设计
3.12 查表程序设计
3.13 RAM数据存储器的体选寻址
3.14 FLASH程序存储器的分区及跨页跳转
3.15 PIC16F193X的FLASH程序存储器及跳转指令
3.16 C语言中与内存操作有关的函数
第4章 中断系统
4.1 由查询方式到中断方式
4.2 中断的响应过程
4.3 中断的基本硬件结构
4.4 PIC16F877A的中断源
4.5 与PIC16F877A中断相关的寄存器
4.6 PIC16F877A的中断逻辑
4.7 中断的响应延时
4.8 中断的现场保护
4.9 RBO/INT外部中断
4.10 与INT中断相关的寄存器
4.11 INT外部中断块应用实践
4.12 RB端口电平变化中断
4.13 与RB端口电平变化中断相关的寄存器
4.14 RB端口电平变化中断应用实践
4.15 PIC16F193X的中断逻辑
4.16 PIC16F193X的中断自动现场保护
4.17 PIC16F193X的RB端口电平变化中断
4.18 中断的C语言编程
第5章 I/O端口
5.1 典型的I/()端口
5.2 典型的I/O端口工作原理
5.3 推挽电路的实验
……
第6章 TIMERO(WDT)模块
第7章 TIMERI模块
第8章 TIMER2模块
第9章 CCP模块
第10章 模/数转换模块ADC
第11章 电压基准与比较器模块
第12章 SPI通信
第13章 I2C通信
第14章 USART异步通信
第15章 USART同步通信
第16章 PSP通信
第17章 EEPROM
第18章 振荡器电路
第19章 复位系统
第20章 C语言编程
第21章 新型8位MCU及特色
附录
参考文献
前言/序言
在人们生活的这个世界,已经很少有没用到单片机(MCU)的产品了,比如各类家用电器、汽车、智能门锁、遥控玩具、医疗设备、办公设备、数控机床等,在它们的内部,几乎都包含着一颗或数颗“智能”芯片,使用这些产品让人们生活更加舒心方便。MCU的应用是如此广泛,这使我们不得不关注它。
MCU也是一种电脑芯片,但它不同于办公用的电脑中的CPU,这类CPU主要是为处理大量数据而设计的。而MCU只能进行小批量的数据处理,然而设计的重点不在于此,而在于它的控制功能。它除了具备计算机的基本结构外(学习并使用MCU是了解计算机原理与结构的最佳选择),其内部还集成了许多与控制功能相关的模块,如具备负载能力的I/O端口、各类定时器/计数器等。根据不同的应用领域,厂家可以为MCU配置不同的功能模块(外设),这使得MCU的应用越来越广泛。
本书主要介绍Microchip公司生产的8位MCU的中档系列(Midrange)产品,讲解这类单片机中所配置的典型模块的结构性能及使用方法。
Microchip公司是全球领先的单片机和模拟器件供应商。它推出的8位MCU,在全球众多厂家的同类产品中,其销售量一直名列前茅,可见其产品独具特色。Microchip公司生产的8位MCU在命名上通常以PIC开头,如PIC16F1939,其中打头的PIC其英文全称是Peripheral Interface Controller,意思是外围设备接口控制器,可见它设计的初衷是为了实现某些控制功能;F表示它的程序存储器是采用先进的FLASH工艺制作的,又称作闪速存储器,这种存储器可以实现快速擦除或写入信息。这样的特点非常适合用作在线调试,即烧写程序代码和修改程序代码非常方便。
与其他厂家的MCU相比较,PIC单片机的设计亮点是在总线上采用哈佛结构,指令集采用RISC精简指令集。这些特点使它的指令少,执行速度快。关于这些亮点的具体说明将会在后面阐述。
对于中档系列的MCU,可选取PIC16F877A这款具有代表性的型号进行讲解,尽管这款机型推出已经有很多年了,但是因为它典型的架构,它以及它的衍生型号仍然具有较大的市场份额。即便是后来推出的中档新品种(更加适合便携式应用),如PIC16F88X,PIC16F193X、PIC16F182X、PIC16F151X等,其功能部件大多也是在它的基础上演化而来的。对于既定的外设如TIMER1,扩展的功能只是使对它的使用更加细致,并且兼容了来自片外的门控信号,功能增强后称作ETimerl。新增的功能如LCD驱动器,电容触摸屏等是为了提高系统集成度的便携式应用而设置,尽管并不一定总是要用到它。但总的来说,熟悉了PIC16F877A的原理及使用对了解中低档系列其他型号的MCU可以起到触类旁通的效果。本书的附录囊括了C编译器包含的“16F”打头的8位MCU,附录A的机型偏向于通用,附录B,C的机型偏向于专用。观察附录的配置可以发现,本书的章节内容在通用型MCU中很有代表性。
书中主要对PIC16F877A的每一个功能模块进行细致的讲解,另外过程中还会把升级型号PIC16F193X拿来与它作比较,看看升级型号新增了哪些功能,有什么意义。最后一章对后期推出的偏向于专业应用的16系列MCU按照年代进行了分类说明,并列举了每一类的特色。特别对独立于内核的外设(CIP)、智能模拟器件进行了逐一介绍,让读者能及时掌握新型MCU的亮点及发展趋势。附录A、B、C提供了16系列MCU的详细配置(截止2016年),方便读者比较选型。
本书的写作特色是原理与实践相结合。每一章对相关功能模块的原理进行解释后,再做相应的实验以便加深理解。实验过程中,配有实验原理图、示波器图、汇编程序及对应的C程序这四大类,目的是给读者创造一种正在做实验的模拟场景。阅读“实验”时,读者要思考汇编程序与示波器图之间的因果关系,以及汇编程序与C程序之间的关联。
写作过程中,对于汇编程序,力求逻辑简单,篇幅简练,以突出其主要功能。比如对于显示,全部采用8位LED的二进制数码显示方式,这样可以使显示程序达到最小化。另外,通过观察8位LED亮灭计数,也可增进对二进制计数方式的理解。每条汇编语句后都附有详细的注释,通过注释,很容易弄清楚语句的功能及其逻辑关联。基于以上原因,又为了节省篇幅,实验程序中很少使用流程图。
另外,对C语言的掌握也是必不可少的,对于一些中大型程序,使用C语言编写可以大大提高工作效率。本书使用CCS公司的C编译器,对每一章的C语言函数、预处理器都进行了详细的解释,而且,几乎所有的汇编程序都附有对应的C程序,通过这种对比,可以让读者认识到使用C编写源程序的便利性,同时也可以认识到原有汇编程序在代码方面的紧凑性。对于C语言程序,每一条语句后都有详细的注释,有的注释用文字不好表达,改用汇编语句解释,从这个意义上说,要编好C程序,最好具备一定的汇编语言基础。
本书的编写方式是,把每一个功能模块作为一个章节进行讲解,除了文字描述,过程中还配有大量的插图,通过这种“形象”的方式来加深读者对某些原理及概念的了解。
《PIC单片机原理与实践:汇编及C语言》是一本深入浅出讲解PIC系列单片机原理、开发技术以及实际应用的书籍。本书以其严谨的学术态度、翔实的理论阐述和丰富的实践案例,成为学习PIC单片机不可多得的参考资料。 一、核心内容与技术路线 本书将读者从PIC单片机的基础概念引入,逐步深入到其内部结构、工作原理,并重点讲解使用汇编语言和C语言进行嵌入式系统开发的实用技巧。其核心技术路线主要体现在以下几个方面: PIC单片机体系结构深入剖析: CPU核心架构: 详细介绍PIC系列单片机采用的RISC(精简指令集计算)架构,包括其指令集特点、流水线工作方式、中断处理机制等。本书会着重解释RISC架构如何通过简化指令、固定指令长度等方式,提高处理速度和效率。 存储器组织: 深入讲解程序存储器(Flash)、数据存储器(RAM)、配置位(Configuration Bits)等存储器的结构和功能。读者将了解到如何正确地组织和管理程序代码和数据,以及配置位对单片机运行的重要影响。 外围模块详解: 本书会详细解析PIC单片机集成的各类强大外围模块,如通用输入输出(GPIO)、定时器/计数器(Timers/Counters)、脉冲宽度调制(PWM)、模数转换器(ADC)、数模转换器(DAC)、串行通信接口(UART/USART, SPI, I2C)、液晶控制器(LCD Controller)等。对于每个模块,都将阐述其工作原理、寄存器配置、编程方法以及实际应用场景。 汇编语言开发实践: 基础指令与寻址方式: 详细介绍PIC汇编语言的基本指令集,包括数据传输指令、算术逻辑指令、位操作指令、跳转指令、调用指令等。同时,会深入讲解各种寻址方式,如立即数寻址、直接寻址、寄存器寻址、间接寻址等,帮助读者理解数据是如何在CPU和存储器之间进行有效传递的。 中断系统编程: 详细讲解PIC单片机的中断向量、中断源、中断优先级以及中断服务程序的编写。读者将学会如何高效地响应外部事件,实现实时控制。 中断驱动型程序设计: 重点阐述如何利用中断来提高程序的效率和实时性,例如,通过定时器中断实现周期性任务,通过外部中断响应按键输入等。 汇编程序结构与技巧: 介绍汇编程序的组织方式,如子程序设计、宏定义、段划分等,并提供一些优化代码、提高效率的实用技巧。 C语言开发实践: C语言与嵌入式开发: 阐述C语言在嵌入式开发中的优势,如代码的可读性、可移植性、开发效率等。 PIC系列C编译器介绍: 介绍主流的PIC系列C编译器(如Microchip MPLAB XC Compilers),讲解其开发环境的搭建和使用。 C语言驱动外设: 重点讲解如何使用C语言对PIC单片机的各种外设进行配置和控制。例如,如何通过C语言函数实现GPIO的读写、定时器配置、ADC采样、UART通信等。 结构体与位操作: 详细介绍在C语言中如何利用结构体来访问和操作PIC单片机的寄存器,以及如何进行高效的位操作,这对于精细控制硬件至关重要。 中断在C语言中的应用: 讲解如何在C语言程序中编写中断服务函数,以及如何与主程序进行协同工作。 混合编程: 探讨C语言与汇编语言的混合编程技术,学习如何将汇编语言的效率和C语言的便捷性结合起来,以应对复杂的开发需求。 实践项目与案例分析: 本书包含大量精心设计的实践项目,涵盖从简单到复杂的各种应用场景。例如,LED闪烁控制、按键输入检测、数码管显示、PWM波生成、ADC数据采集、UART通信示例、SPI/I2C通信实例等。 每个项目都会提供详细的硬件电路图、程序代码(包括汇编和C语言实现)、详细的步骤说明和运行结果分析。 通过这些实践项目,读者可以动手实践,巩固理论知识,快速掌握PIC单片机的开发技能。 二、学习价值与目标读者 《PIC单片机原理与实践:汇编及C语言》的出版,旨在为以下各类读者提供系统、深入的学习平台: 电子工程、自动化、计算机科学等相关专业的学生: 本书能够帮助学生打下坚实的单片机理论基础,掌握嵌入式系统开发的通用技能,为后续的学习和科研打下坚实基础。 嵌入式系统工程师: 对于希望快速掌握PIC系列单片机开发技术的工程师,本书提供了丰富且实用的技术指导和案例参考,能够帮助他们提升开发效率和解决实际问题的能力。 电子爱好者和创客: 对于对电子制作和DIY感兴趣的爱好者,本书提供了从入门到进阶的学习路径,能够帮助他们实现自己的创意项目。 需要学习单片机原理和开发的各类技术人员: 无论您是初学者还是有一定基础的学习者,本书都能够提供系统性的知识体系和实践指导。 三、本书的独特性与优势 全面性: 本书不仅涵盖了PIC单片机的硬件原理,还深入讲解了汇编和C两种主流开发语言,并提供了丰富的实践案例,力求全面而系统地展现PIC单片机的开发全貌。 深度与广度兼备: 对于PIC单片机的每一个关键模块和技术点,本书都进行了深入的剖析,同时覆盖了从基础指令到复杂通信协议的广泛内容。 实践导向: 大量贴近实际应用的实践项目,使得读者在学习理论的同时,能够获得宝贵的动手实践经验,快速将知识转化为解决实际问题的能力。 语言清晰,逻辑严谨: 采用清晰易懂的语言,层层递进地展开论述,确保读者能够循序渐进地掌握复杂的技术概念。 针对性强: 聚焦于PIC 16系列单片机,这是当前广泛应用且性价比高的微控制器系列,学习本书内容能够直接应用于实际项目开发。 四、学习建议 为了最大化本书的学习效果,建议读者: 1. 理论与实践相结合: 在阅读理论章节时,同步进行相关的实验操作,验证所学知识。 2. 多动手,多思考: 积极动手编写、修改和调试代码,遇到问题时,尝试分析原因并寻求解决方案。 3. 参考数据手册: 在开发过程中,熟练查阅PIC单片机的数据手册(Datasheet)和编程手册,这是深入理解和掌握硬件的关键。 4. 参与社区交流: 加入相关的技术论坛或社区,与其他学习者和开发者交流经验,解决遇到的难题。 总而言之,《PIC单片机原理与实践:汇编及C语言》是一本集理论深度、实践广度和教学价值于一体的优秀教材。它将带领读者走进PIC单片机的精彩世界,掌握现代嵌入式系统开发的强大工具,为未来的技术探索和创新奠定坚实的基础。