具体描述
内容简介
由Philips最新推出的新一代的功能增强型80C51系列16位微控制器――80C51XA,具有执
行速度快、支持高级语言和实时多任务执行、易于形成系列派生产品以及其它一些重要性能,并与
当今广泛使用的80C51系统保持源码级兼容性,是未来21世纪最优秀的16位微控制器之一。
本书从系统的高度分析了80C51XA的一些重要设计考虑,着重分析了80C51XA系统设计
要点和发展战略,详细阐述了XA的片内硬件资源,使用了大量篇幅详细阐述了XA的各类指令、
并与80C51作了详细比较。具体介绍了XA第一代派生产品P51XA一G3系列,还介绍了XA的大
量典型应用及其开发支持工具。
本书充分考虑了自学的特点,列有一定数量的应用实例和编程实例,既可以作为有关专业本
科生和研究生的参考教材和教学参考书,也可以作为从事微控制器技术开发和应用人员的实用参
考工具书和自学用书。
作者简介
目录信息
第一章 80C 51 XA系统设计概览
第一节 微控制器产品发展概述
第二节 80C51主要特点及其系列产品发展
第三节 80C51XA系统设计要点
一、中央处理单元(CPU)
二、存贮器结构
三、80C51XA指令系统
四、80C51XA外部总线
五、端口
六、在片外围设备
七、多任务管理
八、与80C51兼容性
第四节 80C51XA发展战略
第二章 80C 51XA在片硬件资源
第一节 中央处理单元
一、程序状态字
二、系统配置寄存器
三、复位
四、振荡器
五、低功耗工作方式
六、堆栈
七、中断系统
八、跟踪方式调试
第二节 存贮系统
一、寄存器堆
二、存贮器空间
三、数据存贮器
四、程序存贮器
五、特殊功能寄存器
第三节 XA在片外设部件
一、外设部件与XA内核接口
二、通用定时器
三、可编程计数器阵列(PCA)
四、I2C总线系统
五、监视跟踪定时器(WDT)
六、异步串行通信接口(UART)
七、通用外设接口(UPI)
第四节 外部总线
一、外部总线信号
二、总线配置
三、总线定时和时序
四、端口
第五节 特殊功能寄存器总线(SFR总线)
一、实现和功能增强
二、“读―修改―写”
第六节 与80C51硬件兼容性
一、存贮器映像和寻址
二、中断和异常处理
三、在片外设部件
四、总线接口
第三章 80C51 XA 指令系统
第一节 寻址方式
一、寄存器寻址
二、间接寻址
三、间接一偏移量寻址
四、直接寻址
五、SFR寻址
六、立即寻址
七、位寻址
第二节 数据类型和符号约定
一、数据类型
二、符号约定
三、关于相对分支转移和跳转地址的约定
第三节 算术操作类指令
一、ADD 整数加
二、ADDC带进位位整数加
三、ADDS4位带符号立即数加
四、ASL算术左移
五、ASR算术右移
六、CMP整数比较
七、DA十进制调整字节寄存器
八、DIV各类除法
九、LEA加载带8位或16位偏移量的16位有效地址至寄存器
十、MUL各类乘法
十一、NEG求补
十二、SEXT带符号扩展
十三、SUB整数减
十四、SUBB带借位位减
第四节 逻辑操作类指令
一、AND逻辑与
二、CPL整数求反
三、LSR逻辑右移
四、NORM归一化
五、OR逻辑或
六、RO TATE旋转
七、XO R逻辑异或
第五节 数据传送类指令
一、MOV传送
二、MOVC代码传送
三、MOVS传送4位带符号立即数
四、MOVX传送外部数据
五、PUSH/PUSHU压栈
六、PUSH/PUSHU重复压栈
七、POP/POPU弹栈
八、POP/POPU重复弹栈
九、XCH交换
第六节 程序转移类指令
一、Branch分支转移
二、CALL子程序调用
三、CJNE比较,若不相等则跳转
四、DJNZ减1,若不为零则跳转
五、JUMP跳转
六、NOP空操作
七、RET由子程序返回
八、RETI由中断返回
第七节 位操作类指令
一、ANL位逻辑与
二、CLR清除位
三、MOV位传送
四、ORL位逻辑或
五、SETB位置位
第八节 异常/陷阱类指令
一、BKPT断点
二、RESET软件复位
三、TRAP软件陷阱
第九节 与80C51软件兼容性
一、指令设置
二、代码转换
三、80C51XA中新设置的指令
附:80C51XA中的操作数非法组合
第四章 80C51 XA系列派生产品
第一节 概述
第二节 P51XA―G3主要部件功能
一、定时器/计数器
二、监视跟踪定时器(WDT)
三、通用异步收/发器(UART)
四、I/O口输出配置和外部总线
五、中断
六、运行中一些问题
第三节 极限参数和电气特性
一、极限参数
二、直流电气特性
三、交流电气特性
第四节 EPROM特性
一、快速脉冲编程
二、程序校验
三、擦除特性
四、加密位
第五节 P51XA―C3和P51XA―S3
一、P51XA一C3
二、P51XA―S3
第五章 80C51XA系列应用及开发
第一节 80C51XA的实时多任务应用
一、双堆栈方法
二、寄存器组
三、中断等待和内务操作
四、保护
第二节 80C51XA用于单精度浮点算术运算
一、浮点数表示方法
二、算法实现
三、单精度浮点算术运算C语言程序清单
第三节 80C51XA用于数字滤波
一、数字滤波算法
二、数字滤波实现
三、实现FIR程序清单
第四节 XA与80C51兼容性设计
一、设计考虑
二、存贮器配置
三、CPU功能和外设
四、指令概览
五、一个实例
第五节 XA对高级语言的支持
一、支持HLL和XA结构
二、数据
三、变量
四、算符
五、其他支持措施
第六节 XA,68000.80C196和80C51性能评估
一、汽车发动机管理汇编语言标准检查程序
二、XA基准例行程序
三、80C51基准例行程序
四、68000基准例行程序
五、80C196基准例行程序
六、位操作
七、评估结果和结论
八、标准检查程序的局限
第七节 80C51XA开发及其支持工具
一、概 述
二、EMUL51XA在线仿真器
三、DB―XA开发板
四、PHILIPS的两种开发工具
附录:本书及80C51XA中常用英文缩写索引
主要参考书目和文献
· · · · · · (收起)
读后感
用户评价
从应用开发的视角来看,这本书的价值在于它提供了一套完整的设计哲学,而不仅仅是孤立的模块介绍。在后续的“应用开发”章节中,作者将前面讲解的I/O、定时器、中断、串行通信等模块串联起来,构建了几个典型的应用案例。令我印象深刻的是,它详细阐述了如何利用80C51XA的异步串行通信接口(UART)来实现可靠的PC机通信,包括波特率的精确计算、数据帧的校验以及软件对发送和接收缓冲区的管理。更有意思的是,书中讨论了如何利用定时器来构建软件PWM(脉宽调制)输出,并用这个PWM来控制一个简单的电机调速系统。这个例子完美地展示了如何将多个底层功能组合起来解决一个实际的控制问题。这种自底向上的设计方法论,教会读者如何从最小的可编程单元开始,逐步搭建起一个完整的、可信赖的系统,而不是仅仅依赖于现成的库函数,这对于培养独立解决复杂问题的能力非常有帮助。
这本书的整体风格是沉稳且充满学术气息的,这使得它在处理像“系统设计”这类抽象概念时显得尤为到位。它不是简单地告诉你“应该怎么做”,而是先建立起一套严谨的理论基础,然后引导你思考“为什么必须这么做”。我特别留意了书中关于系统资源分配和功耗管理的章节。在80C51XA这种资源受限的系统中,如何高效地利用有限的SFR空间和片内RAM,是项目成功的关键。书中详细讨论了如何在多个任务之间切换时,确保寄存器组的上下文保存和恢复是完整且无损的,这在多任务环境(即使是简单的轮询式多任务)中至关重要。此外,对于一些相对前沿(对于那个时代的微控制器而言)的应用,比如简单的A/D转换器的接口程序设计,它也给出了详细的初始化流程和数据读取的时序要求。总而言之,这本书像是一份经过时间考验的工程蓝图,它的价值在于其深度和广度,它迫使读者去理解每一个操作背后的物理或逻辑意义,而非仅仅停留在表面的功能实现上。
这本书的书名虽然听起来挺专业的,直奔主题地提到了80C51XA这个核心,但对于我这个初入嵌入式领域的新手来说,它更像是一本技术宝典,厚重而充满了挑战。我印象最深的是书中对硬件接口的讲解部分,简直是事无巨细。比如,它详细剖析了并行输入输出端口的底层结构,不仅仅是告诉你哪个引脚管什么功能,而是深入到了寄存器级别的操作细节,如何通过设置不同的控制位来实现准双向、推挽输出或是高阻态。这种详尽的描述,对于理解微控制器I/O的真正工作原理至关重要,避免了许多初学者仅仅停留在“调用函数”的层面,而不知道背后发生了什么。特别是关于中断控制器的部分,从外部中断的触发条件设置,到定时器/计数器的不同工作模式(如波特率发生器的应用),书中都配有大量的时序图和电路图来辅助说明。这些图示清晰地展示了信号的来龙去脉,让人能够直观地把握时序关系,这在调试复杂的外部设备驱动时简直是救命稻草。我记得我曾为了搞清楚一个特定模式下的定时器溢出中断优先级,翻阅了好几页,最终才恍然大悟,原来是书中提到的小小的“中断嵌套位”在起作用。可以说,这本书在基础硬件操作的深度挖掘上,做得非常扎实,为后续的系统集成打下了坚实的基础。
这本书的结构布局和内容的组织方式,体现出一种老派但极为严谨的工程学思维。它并非那种以“项目实战”为导向的轻快读物,而更像是一本详尽的参考手册,需要读者带着问题去查阅,去钻研。我特别欣赏它在“器件”部分的处理方式,它似乎将80C51XA的Datasheet进行了二次提炼和重构,用更符合教学逻辑的方式进行了归类。例如,在讲解片内RAM和SFR(特殊功能寄存器)的映射时,作者没有简单地罗列地址,而是根据功能模块(如定时器组、串行通信组、I/O组)进行划分,并用表格的形式清晰地标注了每个寄存器的位定义(Bit Definition)。这种组织方式极大地提高了查找效率。此外,书中关于存储器扩展的内容也颇具深度。它不仅介绍了基本的外部RAM和ROM的连接方法,还讨论了BANK选择机制以及如何通过I/O口线来实现地址分段的复杂操作,甚至触及了早期的EPROM/EEPROM编程接口的要求。对于那些需要设计带有较大程序空间或数据存储需求的嵌入式系统开发者而言,这部分内容提供的理论指导和设计思路是相当宝贵的,远超一般入门教程的范畴。
当我尝试将书中的理论知识应用于实际的嵌入式软件开发时,我发现这本书对汇编语言的讲解部分是其一大特色,尽管现代开发多以C语言为主,但理解底层汇编依然是成为高级工程师的必经之路。作者在介绍指令集时,并没有停留在简单的助记符说明,而是深入剖析了每条指令执行时的CPU内部状态变化,比如哪些标志位(Flag)会受到影响,以及访问内部存储器和外部存储器指令在时钟周期上的细微差别。这种对指令周期和CPU执行流程的精细刻画,对于编写对时间要求极高的实时代码至关重要。例如,在处理快速数据采集或精确波形输出的场景中,精确控制延迟是关键,书中关于如何利用空指令序列来构造微秒级延迟的例子,就显得尤为实用。同时,书中也穿插了一些关于程序优化的小技巧,比如如何高效地使用堆栈,如何利用程序存储器的查表功能来代替复杂的计算。这些内容,虽然略显“过时”,但却是理解微控制器性能瓶颈和优化潜力的核心钥匙,展现了作者深厚的实践经验。