第1章 SPCE061A单片机简介 1
1.1 凌阳16位单片机 1
1.2 SPCE061A简介 2
1.2.1 总述 2
1.2.2 性能 2
1.2.3 结构概览 3
1.2.4 芯片的引脚排列和说明 3
1.2.5 特性 5
1.2.6 SPCE061A最小系统 6
1.2.7 SPCE061A开发方法 7
1.2.8 应用领域 8
第2章 SPCE061A单片机的硬件结构 10
2.1 μ’nSPTM的内核结构 10
2.1.1 算术逻辑运算单元ALU 10
2.1.2 寄存器组 11
2.1.3 数据总线和地址总线 13
2.2 SPCE061A的片内存储器结构 13
2.2.1 SRAM 13
2.2.2 堆栈 14
2.2.3 闪存Flash 14
2.3 SPCE061A的输入/输出接口 18
2.3.1 I/O端口结构 18
2.3.2 并行I/O口的组合控制 20
2.3.3 B口的特殊功能 24
2.4 时钟电路 27
2.5 锁相环PLL振荡器 27
2.6 系统时钟 28
2.7 时间基准信号 29
2.8 定时器/计数器 31
2.9 睡眠与唤醒 37
2.9.1 睡眠 37
2.9.2 唤醒 37
2.10 模/数转换器ADC 39
2.10.1 ADC的控制 39
2.10.2 ADC直流电气特性 44
2.11 DAC方式音频输出 44
2.12 低电压监测/低电压复位(LVD/LVR) 46
2.12.1 低电压监测 46
2.12.2 低电压复位(LVR) 47
2.13 串行设备输入输出端口(SIO) 48
2.14 通用异步串行接口UART 51
2.15 保密设定 55
2.16 看门狗计数器(WatchDog) 55
第3章 指令系统 57
3.1 指令系统的概述及符号约定 57
3.2 数据传送指令 58
3.3 SPCE061A的算术运算 62
3.3.1 加法运算 62
3.3.2 减法运算 64
3.3.3 带进位的加减运算 65
3.3.4 取补运算 66
3.3.5 SPCE061A的乘法指令 66
3.3.6 SPCE061A的n项内积运算指令 67
3.3.7 比较运算 68
3.4 SPCE061A的逻辑运算 69
3.4.1 逻辑与 69
3.4.2 逻辑或 71
3.4.3 逻辑异或 72
3.4.4 测试 73
3.4.5 移位 76
3.5 SPCE061A的控制转移类指令 78
3.5.1 无符号数的跳转指令 79
3.5.2 有符号数的跳转指令 80
3.5.3 其他跳转指令 81
3.6 伪指令 82
3.6.1 伪指令的语法格式及特点 82
3.6.2 伪指令符号约定 82
3.6.3 标准伪指令 83
3.6.4 宏定义与调用 93
3.6.5 段的定义与调用 97
3.6.6 结构的定义与调用 98
3.6.7 过程的定义与调用 101
3.6.8 伪指令的应用举例 102
第4章 程序设计 113
4.1 μ’nSPTMIDE的项目组织结构 113
4.2 汇编语言程序设计 115
4.2.1 一个简单的汇编代码 115
4.2.2 汇编的语法格式 116
4.2.3 汇编语言的程序结构 119
4.2.4 嵌套与递归 132
4.3 C语言程序设计 135
4.3.1 μ’nSPTM支持的C语言算术逻辑操作符 135
4.3.2 C语言支持的数据类型 136
4.3.3 程序调用协议 136
4.3.4 C语言的嵌入式汇编 147
4.3.5 利用嵌入式汇编实现对端口寄存器的操作 149
4.4 应用程序设计 152
4.4.1 查表程序 152
4.4.2 数制转换程序 156
第5章 中断系统 162
5.1 概述 162
5.2 SPCE061A的中断系统 163
5.2.1 中断源 164
5.2.2 中断控制 166
5.2.3 中断响应 170
5.3 中断系统的应用 173
5.3.1 单中断源的应用 173
5.3.2 多中断源应用 188
第6章 集成开发环境IDE 197
6.1 概述 197
6.2 菜单 197
6.2.1 文件 198
6.2.2 编辑 199
6.2.3 视图 200
6.2.4 项目 202
6.2.5 编译 202
6.2.6 工具 203
6.2.7 帮助 203
6.2.8 调试 204
6.3 工具栏 205
6.4 窗口 207
6.4.1 Workspace窗口 207
6.4.2 编辑窗口 208
6.4.3 文本编辑器 208
6.4.4 二进制编辑器 209
6.4.5 输出窗口 210
6.4.6 编译输出窗口 211
6.4.7 调试输出窗口(Debug) 211
6.4.8 查找输出窗口 211
6.4.9 调试窗口 212
6.4.10 其他窗口 215
6.5 项目 218
6.5.1 建立项目 218
6.5.2 在项目中新建C文件 219
6.5.3 在项目中新建汇编文件 220
6.5.4 在项目中新建头文件 221
6.5.5 在项目中新建文本文件 221
6.5.6 在项目中新建二进制文件 221
6.5.7 在项目中添加/删除文件 222
6.5.8 在项目中使用资源 223
6.5.9 项目选项的设置 224
6.5.10 项目的编译 227
6.6 代码剖视器使用及功能 228
6.6.1 激活Profile的方法 228
6.6.2 使用Profile的步骤 229
6.7 程序示例 230
第7章 凌阳音频压缩算法 241
7.1 音频概述 241
7.1.1 音频的特点及分类 241
7.1.2 数字音频的采样和量化 241
7.1.3 音频格式的介绍 241
7.1.4 语音压缩编码基础 243
7.1.5 语音合成、辨识技术 244
7.2 凌阳音频简介 245
7.2.1 凌阳音频压缩算法的编码标准 245
7.2.2 压缩分类 245
7.2.3 凌阳常用的音频形式和压缩算法 246
7.2.4 凌阳语音的播放、录制、合成和辨识 246
7.3 常用的应用程序接口API的功能介绍及应用 247
7.3.1 概述 247
7.3.2 SACM_A2000 247
7.3.3 SACM_S480 253
7.3.4 SACM_S240 257
7.3.5 SACM_MS01 261
7.3.6 SACM_DVR 266
7.4 语音压缩方法 273
7.4.1 DOS下的压缩 274
7.4.2 WINDOWS下的压缩 274
7.5 键控放音程序介绍 275
7.6 语音辨识 280
7.6.1 初始化 281
7.6.2 训练部分 281
7.6.3 辨识部分 282
7.6.4 中断部分 282
7.7 小结 290
第8章 μ’nSPTM单片机应用及开发技术 293
8.1 μ’nSPTM的应用领域 293
8.1.1 用于数字信号处理 293
8.1.2 用于开发研制便携移动式终端 294
8.1.3 用于开发嵌入式计算机应用系统 294
8.2 SPCE061A单片机应用举例 295
8.2.1 单片机报时及作息时间控制 296
8.2.2 热敏电阻温度计 298
8.2.3 三角波、正弦波、方波波形发生器 302
8.2.4 红外遥控 305
8.2.5 SPCE061A做语音录放 308
8.2.6 语音识别 313
8.3 数字滤波程序 316
8.3.1 μ’nSP实现FIR滤波——乘——累加功能 316
8.3.2 用μ’nSPTM实现低通FIR滤波器 317
8.3.3 μ’nSP实现FIR滤波需要注意的问题 321
8.3.4 滤波系数出现负数时的滤波运算 321
8.4 卷积编码以及数字比特译码 322
8.4.1 卷积码编码和维特比译码 322
8.4.2 用μ’nSPTM实现卷积编译码 326
8.5 CRC校验程序 330
8.5.1 CRC简介 330
8.5.2 CRC原理 330
附录1 C—Lib中的函数集 333
附录2 μ’nSPTM的指令集一览 345
附录3 μ’nSPTM汇编器伪指令集 353
附录4 μ’nSPTM编译相关错误信息 355
附录5 端口速查表 363
附录6 符号约定 364