第一章 概述 1
1.1 单片机应用系统的结构 1
1.2 MCS-96单片机应用系统设计基础 2
1.2.1 引脚功能及外部扩展特性 2
1.2.2 存储器及管理 7
1.2.3 芯片组态寄存器 12
1.3 MCS-96单片机应用系统的设计与调试 15
1.3.1 总体设计 16
1.3.2 硬件电路设计 16
1.3.3 基本硬件电路的调试 19
1.3.4 软件设计 20
1.4 PL/M-96语言特点 21
第二章 PL/M-96语言设计基础 22
2.1 PL/M-96简单程序分析 22
2.2 PL/M-96字符集、标识符、注释 23
2.2.1 字符集 23
2.2.2 标识符、保留字和预说明符 24
2.2.3 注释 24
2.3 数据类型和类型说明 25
2.3.1 数据类型 25
2.3.2 简单说明语句 25
2.4 变量 26
2.4.1 字节(byte)、字(word)和双字(dword)变量 26
2.4.2 整型(integer)、短整型(short)和长整型(intlongint)变量 26
2.4.3 实型(real)变量 26
2.4.4 地址型(address)变量和(·)运算符的地址引用 27
2.4.5 变量的fast和slow属性及说明 27
2.4.6 隐含类型转换 27
2.5 常数 28
2.5.1 纯数常数 28
2.5.2 浮点常数 29
2.5.3 字符串 29
2.6 表达式及运算规则 29
2.6.1 操作数 29
2.6.2 算术运算及其表达式 30
2.6.3 关系运算及其表达式 31
2.6.4 逻辑运算及其表达式 31
2.6.5 表达式的计算顺序 32
2.6.6 常数表达式计算 34
2.7 数组和结构 35
2.7.1 数组 35
2.7.2 结构 36
2.8 变量的引用 38
2.8.1 完全限定的变量引用 38
2.8.2 非限定的变量引用 38
2.8.3 部分限定的变量引用 38
2.9 有基变量 39
2.9.1 有基变量 39
2.9.2 有基变量和地址引用举例 39
2.10 高级说明语句 40
2.10.1 at属性说明 40
2.10.2 data赋值 41
2.10.3 文字(literally)说明及用途 41
2.10.4 组合说明语句 42
第三章 PL/M-96可执行语句和程序块 43
3.1 赋值语句 43
3.1.1 赋值语句 43
3.1.2 多次赋值语句 43
3.1.3 内嵌赋值语句 44
3.2 DO程序块 44
3.2.1 简单do程序块 44
3.2.2 do while程序块 45
3.2.3循环do程序块 46
3.2.4 do case程序块 48
3.3 条件(IF)语句 49
3.3.1 if语句 49
3.3.2 嵌套if语句 50
3.4 语句标号和GOTO语句 51
3.4.1 语句标号 51
3.4.2 goto语句 52
3.5 过程 53
3.5.1 过程说明 53
3.5.2 过程的调用 56
3.5.3 从过程中转出 58
3.6 过程的其它属性 58
3.6.1 重人性和重人属性(reentrant) 58
3.6.2 可间接调用属性(indirectly-callable) 59
3.6.3 可中断调用属性(interrupt-callable) 59
3.7 内部过程和内部变量 59
3.7.1 获取变量信息的内部过程 59
3.7.2 类型转换过程 61
3.7.3 移位和循环移位过程 62
3.7.4 串处理过程 63
3.7.5 位操作过程 65
3.5.6 其它内部过程和内部变量 66
3.8 与MCS-96硬件有关的PL/M-96运算符和内部过程 66
3.8.1 plus和minus运算符 66
3.8.2 与硬件有关的PL/M-96内部过程 67
3.9 其它可执行语句 68
3.9.1 调用和返回语句(call、return) 68
3.9.2 空语句(;) 68
3.9.3 开中断和关中断语句(enable、disable) 68
第四章 PL/M-96程序结构及编程举例 69
4.1 概述 69
4.1.1 程序块 69
4.1.2 模块 69
4.1.3 程序 69
4.2 作用域 70
4.2.1 几个基本术语 70
4.2.2 作用域 71
4.3 连接属性(PUBLIC和EXTERNAL)——扩展作用域 72
4.4 标号作用域和对GOTO语句的进一步说明 74
4.4.1 标号的作用域 74
4.4.2 对goto语句的进一步说明 75
4.5 程序举例 76
4.5.1 编程概要 76
4.5.2 分类程序实例 77
4.5.3 使用过程的分类程序实例 79
4.5.4 模块化结构程序实例 82
第五章 PL/M-96的编译和调试 84
5.1 PL/M-96语言程序编译连接步骤及举例 84
5.1.1 编译连接的运行环境和操作步骤 84
5.1.2 编译连接操作举例 85
5.2 编译程序控制 91
5.3 目标文件控制 92
5.3.1 优化控制(optimize) 92
5.3.2 快速控制(fast) 97
5.3.3 寄存器覆盖控制(regoverlay/noregoverlay) 98
5.3.4 建立目标文件控制(object/noobject) 100
5.3.5 调试控制(debug/nodebug) 100
5.3.6 类型控制(type/notype) 100
5.4 列表控制 101
5.4.1 列表选择控制 101
5.4.2 列表格式控制 102
5.5 嵌入源文件控制 103
5.5.1 嵌入源文件控制(include) 103
5.5.2 保存/恢复控制(save/restore) 103
5.6 条件编译控制 104
5.6.1 条件编译控制(if/else/clscif/endif) 104
5.6.2 设置条件开关控制(set/reset) 105
5.6.3 条件列表控制(cond/nocond) 106
5.7 用户程序目标模块的连接 108
5.7.1 使用rl96的一般格式 108
5.7.2 ROM控制 109
5.7.3 RAM控制 109
5.7.4 stacksize控制 109
5.7.5 其它控制 109
5.8 PL/M-96语言程序和汇编语言程序的连接 110
5.9 PL/M-96语言程序仿真调试及LCP96软件的使用方法 111
5.9.1 LCP96软件使用过程中出现的文件扩展名的约定 112
5.9.2 启动LCP96 112
5.9.3 LCP96状态参数设定及仿真机初始化 115
5.9.4 PL/M-96程序的编写,编译和连接 116
5.9.5 软件调试 116
5.9.6 观察、修改片内和片外RAM 118
5.9.7 LCP96功能热键 118
第六章 MCS-96应用特点及编程方法 120
6.1 概述 120
6.2 中断系统及控制编程 121
6.2.1 8097BH中断源及其优先级 121
6.2.2 8097BH中断控制 123
6.2.3 中断服务程序的设计 125
6.2.4 中断响应时间 127
6.3 高速输入通道HSI及编程 128
6.3.1 HSI结构及特点 128
6.3.2 HSI输入控制 131
6.3.3 HSI应用编程 132
6.4 高速输出通道HSO及编程 134
6.4.1 HSO的基本结构 134
6.4.2 HSO控制及编程 137
6.5 A/D转换及编程 140
6.5.1 8097BH A/D转换器结构及应用特点 140
6.5.2 A/D转换的编程方法 141
6.6 PWM输出和D/A转换 144
6.6.1 PWM结构和工作原理 144
6.6.2 用PWM实现D/A转换 145
6.6.3 PWM的控制和编程 146
6.6.4 利用HSO输出PWM脉冲 146
6.7 80C196KB应用特点介绍 147
6.7.1 80C196KB中断结构及特点 147
6.7.2 80C196定时器T2 150
6.7.3 80C196的高速输出 151
6.7.4 80C196脉冲宽度调制输出(PWM) 151
6.7.5 80C196总线出让功能 151
第七章 外部扩展接口及程序设计 154
7.1 8279键盘显示接口 154
7.1.1 8279键盘显示接口芯片结构及功能 154
7.1.2 命令格式与命令字 157
7.1.3 8279状态格式与状态字 161
7.1.4 8279编程与调试 161
7.2 微型打印机及其接口 168
7.2.1 TPμP-T微型打印机接口及时序 168
7.2.2 TPμP-T打印命令 170
7.2.3 打印机接口调试与编程举例 174
7.3 串行接口和多机通信 176
7.3.1 与串行口有关的寄存器 176
7.3.2 串行口四种工作方式 178
7.3.3 串行通信应用与编程 180
7.3.4 80C196串行口特点 184
第八章 浮点运算库及实型数运算程序设计 186
8.1 实型数(REAL) 186
8.1.1 实型数表示方法 186
8.1.2 实型数类型说明和类型转换 187
8.2 REAL数学部件 188
8.2.1 几个基本概念 188
8.2.2 REAL部件初始化 189
8.3 REAL运算中的例外状态 190
8.3.1 不合法操作例外 190
8.3.2 非规格化操作例外 191
8.3.3 被零除例外 191
8.3.4 上溢例外 191
8.3.5 下溢例外 191
8.3.6 精度降低例外 191
8.4 与浮点运算有关的内部过程 192
8.4.1 获取出错字节过程(get $ real $ error) 192
8.4.2 保存real状态过程(save $ real $ status) 192
8.4.3 恢复real状态过程(restore $ real $ status) 193
8.4.4 浮点运算库中的开平方等过程 193
8.5 浮点运算库(FPAL96) 194
8.6 实型数运算编程举例 194
附录 197
附录A PL/M-96出错信息 197
附录B PL/M-96特殊字符 204
附录C PL/M-96语言保留字 205
附录D PL/M-96语言预说明的标识符 206
参考文献 207