第1章 嵌入式系统简介 1
1.1 嵌入式系统 1
1.1.1 系统 1
1.1.2 嵌入式系统 1
1.1.3 嵌入式系统的分类 2
1.2 嵌入式系统硬件 3
1.2.1 嵌入式微处理器 3
1.2.2 嵌入式微控制器 3
1.2.3 嵌入式DSP处理器 4
1.2.4 嵌入式片上系统 4
1.3 嵌入式系统软件 4
1.4 嵌入式操作系统 5
1.4.1 嵌入式操作系统的种类 5
1.4.2 嵌入式操作系统的发展 5
1.4.3 使用实时操作系统的必要性 6
1.4.4 实时操作系统的优缺点 6
1.5 嵌入式系统开发方法 6
第2章 Freescale HCS12和HCS12X系列单片机简介 8
2.1 HCS12系列单片机概述 8
2.1.1 HCS12系列单片机的命名规则 8
2.1.2 HCS12系列单片机简介 9
2.2 HCS12X系列单片机概述 10
2.2.1 HCS12X系列单片机主要特点 10
2.2.2 XGATE协处理器与主处理器的关系 11
2.2.3 XGATE的基本特性 12
2.2.4 典型S12X系列单片机简介 14
2.3 MC9S12XS128简介 15
2.3.1 MC9S12XS128性能概述 15
2.3.2 MC9S12XS128内部结构、主要特性及引脚 15
2.3.3 MC9S12XS128引脚功能 24
2.4 CPU12(X)核 27
2.4.1 CPU12(X)核特性 27
2.4.2 编程模型 27
2.5 MC9S12XS128的存储器映射 30
2.6 MC9S12XS128内部锁相环模块PLL 31
2.6.1 CRG时钟合成寄存器(SYNR) 32
2.6.2 CRG时钟参考分频寄存器(REFDV) 32
2.6.3 CRG时钟后分频寄存器(POSTDIV) 33
2.6.4 CRG标志寄存器(CRGFLG) 33
2.6.5 CRG时钟选择寄存器(CLKSEL) 34
2.6.6 CRG IPLL控制寄存器(PLLCTL) 35
2.6.7 CRG中断使能寄存器(CRGINT) 36
2.6.8 CRG IPLL模块应用实例 36
第3章 S12X指令系统 38
3.1 概述 38
3.2 S12X汇编指令的格式和符号说明 38
3.2.1 操作码和操作数 39
3.2.2 数据类型 39
3.2.3 数据表示方法 39
3.2.4 寄存器和存储器表示法 40
3.3 寻址方式(Addressing Mode) 40
3.3.1 隐含/固有寻址(Inherent Addressing,INH) 40
3.3.2 立即寻址(Immediate Addressing,IMM) 41
3.3.3 直接寻址(Direct Addressing,DIR) 42
3.3.4 扩展寻址(Extended Addressing,EXT) 42
3.3.5 相对寻址(Relative Addressing,REL ) 43
3.3.6 变址寻址(Indexed Addressing,IDX) 44
3.3.7 全局寻址(Global Page Index Register) 50
3.4 S12X汇编指令系统 50
3.4.1 数据传送指令 50
3.4.2 算术运算指令 58
3.4.3 逻辑运算指令 66
3.4.4 高级函数指令 71
3.4.5 程序控制指令 74
3.4.6 S12X控制指令 77
3.5 汇编程序伪指令 79
3.5.1 段定义指令 79
3.5.2 常量赋值指令 81
3.5.3 常量存储指令 82
3.5.4 分配变量指令 84
3.5.5 汇编控制指令 85
3.5.6 符号链接指令 85
第4章 C语言的嵌入式编程 87
4.1 编程语言的选择 87
4.2 C语言编程元素 88
4.2.1 全局变量和局部变量 88
4.2.2 头文件 88
4.2.3 编译预处理 89
4.2.4 数据类型 91
4.2.5 运算符 93
4.2.6 指针 95
4.2.7 条件语句、循环语句及无限循环语句 95
4.2.8 函数 98
4.3 C程序编译器与交叉编译器 101
4.4 CodeWarrior软件简介 102
4.4.1 CodeWarrior的安装 102
4.4.2 CodeWarrior使用简介 104
第5章 MC9S12XS输入/输出端口模块及其应用实例 110
5.1 输入/输出端口简介 110
5.2 输入/输出端口寄存器及设置 110
5.2.1 PORTA、PORTB、PORTE和PORTK 112
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 114
5.2.3 A/D端口用做数字I/O口 116
5.3 输入/输出端口应用实例 118
5.3.1 控制输出设备LED实例 118
5.3.2 读取输入设备拨码开关状态实例 120
5.4 输入/输出端口在智能车系统中的应用 121
5.4.1 键盘接口设计 121
5.4.2 LED显示接口设计 122
5.4.3 LCD显示接口设计 124
第6章 MC9S12系列中断系统 129
6.1 MC9S12系列中断系统概述 129
6.1.1 复位 130
6.1.2 中断 131
6.2 MC9S12系列中断优先级 132
6.3 MC9S12系列中断程序应用实例 135
第7章 MC9S12XS系列脉宽调制模块及其应用实例 139
7.1 PWM模块概述 139
7.2 PWM模块结构组成和特点 139
7.3 PWM模块寄存器及设置 140
7.3.1 PWM使能寄存器(PWME) 141
7.3.2 PWM极性寄存器(PWMPOL) 142
7.3.3 PWM时钟选择寄存器(PWMCLK) 143
7.3.4 PWM预分频时钟选择寄存器(PWMPRCLK) 144
7.3.5 PWM居中对齐使能寄存器(PWMCAE) 145
7.3.6 PWM控制寄存器(PWMCTL) 146
7.3.7 PWM比例因子A寄存器(PWMSCLA) 148
7.3.8 PWM比例因子B寄存器(PWMSCLB) 148
7.3.9 PWM通道计数器(PWMCNT) 149
7.3.10 PWM通道周期寄存器(PWMPER) 149
7.3.11 PWM通道占空比寄存器(PWMDTY) 150
7.3.12 PWM关闭寄存器(PWMSDN) 152
7.4 PWM模块应用实例 153
7.5 PWM模块在智能车系统中的应用 155
7.5.1 应用PWM模块控制直流电动机 155
7.5.2 应用PWM模块控制伺服电动机 157
第8章 MC9S12XS128模/数转换模块及其应用实例 159
8.1 ATD模块概述 159
8.2 ATD模块结构组成和特点 159
8.3 ATD模块寄存器及设置 161
8.3.1 ATD控制寄存器0(ATDCTL0) 161
8.3.2 ATD控制寄存器1(ATDCTL1) 162
8.3.3 ATD控制寄存器2(ATDCTL2) 164
8.3.4 ATD控制寄存器3(ATDCTL3) 165
8.3.5 ATD控制寄存器4(ATDCTL4) 167
8.3.6 ATD控制寄存器5(ATDCTL5) 167
8.3.7 ATD状态寄存器0(ATDSTAT0) 169
8.3.8 ATD比较使能寄存器(ATDCMPE) 170
8.3.9 ATD状态寄存器2(ATDSTAT2) 170
8.3.10 ATD输入使能寄存器(ATDDIEN) 171
8.3.11 ATD比较大于寄存器(ATDCMPHT) 171
8.3.12 ATD转换结果寄存器(ATDDRn) 172
8.4 ATD模块应用实例 173
8.5 ATD模块在智能车系统中的应用 174
8.5.1 ATD模块在基于光电管路径识别方案中的应用 174
8.5.2 ATD模块在基于摄像头路径识别方案中的应用 176
第9章 MC9S12XS128定时器模块及其应用实例 180
9.1 TIM模块概述 181
9.2 TIM模块结构和工作原理 181
9.2.1 TIM模块结构 181
9.2.2 TIM模块工作原理 181
9.2.3 TIM模块寄存器 184
9.2.4 TIM模块中断系统 186
9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 187
9.3.1 自由运行主定时器与时钟频率设置 187
9.3.2 TIM模块基本寄存器及设置 188
9.4 TIM模块的输入捕捉功能及寄存器设置 191
9.4.1 TIM模块输入捕捉功能 192
9.4.2 与输入捕捉功能相关的寄存器及设置 192
9.5 TIM模块的输出比较功能及寄存器设置 195
9.5.1 TIM模块输出比较功能 195
9.5.2 与输出比较功能相关的寄存器及设置 196
9.6 TIM模块的脉冲累加器功能及寄存器设置 199
9.6.1 TIM模块脉冲累加器功能 199
9.6.2 与脉冲累加器相关的寄存器及设置 201
9.7 TIM模块应用实例 203
9.7.1 输入捕捉功能应用实例 203
9.7.2 输出比较功能应用实例 205
9.7.3 脉冲累加器功能应用实例 211
9.8 TIM模块在智能车系统中的应用 215
9.8.1 TIM模块输入捕捉功能在智能车系统中的应用 215
9.8.2 TIM模块脉冲累加器功能在智能车系统中的应用 215
第10章 MC9S12XS128周期性中断定时器模块及其应用实例 217
10.1 PIT模块概述 217
10.2 PIT模块结构和工作原理 217
10.2.1 PIT模块结构 217
10.2.2 PIT模块工作原理 218
10.3 PIT模块寄存器及设置 220
10.3.1 PIT控制和强制装载微定时寄存器(PITCFLMT) 221
10.3.2 PIT强制装载定时寄存器(PITFLT) 221
10.3.3 PIT通道使能寄存器(PITCE) 222
10.3.4 PIT复用寄存器(PITMUX) 222
10.3.5 PIT中断使能寄存器(PITINTE) 222
10.3.6 PIT超时标志寄存器(PITTF) 223
10.3.7 PIT微定时装载寄存器0和1(PITMTLD0/1) 223
10.3.8 PIT装载寄存器0~3(PITLD0~3) 223
10.3.9 PIT计数寄存器0~3(PITCNT0~3) 224
10.4 PIT模块应用实例 224
10.5 PIT模块在智能车系统中的应用 226
第11章 MC9S12XS系列串行通信接口模块及其应用实例 234
11.1 SCI模块概述 234
11.2 SCI模块结构组成和特点 234
11.3 SCI模块寄存器 235
11.3.1 SCI波特率寄存器(SCIBDH,SCIBDL) 236
11.3.2 SCI控制寄存器1(SCICR1) 237
11.3.3 SCI可选状态寄存器1(SCIASR1) 238
11.3.4 SCI可选控制寄存器1(SCIACR1) 239
11.3.5 SCI可选控制寄存器2(SCIACR2) 240
11.3.6 SCI控制寄存器2(SCICR2) 240
11.3.7 SCI状态寄存器1(SCISR1) 241
11.3.8 SCI状态寄存器2(SCISR2) 243
11.3.9 SCI数据寄存器(SCIDRH,SCIDRL) 244
11.4 SCI模块应用实例 244
11.5 SCI模块在智能车系统中的应用 248
第12章 MC9S12系列SPI和I2C模块及其应用实例 251
12.1 SPI模块 251
12.2 SPI模块结构组成和特点 252
12.3 SPI模块寄存器及设置 253
12.3.1 SPI控制寄存器1(SPICR1) 253
12.3.2 SPI控制寄存器2(SPICR2) 255
12.3.3 SPI波特率寄存器(SPIBR) 256
12.3.4 SPI状态寄存器(SPISR) 258
12.3.5 SPI数据寄存器(SPIDR:SPIDRH,SPIDRL) 260
12.4 SPI模块应用实例 260
12.5 I2C总线接口 262
12.5.1 I2C总线概述 262
12.5.2 I2C总线工作原理 263
12.6 I2C模块结构组成和特点 265
12.7 I2C模块寄存器及设置 266
12.7.1 I2C总线地址寄存器(IBAD) 267
12.7.2 I2C总线分频寄存器(IBFD) 267
12.7.3 I2C总线控制寄存器(IBCR) 268
12.7.4 I2C总线状态寄存器(IBSR) 269
12.7.5 I2C总线数据输入/输出寄存器(IBDR) 271
12.8 I2C模块在智能车系统中的应用 271
第13章 综合应用实例 275
13.1 概述 275
13.2 综合应用实例1 275
13.2.1 系统组成 275
13.2.2 A/D输入接口 276
13.2.3 显示接口 276
13.2.4 通信接口 277
13.2.5 应用软件设计 277
13.2.6 软件流程图 281
13.3 综合应用实例2 283
13.3.1 系统组成 283
13.3.2 MircoSD卡接口 283
13.3.3 通信接口 284
13.3.4 SD卡工作电源 284
13.3.5 应用软件设计 284
13.3.6 MircoSD卡应用软件设计 286
13.3.7 软件流程图 288
13.4 综合应用实例3 290
13.4.1 系统组成 291
13.4.2 A/D输入接口 291
13.4.3 显示接口 291
13.4.4 直流电动机驱动接口 291
13.4.5 测速输入信号调理电路 293
13.4.6 伺服电动机驱动接口 293
13.4.7 应用软件设计 293
13.4.8 软件流程图 295
13.5 综合应用实例4 297
13.5.1 系统组成 297
13.5.2 起始线信号检测方法 297
13.5.3 应用软件设计 299
13.5.4 软件流程图 300
附录A S12汇编指令系统汇总表 303
附录B S12汇编指令系统汇总表解释说明 317
附录C S12汇编指令机器码汇总表 322
附录D S12X汇编指令机器码汇总表解释说明 326
附录E HS12实验开发平台 327
参考文献 331