新書推薦:
《
股市趋势技术分析(原书第11版)
》
售價:NT$
1010.0
《
汉匈战争全史
》
售價:NT$
454.0
《
恶的哲学研究(社会思想丛书)
》
售價:NT$
500.0
《
不止江湖
》
售價:NT$
449.0
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:NT$
704.0
《
双城史
》
售價:NT$
505.0
《
冯友兰和青年谈心系列:不是问题的问题(哲学大师冯友兰和年轻人谈心,命运解读)
》
售價:NT$
254.0
《
月与蟹(青鲤文库)荣获第144届直木奖,天才推理作家经典作品全新译本。一部青春狂想曲,带你登上心理悬疑之巅。
》
售價:NT$
230.0
|
編輯推薦: |
第二版重点修改了有关知识点的叙述,尽量实用和简洁,删除了部分不经常用的器件的叙述,增加了部分实用项目的关键技术例程及解读,对TI公司具有无线通信功能的51单片机进行了简单的介绍。书中C51的介绍着重在与标准C语言的不同之处,读者应该在具备一定C语言编程知识的基础上阅读本书内容。书中大部分章节附有习题,以供读者练习。本书附件提供教学用PPT、实验的源代码的电子文档,供读者参考。
|
目錄:
|
目录
第1章概述
1.1单片机的发展概况
1.1.1单片机的发展历史
1.1.2典型的8位单片机产品
1.2单片机的应用及发展趋势
1.2.1单片机的应用
1.2.2单片机的发展趋势
习题1
第2章SoC单片机的结构与原理
2.1C8051F系列单片机总体结构
2.1.1C8051F系列单片机简介
2.1.2CIP51内核
2.1.3C8051F020单片机的片上资源
2.2C8051F020存储器组织
2.2.1程序存储器
2.2.2内部数据存储器
2.2.3特殊功能寄存器
2.2.4位寻址区
2.2.5外部RAM和片内XRAM
2.3中断系统
2.3.1中断概念
2.3.2C8051F中断系统
2.4端口输入输出
2.4.1优先权交叉开关译码器
2.4.2端口0~3的IO初始化
2.4.3端口4~7
2.4.4端口特殊功能寄存器
2.4.5交叉开关引脚分配示例
2.4.6片上资源配置工具Config的应用
2.5电源管理方式
2.5.1空闲方式
2.5.2停机方式
2.6复位与时钟
2.6.1复位源
2.6.2上电掉电复位
2.6.3外部复位
2.6.4内部复位
2.6.5系统时钟
习题2
第3章51单片机编程语言
3.1单片机的编程语言概述
3.2CIP51指令介绍
3.2.1寻址方式
3.2.251指令集
3.3汇编语言
3.3.1伪指令
3.3.2顺序程序设计
3.3.3分支程序设计
3.3.4循环程序设计
3.3.5子程序设计
3.4C51语言
3.4.1C51关键字
3.4.2C51变量定义
3.4.3C51数据类型
3.4.4C51指针类型
3.4.5C51函数定义
3.4.6C51程序设计的注意事项
习题 3
第4章SoC单片机的片内功能部件
4.1定时器计数器
4.1.1定时器计数器的一般结构和工作原理
4.1.2定时器计数器T0和T1
4.1.3定时器计数器T2和T4
4.1.4定时器T3
4.2可编程计数器阵列
4.2.1PCA0交叉开关配置
4.2.2PCA0的特殊功能寄存器
4.2.3PCA0定时器计数器
4.2.4PCA0捕捉比较模块
4.2.5PCA0应用举例
4.3UART通信接口
4.3.1串行通信及基础知识
4.3.2串行接口的组成和特性
4.3.3串行接口的工作方式
4.3.4波特率设计
4.3.5串行口应用编程
4.3.6多机通信原理及应用
习题4
第5章模数和数模转换器
5.1模数转换器
5.1.1模数转换原理和性能指标
5.1.2C8051F020的ADC0功能结构
5.1.3模拟多路选择器和PGA
5.1.4ADC的工作方式
5.1.5ADC0 可编程窗口检测器
5.1.6ADC1(8位ADC)
5.1.7模数转换举例
5.2数模转换器
5.2.1数模转换原理及性能指标
5.2.2C8051F020的DAC功能
5.2.3DAC 输出更新
5.2.4DAC 输出定标调整
5.2.5数模转换举例
5.3电压基准
5.4比较器
习题5
第6章复杂接口应用
6.1系统管理总线SMBus
6.1.1SMBus原理
6.1.2SMBus协议
6.1.3SMBus数据传输方式
6.1.4SMBus特殊功能寄存器
6.1.5实时时钟芯片S3530A
6.1.6程序代码
6.2串行外设接口总线SPI
6.2.1SPI的原理、控制信号及交叉开关配置
6.2.2SPI特殊功能寄存器
6.2.3用 SPI 实现串行Flash芯片的读写
6.2.4程序代码
6.3液晶显示器接口
6.3.1并口连接方式
6.3.2串口连接方式
6.4GPRS与SMS的应用
6.4.1设计思路
6.4.2核心代码
习题6
第7章SoC的特殊型号芯片介绍
7.1资源较少配置型C8051F单片机C8051F30X
7.2资源较多配置型单片机C8051F5XX
7.3带无线通信功能的51单片机
7.3.1CC2530单片机简介
7.3.2CC2530单片机的芯片封装和外部引脚
7.3.3CC2530单片机的内部结构
7.3.4CC2530单片机的应用电路
7.3.5CC2530应用举例
习题7
第8章SoC单片机实验介绍
8.1实验系统介绍
8.1.1C8051F单片机开发工具
8.1.2NMC20XX核心模块简介
8.1.3系统实验板
8.2C8051F系列单片机开发环境
8.2.1Silicon Laboratories IDE集成开发环境简介
8.2.2集成开发环境的安装和配置
8.2.3Silicon Laboratories IDE的软件界面
8.2.4程序开发的基本操作
8.2.5JTAG接口及在线编程调试
8.2.6SiliconLabs IDE集成环境使用实例
8.3C8051F单片机实验项目
8.3.1数据传送实验
8.3.2查表实验
8.3.3七段码显示与按键实验
8.3.4定时器和走马灯实验
8.3.5直流电机测速和控制实验
8.3.6步进电机控制实验
8.3.7温度数据采集实验
8.4Keil Vision2开发环境
8.4.1在Keil Vision2中集成Silicon的驱动和配置
8.4.2使用Keil Vision2开发C8051F020单片机项目示例
习题8
附录ACIP51指令一览表
附录BC8051F020的封装、引脚
附录CC8051F020的电气参数
参考文献
|
內容試閱:
|
前言(第二版)
单片微型计算机简称单片机,是典型的嵌入式微控制器。随着电子技术的飞速发展,目前的单片机已经集成了AD、DA转换器,存储器,I2C,CAN、SPI总线接口及一些专用外设,形成了SoC(System on Chip)型的单片机,或称为系统级芯片,也有称片上系统,在工业控制、机电一体化、通信终端、智能仪表、家用电器等诸多领域中得到了广泛应用,已成为传统机电设备进化为智能化机电设备的重要手段。因此高等理工科院校师生和工程技术人员了解和掌握SoC型的单片机原理和应用技术是十分必要的。目前单片机已经形成很多种类,C8051F系列单片机就是一种典型的SoC型单片机,原是Cygnal公司的产品,该公司于2003年并入Silicon Laboratories公司。C8051F系列单片机具有与MCS51完全兼容的指令内核,采用流水线处理(pipe line)技术,不再区分时钟周期和机器周期,能在执行指令期间预处理下一条指令,提高了指令执行效率。而且大部分C8051F单片机具备控制系统所需的模拟和数字外设,包括看门狗、ADC、DAC、电压比较器、电压基准输出、定时器、PWM、定时器捕捉和方波输出等,并具备多种总线接口,包括UART、SPI、SMBUS(与I2C兼容)总线以及CAN总线等。C8051F系列单片机采用Flash ROM技术,集成JTAG,支持在线编程和调试。C8051F系列单片机诸多特点和优越性,使其广受单片机系统设计工程师青睐,成为很多测控系统设计的首选机型。本书以C8051F020为讲述对象,是因为该单片机为C8051F系列单片机中功能较全、最具有代表性的一款。熟悉了C8051F020单片机工作原理和编程方法后,可较快地对C8051F系列的其他单片机上手编程。事实上,模拟和数字外设以及各种总线具有共性,因而本书也可作为其他厂商单片机的参考资料,书中例程稍加修改,即可应用于其他单片机。而且本书大部分代码采用C51语言编写,这也是单片机应用的发展方向,同时增强了程序的可读性和可移植性。书中对于C51的介绍着重在与标准C语言的不同之处,读者应该在具备一定C语言编程知识的基础上阅读本书内容。书中大部分章节附有习题,以供读者练习。本书配套提供教学用PPT、实验的源代码的电子文档(请访问清华大学出版社网站获取),供读者参考。此次再版重点修改了有关知识点的叙述,尽量实用和简洁,删除了部分不经常用的器件的叙述,增加了部分实用项目的关键技术例程及解读,对TI公司具有无线通信功能的51单片机进行了简单的介绍。本书由鲍可进担任主编,书中第1章、第2章、第5章由鲍可进编写,第4章由赵念强编写,第3章由赵念强、申屠浩编写、第6章由申屠浩、赵念强编写、第7章由陈向益、鲍可进编写、第8章由陈向益编写,鲍可进对全书进行了修改并统稿。
在编写过程中,我们参考了有关书刊、资料,在此对有关作者一并表示感谢。由于水平有限,书中不妥之处在所难免,恳请读者批评指正。编者2016年9月
第3章51单片机编程语言
3.1单片机的编程语言概述51单片机的编程语言可以是汇编语言,也可以是高级语言,如由C语言演变而成的C51语言等。汇编语言产生的目标代码短,占用的存储空间小,执行速度快,能充分发挥单片机的硬件功能。但对于复杂的应用来讲,使用汇编语言编程复杂,程序的可读性和可移植性不强。高级语言产生的目标代码长,占用的存储空间大,执行速度慢。但这是相对于汇编语言来讲的,其实C语言在大多数情况下的机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,编程效率也大大高于汇编语言。可见汇编语言和高级语言各有优缺点,在应用中应根据实际情况选用。如果应用系统的存储空间比较小,且对实时性的要求很高,则应选用汇编语言编程; 如果系统的存储空间比较大,且对实时性的要求不是很高,则C51语言是理想的编程语言。如果系统中有部分模块对实时性的要求很高,而其他模块对实时性的要求不是很高,则可以将两种语言结合,程序的主体部分使用C51编程,对实时性要求高的模块用汇编语言编程,然后将汇编语言程序模块嵌入到C51语言程序中。无论是高级语言还是汇编语言写的源程序都必须转换成目标程序机器语言,单片机才能执行。目前很多公司都将编辑器、汇编器、编译器、连接定位器、符号转换程序做成了软件包,称为集成开发环境Integrated Developing Environment,IDE,如Keil Vision、Silicon Laboratories IDE等。用户进入集成开发环境,编辑好程序后,只需点击相应的菜单或快捷工具按钮就可以完成汇编编译、连接定位、程序下载等功能,还可以在线跟踪调试。可见,汇编语言和高级语言都是开发单片机应用系统必须掌握的编程语言。本书以目前流行的C51为主要编程语言,同时兼顾传统的汇编语言。本章首先简要介绍51单片机的寻址方式和指令系统,然后通过几个编程实例介绍汇编语言程序设计中的几种基本结构程序的设计方法和技巧,最后重点讲述C51语言的基础知识及编程方法。在集成开发环境中调试汇编语言程序和C51语言程序的方法见本书第8章。3.2CIP51指令介绍CIP51系统控制器的指令集与标准MCS51TM指令集完全兼容,可以使用标准8051的开发工具开发CIP51的软件。所有的CIP51指令共111条,在二进制机器码和功能上与MCS51 TM 产品完全等价如操作码、寻址方式、对PSW标志的影响等,但是指令时序与标准8051不同。在很多的8051产品中,机器周期和时钟周期是不同的,机器周期的长度在2~12个时钟周期之间,如Intel公司的MSC51单片机的机器周期的长度为12个时钟周期。但是CIP51只基于时钟周期,所有指令时序都以时钟周期计算,也就是说,CIP51的机器周期与时钟周期相等。由于CIP51采用了流水线结构,大多数指令执行所需的时钟周期数与指令的字节数一致。条件转移指令在不发生转移时的执行周期数比发生转移时少一个。附录B给出了CIP51指令一览表,包括每条指令的助记符、字节数和时钟周期数。3.2.1寻址方式寻址方式就是根据指令中给出的地址寻找真实操作数地址的方式。8051单片机的寻址方式有以下七种。1. 寄存器寻址寄存器寻址时,指令中地址码给出的是某一通用寄存器的编号,寄存器的内容为操作数。例如指令
MOVA,R0;AR0
8051可用寄存器寻址的空间是: R0~R7,ACC,DPTR,B。2. 直接寻址直接寻址时,指令中地址码部分直接给出了操作数的有效地址。例如指令
MOVA,4FH;A0x4F
可用于直接寻址的空间是: 内部RAM低128B包括其中的可位寻址区、特殊功能寄存器。3. 寄存器间接寻址寄存器间接寻址时,指令中给出的寄存器的内容为操作数的地址,而不是操作数本身,即寄存器为地址指针。例如指令
MOVA,@R1;AR1
8051中可以用R0或R1间接寻址片内或片外RAM的256B范围,可以用DPTR或PC间接寻址64KB外部RAM或ROM。4. 立即寻址立即寻址时,指令中地址码部分给出的就是操作数。即取出指令的同时立即得到了操作数。例如指令
MOVA,#6FH;A0x8F
5. 变址寻址变址寻址时,指定的变址寄存器的内容与指令中给出的偏移量相加,所得的结果作为操作数的地址。例如指令
MOVCA,@A DPTR;AA+DPTR
不论是用DPTR还是PC来提供基址指针,变址寻址方式都只适用于8051的程序存储器,通常用于读取数据表。6. 相对寻址相对寻址时,由程序计数器PC提供的基地址与指令中提供的偏移量rel相加,得到操作数的地址。这时指出的地址是操作数与现行指令的相对位置。例如指令
SJMPrel;PCPC+2+rel
7. 位寻址位寻址时,操作数是二进制数的某一位,指令中使用位地址指明要操作的位,例如指令
SETBbit;bit1
8051可用于位寻址的空间是: 内部RAM的可位寻址区和SFR区中的字节地址可以被8整除即地址以0或8结尾的寄存器所占空间。3.2.251指令集8051单片机的指令按其功能可分五大类: 算术运算指令。 逻辑运算指令。 数据传送指令。 布尔运算指令。 程序分支指令。1. 算术运算指令算术运算指令包括四则运算加减乘除、加1、减1以及BCD码十进制加法调整指令等,共有8种指令。分别叙述如下:ADD加指令: 将指定寻址的内容加上累加器内容,并将结果存入累加器中,此种运算会影响特殊功能寄存器PSW。有4种寻址格式:
ADDA,Rn;AA+Rn n: 0~7
ADDA,direct;AA+direct
ADDA,@Ri;AA+Ri
ADDA,#data;AA+data
ADDC带进位加指令: 将指定寻址的内容加上累加器内容,再加上进位标志CY,并将结果存入累加器中。有4种寻址格式:
ADDCA,Rn;AA+Rn+CY
ADDCA,direct;AA+direct+CY
ADDCA,@Ri;AA+Ri+CY
ADDCA,#data;AA+data+CY
以上两个加运算后,如果位7有进位,则特殊功能寄存器PSW的进位标志CY被设定为1,否则为0; 位3若有进位,则特殊功能寄存器的辅助进位标志AC被设定为1,否则为0。此种运算也会影响OV溢出标志,当溢出标志为1时,表示两带号正数相加变为负数溢出或两带号负数相加变为正数溢出。DA十进制调整指令: 将A累加器内容作BCD码调整。指令格式:
DAA;若AC=1或A3~09,则AA+0x06
;若CY=1或A7~49,则AA+0x60
DEC减1指令: 将指定寻址的内容减1。注意这种运算不影响任何标志,且当递减至0x0再递减变为0xFF,共有一下4种寻址格式:
DECA;AA-1
DECdirect;directdirect-1
DEC@Ri;RiRi-1
DECRn;RnRn-1
DIV除法指令: 将累加器A和寄存器B作无符号数相除。指令格式:
DIVAB;AB,A商、B余数
INC加1指令: 将指定寻址的内容加1。注意此种运算不影响任何标志,且当递增至0xFF8bit或0xFFFFDPTR再递增变为0。共有以下5种寻址格式:
INCA;AA+1
INCdirect;directdirect+1
INC@Ri;RiRi+1
INCRn;RnRn+1
INCDPTR;DPTRDPTR+1
MUL乘法指令: 将累加器A和寄存器B作无符号数线相乘。此结果产生一个16位数据。注意: 若运算后B寄存器不为0,则溢出标志被设为1。指令格式:
MULAB;AB,A乘积低字节、B乘积高字节
SUBB带借位减法指令: 将累加器A的内容减去指定寻址的内容,再减去进位标志CY,并将结果存入累加器中,共有4种寻址格式:
SUBBA,Rn;AA-Rn-CY
SUBBA,direct;AA-direct-CY
SUBBA,@Ri;AA-Ri-CY
SUBBA,#data;AA-data-CY
如果位7有借位,进位标志CY被设定为1; 若位3有借位,则辅助进位标志AC被设定为1。此种运算会影响溢出标志,当溢出标志为1时,表示一个带符号正数减一个带符号负数变为负数溢出或一个带符号负数减一个带符号正数变为正数溢出。2. 逻辑运算指令8051的逻辑运算指令包括AND、OR、XOR、NOT、左右移位、清除、高低4位对调等指令。叙述如下:ANL逻辑与指令: 将两个被指定寻址的内容相对应的位分别做逻辑与运算,并将结果存入目的地址中,共有以下6种寻址格式:
ANLA,Rn;AARn
ANLA,direct;AAdirect
ANLA,@Ri;AARi
ANLA,#data;AAdata
ANLdirect,A;directdirectA
ANLdirect,#data;directdirectdata
|
|