序 1
前言 1
第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.6 SPCE061A最小系统 6
1.2.5 特性 6
1.2.7 SPCE061A开发方法 7
1.2.8 应用领域 8
第2章 SPCE061A单片机硬件结构 9
2.1 μ'nSP的核心结构 9
2.1.1 ALU算术逻辑运算单元 10
2.1.2 寄存器组 10
2.1.3 数据总线和地址总线 12
2.2 SPCE061A片内存储器结构 13
2.2.1 RAM 13
2.2.2 堆栈 13
2.2.3 闪存Flash 14
2.3.1 I/O端口结构 17
2.3 SPCE061A的输入/输出接口 17
2.3.2 并行I/O端口的控制向量组合 19
2.3.3 B端口的特殊功能 23
2.4 时钟电路 26
2.5 PLL锁相环(Phase Lock Loop) 26
2.6 系统时钟 27
2.7 时间基准信号 28
2.8 Timer定时器/计数器 30
2.9 睡眠与唤醒 37
2.9.1 睡眠 37
2.9.2 唤醒 37
2.10.1 ADC的控制 38
2.10 模拟数字转换器ADC 38
2.10.2 MIC_IN通道方式ADC 43
2.10.3 LINE_IN模式的ADC操作 44
2.11 DAC方式音频输出 46
2.12 低电压监测/低电压复位(LVD/LVR) 48
2.12.1 低电压监测LVD(Low Voltage Detect) 48
2.12.2 低电压复位LVR(Low Voltage Reset) 49
2.13 串行设备输入输出端口(SIO) 50
2.14 通用异步串行接口UART 53
2.15 保密设定 57
2.16 看门狗计数器(WatchDog) 57
习题与思考题 58
3.1 指令系统的概述及符号约定 59
第3章 寻址方式与指令系统 59
3.2 数据传送指令 60
3.3 算术运算 64
3.3.1 加法运算 64
3.3.2 减法运算 66
3.3.3 带进位的加减运算 67
3.3.4 取补运算 68
3.3.5 SPCE061A的乘法指令 68
3.3.6 SPCE061A的n项内积运算指令 69
3.3.7 比较运算(影响标志位N、Z、S、C) 70
3.4.1 逻辑与 71
3.4 SPCE061A的逻辑运算 71
3.4.2 逻辑或 72
3.4.3 逻辑异或 74
3.4.4 测试(TEST) 75
3.4.5 SPCE061A的移位操作 77
3.5 SPCE061A的控制转移类指令 79
3.6 伪指令 83
3.6.1 伪指令的语法格式及特点 83
3.6.2 伪指令符号约定 83
3.6.3 标准伪指令 84
3.6.4 宏定义与调用 95
3.6.5 段的定义与调用 98
3.6.6 结构的定义与调用 99
3.6.7 过程的定义与调用 102
3.6.8 伪指令的应用举例 103
习题与思考题 113
第4章 程序设计 114
4.1 μ'nSP IDE的项目组织结构 114
4.2 汇编语言程序设计 115
4.2.1 编译器中代码流动结构 115
4.2.2 一个简单的汇编代码 116
4.2.3 汇编的语法格式 117
4.2.4 汇编语言的程序结构 119
4.2.5 嵌套与递归 133
4.3.2 C语言支持的数据类型 136
4.3.1 μ'nSP支持的C语言算逻操作符(#) 136
4.3 C语言程序设计 136
4.3.3 程序调用协议 137
4.3.4 C语言的嵌入式汇编 147
4.3.5 利用嵌入式汇编实现对端口寄存器的操作 149
4.4 应用程序设计 151
4.4.1 查表程序 151
4.4.2 数制转换程序 155
习题与思考题 160
第5章 中断系统 161
5.1 中断的概述 161
5.2 SPCE061A中断系统 162
5.2.1 中断源 162
5.2.2 中断控制 165
5.2.3 中断响应 169
5.2.4 中断服务流程 171
5.3 中断系统的应用 172
5.3.1 单中断源的应用 172
5.3.2 多中断源应用 187
习题与思考题 195
第6章 集成开发环境IDE介绍 196
6.1 综述 196
6.2 菜单 196
6.2.1 文件(File) 197
6.2.2 编辑(Edit) 198
6.2.3 视图(View) 199
6.2.4 项目(Project) 200
6.2.5 编译(Build) 201
6.2.6 工具(Tools) 201
6.2.7 帮助(Help) 202
6.2.8 调试(Debug) 202
6.3 工具栏 203
6.4 窗口 205
6.4.1 Workspace窗口 206
6.4.3 文本编辑器 207
6.4.4 二进制编辑器 207
6.4.2 编辑(Edit)窗口 207
6.4.5 输出(Output)窗口 208
6.4.6 编译输出窗口 209
6.4.7 调试输出窗口 209
6.4.8 查找输出窗口 209
6.4.9 调试(Debug)窗口 209
6.4.10 其他窗口 215
6.5 项目 216
6.5.1 建立项目 216
6.5.2 在项目中新建C文件(.C) 217
6.5.3 在项目中新建汇编文件(.asm) 217
6.5.5 在项目中新建文本文件(.txt) 218
6.5.4 在项目中新建头文件(.H) 218
6.5.6 在项目中添加/删除文件 219
6.5.7 在项目中使用资源 220
6.5.8 项目选项的设置 220
6.5.9 项目的编译 224
6.6 代码剖视器(profiler)的使用及功能 224
6.6.1 激活Profile方法 224
6.6.2 使用Profile的步骤 225
6.7 举例 227
习题与思考题 236
7.1.2 数字音频的采样和量化 237
7.1.1 音频的概述(特点、分类) 237
7.1.3 音频格式的介绍 237
第7章 凌阳音频压缩算法 237
7.1 背景介绍 237
7.1.4 语音压缩编码基础 239
7.1.5 语音合成、辨识技术 240
7.2 凌阳音频简介 241
7.2.1 凌阳音频压缩算法的编码标准 241
7.2.2 压缩分类 241
7.2.3 凌阳常用的音频形式和压缩算法 242
7.2.4 凌阳语音的播放、录制、合成和辨识 242
7.3.1 概述 243
7.3.2 SACM_A2000 243
7.3 常用的应用程序接口API的功能介绍及应用 243
7.3.3 SACM_S480 249
7.3.4 SACM_S240 253
7.3.5 SACM_MS01 257
7.3.6 SACM_DVR 262
7.4 语音压缩方法 269
7.5 键控放音程序介绍 270
7.6 语音辨识 275
习题与思考题 283
第8章 μ'nSP单片机应用及开发技术 284
8.1 μ'nSP的应用领域 284
8.1.1 用于数字信号处理 284
8.1.3 用于开发嵌入式计算机应用系统 285
8.1.2 用于开发研制便携移动式终端 285
8.2 SPCE061A单片机的应用举例 286
8.2.1 单片机报时及作息时间控制 287
8.2.2 热敏电阻温度计 289
8.2.3 三角波、正弦波、方波波形发生器 293
8.2.4 红外遥控 296
8.2.5 SPCE061A做语音录放 300
8.2.6 语音识别 302
8.3 数字滤波程序 307
8.3.1 μ'nSP实现FIR滤波:乘-累加(MAC)功能 307
8.3.2 用μ'nSP实现低通FIR滤波器 308
8.3.3 用μ'nSP实现FIR滤波需要注意的问题 311
8.3.4 滤波系数出现负数时的滤波运算 312
8.4 卷积编码以及数字比特译码 313
8.4.1 卷积码编码和维特比译码 313
8.4.2 用μ'nSP实现卷积编译码 316
8.5 CRC校验程序 320
8.5.1 CRC简介 320
8.5.2 CRC原理 321
附录A C-Lib中的函数集 324
附录B μ'nSP的指令集 335
附录C μ'nSP汇编器伪指令集 345
附录D μ'nSP编译的相关错误信息 347
附录E 端口速查表 354
附录F 符号约定 356
参考文献 357