目录 1
第一章 MCS-96基本结构 1
1.1 MCS-96系列单片机概述 1
1.1.1 中央处理器(CPU) 3
1.1.2 存贮器组织 5
1.1.3 READY控制 9
1.1.4 掉电方式 10
1.2 中断系统 11
1.2.1 概述 11
1.2.2 中断控制 12
1.2.3 中断优先权排队 14
1.2.4 中断时序 17
1.3 MCS-96的引脚功能 18
1.4 I/O功能简介 22
1.4.1 I/O控制寄存器IOC0和IOCi 25
1.4.2 I/O状态寄存器IOS0和IOSi 26
1.4.3 A/D转换 28
1.4.4 高速输入通道HSI 31
1.4.5 高速输出通道HSO 34
1.4.6 全双工串行口 38
1.4.7 监视跟踪定时器 43
1.4.8 定时器T1和T2 43
1.4.9 脉冲宽度调制输出PWM 45
1.5 硬件设计 47
1.5.1 基本硬件连接 47
1.5.2 仅有EPROM的基本系统 52
1.5.3 带有RAM和ROM的基本系统 53
1.5.4 809×BH的基本系统 54
1.5.5 基本系统I/O扩展 57
1.6 MCS-96指令系统 58
1.6.1 操作数类型 58
1.6.2 寻址方式 59
1.6.3 程序状态字 61
1.6.4 指令系统 62
第二章 算术运算子程序 71
2.1 定点数运算 71
2.1.1 四字节数取补子程序NCMP 71
2.1.2 四字节补码加法子程序NADD 71
2.1.3 四字节补码减法子程序NSUB 72
2.1.4 四字节原码加/减法子程序DADD/DSUB 72
2.1.5 四字节无符号数乘法子程序UMUL 74
2.1.6 四字节无符号数除法子程序UDIV 75
2.1.7 双字节补码整数乘法子程序DMULI 77
2.1.8 双字节补码小数乘法子程序DMULF 77
2.1.10 双字节补码小数除法子程序DDIVF 78
2.2 多字整数运算 78
2.1.9 双字节补码整数除法子程序DDIVI 78
2.2.1 多字整数加法子程序MADD 79
2.2.2 多字整数减法子程序MSUB 79
2.2.3 多字无符号整数乘法子程序MUMUL 80
2.2.4 多字无符号整数除法子程序MUDIV 83
2.2.5 多字取补运算子程序MCMP 85
2.2.6 多字补码整数乘法子程序MMUL 85
2.2.7 多字补码整数除法子程序MDIV 87
2.3 三字节浮点数运算 90
2.3.1 三字节浮点数加法子程序FADD3 91
2.3.2 三字节浮点数减法子程序FSUB3 95
2.3.3 三字节浮点数乘法子程序FMUL3 99
2.3.4 三字节浮点数除法子程序FDIV3 101
2.3.5 双字节整数转换成三字节浮点数子程序INTF3 103
2.3.6 双字节小数转换成三字节浮点数子程序FRCF3 103
2.3.7 三字节浮点数取整子程序FINT3 104
2.4 四字节浮点数运算 106
2.4.1 四字节浮点数加法子程序FADD4 107
2.4.2 四字节浮点数减法子程序FSUB4 111
2.4.3 四字节浮点数乘法子程序FMUL4 115
2.4.4 四字节浮点数除法子程序FDIV4 118
2.4.5 四字节整数转换成浮点数子程序INTF4 122
2.4.6 四字节小数转换成浮点数子程序FRCF4 123
2.4.7 四字节浮点数取整子程序FINT4 124
第三章 函数计算子程序 127
3.1 定点数函数计算 127
3.1.1 四字节整数开平方子程序DSQR 127
3.1.2 双字节小数正弦/余弦函数子程序DSIN/DCOS 128
3.2 三字节浮点数函数计算 130
3.2.1 三字节浮点数多项式计算子程序FPLN3 130
3.2.2 三字节浮点数开平方子程序FSQR3 135
3.2.3 三字节浮点数正弦函数子程序FSIN3 138
3.2.4 三字节浮点数余弦函数子程序FCOS3 142
3.2.5 三字节浮点数正切函数子程序FTAN3 142
3.2.6 三字节浮点数反正切函数子程序FATN3 143
3.2.7 三字节浮点数指数函数子程序FEXP3 146
3.2.8 三字节浮点数自然对数子程序FLNX3 149
3.3 四字节浮点数函数计算 153
3.3.1 四字节浮点数多项式计算子程序FPLN4 153
3.3.2 四字节浮点数开平方子程序FSQR4 157
3.3.3 四字节浮点数正弦函数子程序FSIN4 160
3.3.4 四字节浮点数余弦函数子程序FCOS4 163
3.3.5 四字节浮点数正切函数子程序FTAN4 166
3.3.6 四字节浮点数反正切函数子程序FATN4 167
3.3.7 四字节浮点数指数函数子程序FEXP4 169
3.3.8 四字节浮点数以十为底的指数函数子程序FEXD4 171
3.3.9 四字节浮点数自然对数子程序FLNX4 172
3.3.10 四字节浮点数常用对数子程序FLOG4 175
第四章 数制转换子程序 176
4.1 双字节定点数数制转换 176
4.1.1 双字节整数十翻二子程序IDTB2 177
4.1.2 双字节小数十翻二子程序PDTB2 178
4.1.3 双字节整数二翻十子程序IBTD2 179
4.1.4 双字节小数二翻十子程序PBTD2 180
4.2 四字节定点数数制转换 180
4.2.1 四字节整数十翻二子程序IDTB4 180
4.2.2 四字节小数十翻二子程序PDTB4 181
4.2.3 四字节整数二翻十子程序IBTD4 182
4.3.1 ASCII码十进制输入转换成四字节二进制整数子程序ASCTI 183
4.3 ASCII码及可变字长数制转换 183
4.2.4 四字节小数二翻十子程序PBTD4 183
4.3.2 三/四字节二进制整数转换成n位十进制数子程序IBTDA 185
4.3.3 ASCII十进制输入转换成定点双字节混合小数子程序ASCTB 187
4.3.4 定点双字节混合小数二翻十子程序BBTDA 189
4.4 三字节浮点数数制转换 190
4.4.1 三字节浮点数二翻十子程序FBTD3 190
4.4.2 三字节浮点数十翻二子程序FDTB3 195
4.5 四字节浮点数数制转换 198
4.5.1 四字节浮点数二翻十子程序FBTD4 198
4.5.2 四字节浮点数十翻二子程序FDTB4 201
4.6.1 ASCII码转换成十六进制数子程序ASCHEX 204
4.6 ASCII码与十六进制数转换 204
4.6.2 一字节十六进制数转换成二位ASCII码子程序HEXASC 205
第五章 数据处理子程序 206
5.1 查表与散转 206
5.1.1 单字符查表子程序SCTAB 206
5.1.2 字符串命令查表散转程序SSTJM 208
5.1.3 查表插值子程序TLOOK 211
5.2 链表 213
5.2.1 链表初始化子程序INIT 214
5.2.2 链表插入子程序LTIS 215
5.2.4 链表查找子程序LTLK 216
5.2.3 链表删除子程序LTDL 216
5.3 队列 217
5.3.1 队列写入子程序CBWR 218
5.3.2 队列读出子程序CBRD 219
5.4 数字滤波 219
5.4.1 定点四字节整数算术平均值子程序DAVG4 220
5.4.2 浮点三字节滑动平均值子程序FSAV3 220
5.4.3 定点双字节整数防脉冲干扰平均值子程序DSAV2 222
5.4.4 浮点四字节低通数字滤波子程序FLBD4 224
第六章 输出输入子程序 227
6.1 模数转换使用方法 227
6.1.1 查询方式AD转换子程序ADQR 227
6.1.2 50周快速实时采样子程序AD250 228
6.2 高速输入部件和定时器2使用方法 229
6.2.1 脉冲宽度测量子程序PSPT 230
6.2.2 脉冲周期和频率测量子程序PSTF 232
6.2.3 脉冲频率测量子程序FRQM 236
6.3 高速输出部件使用方法 238
6.3.1 单脉冲输出子程序OUTPS 238
6.3.2 连续脉冲输出子程序OUPSS 238
6.4 串行口使用方法 239
6.4.2 字符输出子程序PUTC 241
6.4.3 字符串输入子程序STIN 241
6.4.1 字符输入子程序GETC 241
6.4.4 字符串输出子程序SOUT 243
6.5 PWM和D/A转换实现方法 244
6.5.1 PWM输出子程序PWMT 244
6.5.2 高分辨率D/A转换子程序HSODA 245
第七章 综合应用子程序 247
7.1 实时时钟 247
7.1.1 初始化程序START 247
7.1.2 软件定时器0中断处理程序STINT 248
7.1.3 日历时钟读出子程序GTIME 253
7.1.4 系统日历写入子程序SDATE 254
7.1.5 系统时钟写入子程序STIME 255
7.2.1 硬件电路 256
7.2 用HSO和HSI实现的双积分A/D转换 256
7.2.2 A/D启动测量子程序STAD 258
7.3 11位A/D实现方法 259
7.3.1 硬件电路 259
7.3.2 11位A/D转换子程序AD11B 260
7.4 打印机驱动方法 261
7.4.1 硬件连接方法 261
7.4.2 中断方式打印驱动程序PRINT 262
7.5 键盘显示接口 264
7.5.1 七段显示器 264
7.5.2 显示子程序DESP 264
7.5.4 键扫描子程序KIN 268
7.5.3 键盘接口 268
7.5.5 用8279实现键盘显示 271
7.5.6 8279初始化子程序INIT79 273
7.5.7 8279显示子程序DSP79 273
7.5.8 8279键盘输入子程序KEY79 274
7.6 不用串行口的串行通信实现方法 276
7.6.1 硬件说明 276
7.6.2 串行输入子程序INPUT 276
7.6.3 串行输出子程序OUTPUT 278
7.6.4 示范通信程序COMPC 281
附录一 MCS-96指令系统和指令表 286
附录二 MCS-96/98实用子程序软件包及其使用方法 300