目录 1
1.1 凌阳16位单片机 1
第1章 SPCE061A单片机简介 1
1.2 SPCE061A简介 2
1.2.1 概述 2
1.2.2 特色 2
1.2.3 结构概览 3
1.2.4 芯片的引脚排列和说明 3
1.2.5 特性 7
1.2.6 SPCE061A的最小系统 8
1.2.7 SPCE061A的开发方式 9
1.2.8 应用领域 9
第2章 SPCE061A单片机硬件结构 11
2.1 μ’nSPTM的内核结构 11
2.1.1 算术逻辑运算单元ALU 11
2.1.2 寄存器组 12
2.1.3 数据总线和地址总线 15
2.2 SPCE061A片内存储器结构 15
2.2.1 RAM 15
2.2.2 堆栈 16
2.2.3 闪存Flash 16
2.3 SPCE061A的输入/输出接口 20
2.3.1 I/O端口结构 21
2.3.2 并行I/O口的组合控制 23
2.3.3 B口的特殊功能 30
2.4 时钟电路 33
2.5 锁相环PLL振荡器 33
2.6 系统时钟 33
2.7 时间基准信号 35
2.8 定时器/计数器 37
2.9.2 唤醒 45
2.9.1 睡眠 45
2.9 睡眠与唤醒 45
2.10.1 ADC的控制 46
2.10 模/数转换器ADC 46
2.10.2 ADC的直流电气特性 53
2.10.3 MIC_IN通道方式ADC 54
2.10.4 LINE_IN模式的ADC操作 55
2.11 DAC方式音频输出 57
2.12 低电压监测/低电压复位(LVD/LVR) 60
2.12.1 低电压监测 60
2.12.2 低电压复位 61
2.13 串行设备输入输出端口(SIO) 62
2.14 通用异步串行接口UART 65
2.16 看门狗计数器(WatchDog) 70
2.15 保密设定 70
3.1 指令系统的概述及符号约定 72
第3章 指令系统 72
3.2 数据传送指令 74
3.3 SPCE061A的算术运算 78
3.3.1 加法运算 78
3.3.2 减法运算 80
3.3.3 带进位的加减运算 82
3.3.4 取补运算 83
3.3.5 SPCE061A的乘法指令 83
3.3.6 SPCE061A的n项内积运算指令 83
3.3.7 比较运算 85
3.4.1 逻辑与 86
3.4 SPCE061A的逻辑运算 86
3.4.2 逻辑或 88
3.4.3 逻辑异或 89
3.4.4 测试 91
3.4.5 移位 94
3.5 SPCE061A的控制转移类指令 96
3.5.1 无符号数的跳转指令 98
3.5.2 有符号数的跳转指令 99
3.5.3 其他跳转指令 100
3.6 伪指令 101
3.6.1 伪指令的语法格式及特点 101
3.6.2 伪指令符号约定 101
3.6.3 标准伪指令 102
3.6.4 宏定义与调用 114
3.6.5 段的定义与调用 118
3.6.6 结构的定义与调用 119
3.6.7 过程的定义与调用 123
3.6.8 伪指令的应用举例 124
第4章 程序设计 137
4.1 μ’nSPTMIDE的项目组织结构 137
4.2 汇编语言程序设计 139
4.2.1 一个简单的汇编代码 139
4.2.2 汇编的语法格式 141
4.2.3 汇编语言的程序结构 144
4.2.4 嵌套与递归 159
4.3 C语言程序设计 162
4.3.1 μ’nSPTM支持的C语言算术逻辑操作符 163
4.3.2 C语言支持的数据类型 163
4.3.3 程序调用协议 164
4.3.4 C语言的嵌入式汇编 176
4.3.5 利用嵌入式汇编实现对端口寄存器的操作 178
4.4 应用程序设计 181
4.4.1 查表程序 181
4.4.2 数制转换程序 186
第5章 中断系统 192
5.1 概述 192
5.2 SPCE061A的中断系统 193
5.2.1 中断源 194
5.2.2 中断控制 197
5.2.3 中断响应 202
5.3.1 单中断源的应用 205
5.3 中断系统的应用 205
5.3.2 多中断源应用 221
第6章 集成开发环境IDE 232
6.1 概述 232
6.2 菜单 233
6.2.1 文件 233
6.2.2 编辑 235
6.2.3 视图 236
6.2.4 项目 237
6.2.5 编译 238
6.2.6 工具 239
6.2.7 帮助 240
6.2.8 调试 240
6.3 工具栏 241
6.4 窗口 244
6.4.1 Workspace窗口 245
6.4.2 编辑窗口 246
6.4.3 文本编辑器 246
6.4.4 二进制编辑器 247
6.4.5 输出窗口 248
6.4.6 编译输出窗口 248
6.4.7 调试输出窗口 249
6.4.8 查找输出窗口 249
6.4.9 调试窗口 249
6.4.10 其他窗口 256
6.5 项目 258
6.5.1 建立项目 258
6.5.2 在项目中新建C文件 259
6.5.3 在项目中新建汇编文件 260
6.5.4 在项目中新建头文件 261
6.5.5 在项目中新建文本文件 261
6.5.6 在项目中添加/删除文件 262
6.5.7 在项目中使用资源 263
6.5.8 项目选项的设置 264
6.5.9 项目的编译 269
6.6 代码剖视器(profiler)使用及功能 269
6.6.1 激活Profile方法 270
6.6.2 使用Profile步骤 271
6.7 举例 273
第7章 凌阳音频压缩算法 285
7.1 音频概述 285
7.1.1 音频的特点及分类 285
7.1.2 数字音频的采样和量化 285
7.1.3 音频格式的介绍 285
7.1.4 语音压缩编码基础 287
7.1.5 语音合成、辨识技术 288
7.2.3 凌阳常用的音频形式和压缩算法 290
7.2 凌阳音频简介 290
7.2.1 凌阳音频压缩算法的编码标准 290
7.2.2 压缩分类 290
7.2.4 凌阳语音的播放、录制、合成和辨识 291
7.3 常用的应用程序接口API的功能介绍及应用 292
7.3.1 概述 292
7.3.2 SACM_A2000 293
7.3.3 SACM_S480 299
7.3.4 SACM_S240 304
7.3.5 SACM_MS01 308
7.3.6 SACM_DVR 314
7.4 语音压缩方法 322
7.4.1 DOS下的压缩 323
7.4.2 WINDOWS下的压缩 324
7.5 键控放音程序介绍 324
7.6 语音辨识 331
7.6.1 初始化 331
7.6.2 训练部分 331
7.6.3 辨识部分 332
7.6.4 中断部分 333
7.7 小结 341
第8章 μ’nSPTM单片机应用及开发技术 345
8.1 μ’nSPTM的应用领域 345
8.1.1 用于数字信号处理 345
8.1.2 用于开发研制便携移动式终端 346
8.1.3 用于开发嵌入式计算机应用系统 347
8.2 SPCE061A单片机应用举例 348
8.2.1 单片机报时及作息时间控制 348
8.2.2 热敏电阻温度计 352
8.2.3 三角波、正弦波和方波波形发生器 355
8.2.4 红外遥控 359
8.2.5 SPCE061A做语音录放 363
8.2.6 语音识别 367
8.3.1 μ’nSPTM实现FIR滤波——乘—累加功能 371
8.3 数字滤波程序 371
8.3.2 用μ’nSPTM实现低通FIR滤波器 372
8.3.3 μ’nSP实现FIR滤波需要注意的问题 376
8.3.4 滤波系数出现负数时的滤波运算 377
8.4 卷积编码以及数字比特译码 378
8.4.1 卷积码编码和维特比译码 378
8.4.2 用μ’nSPTM实现卷积编译码 382
8.5 CRC校验程序 386
8.5.1 CRC简介 386
8.5.2 CRC原理 387
附录1 C-Lib中的函数集 390
附录2 μ’nSPTM的指令集一览 403
附录3 μ’nSPTM汇编器伪指令集 411
附录4 μ’nSPTM编译相关错误信息 413
附录5 端口速查表 422
附录6 符号约定 424