目 录 1
第1章PIC18Fxxx单片机概述 1
第2章振荡器结构 12
2.1振荡器类型 12
2.2晶体/陶瓷振荡器方式 12
2.3 RC振荡器 14
2.4外部时钟输入 14
2.5 HS4(PLL)方式 14
2.6振荡器转换特性 15
2.6.2振荡器的转换 16
2.6.1系统时钟的转换 16
2.7片内振荡器休眠模式的影响 18
2.8上电延时 18
第3章复位 19
3.1上电复位 28
3.2 MCLR 28
3.3上电延时定时器 28
3.4起振定时器 29
3.5 PLL锁相延时 29
3.6掉电锁定复位 . 29
3.7上电复位延时时序图 29
4.1程序存储器结构 32
第4章存储器结构 32
4.2返回地址堆栈 33
4.2.1堆栈顶层的访问 33
4.2.2堆栈指针的返回 33
4.2.3压栈和弹栈指令 34
4.2.4堆栈满/下溢出复位 34
4.3快速寄存器堆栈 35
4.4 PCL,PCLATH和PCLATU 35
4.5时钟划分/指令周期 35
4.7程序存储器中的指令 36
4.6指令流程/流水线 36
4.8查询表 38
4.8.1计算后执行GOTO指令 38
4.8.2读表和写表 38
4.9数据存储器结构 38
4.9.1通用寄存器 40
4.9.2特殊功能寄存器 40
4.10全局存储区 50
4.11存储区选择寄存器 50
4.12间接寻址、INDF和FSR寄存器 51
4.13状态寄存器STATUS 52
4.14复位控制寄存器RCON 54
第5章数据存储器EEPROM 55
5.1 EEADR寄存器 55
5.2 EECON1和EECON2寄存器 55
5.3读数据存储器EEPROM 56
5.4写数据存储器EEPROM 57
5.5写校验 58
5.6误写操作保护 58
5.7代码保护情况下的操作 58
5.8数据存储器EEPROM的使用 58
6.1读表和写表操作 60
第6章程序存储器FLASH 60
6.2控制寄存器 61
6.2.1 EECON1和EECON2寄存器 61
6.2.2表锁存寄存器TABLAT 61
6.2.3表指针寄存器TBLPTR 62
6.2.4表指针边界 62
6.3读程序存储器FLASH 63
6.4擦除程序存储器FLASH 63
6.5写程序存储器FLASH 65
6.5.1程序存储器写序列 65
6.6代码保护情况下的程序存储器操作 68
6.5.4误写操作保护 68
6.5.3不可预料的写操作意外中止 68
6.5.2写校验 68
第7章8×8硬件乘法器 69
7.1 引 言 69
7.2操作 69
第8章 中 断 73
8.1 中断控制寄存器INTCON 74
8.2 PIR寄存器组 77
8.3 PIE寄存器组 80
8.4 IPR寄存器组 82
8.5 RCON寄存器 84
8.6 INT中断 85
8.7 TMR0中断 85
8.8 PORTB端口电平变化中断 85
8.9中断现场保护 85
8.10 用PORTB端口电平变化中断构成的键盘接口硬件电路 86
8.11用PORTB端口电平变化中断构成键盘的汇编语言编程 87
8.12 PORTB端口电平变化中断构成的键盘C语言编程 91
第9章I/O端口 94
9.1 PORTA,TRISA和LATA寄存器 94
9.2 PORTB,TRISB和LATB寄存器 96
9.3 PORTC,TRISC和LATC寄存器 100
9.4 PORTD,TRISD和LATD寄存器 101
9.5 PORTE,TRISE和LATE寄存器 103
9.6开关量输入/输出汇编语言编程 105
9.7开关量输入/输出C语言编程 109
9.8 PORTD端口输出开关量汇编语言编程 111
9.9 PORTD端口输出开关量C语言编程 112
第10章并行从动端口 113
第11章定时器/计数器TMR0模块 115
11.1TMR0操作 116
11.4 16位方式的定时器读/写 117
11.2前分频器 117
11.3 TMR0中断 117
11.5用定时器TMR0构成秒表的汇编语言编程 118
11.6用定时器TMR0构成秒表的C语言编程 125
第12章定时器/计数器TMR1模块 130
12.1 TMR1操作 131
12.2 TMR1振荡器 132
12.3 TMR1中断 132
12.4用CCP触发输出来复位TMR1 132
12.5 TMR1 16位读/写方式 133
第13章定时器/计数器TMR2模块 134
13.1 TMR2操作 135
13.2TMR2中断 135
13.3 TMR2的输出 135
第14章定时器/计数器TMR3模块 137
14.1 TMR3操作 139
14.2TMR1振荡器 139
14.3 TMR3中断 139
14.4用CCP触发输出来复位TMR1 139
第15章捕捉/比较/PWM(CCP)模块 141
15.2捕捉工作方式 142
15.1 CCP1模块 142
15.2.1 CCP引脚设定 143
15.2.2TMR1/TMR3工作方式选择 143
15.2.3软件中断 143
15.2.4 CCP1前分频器 143
15.2.5 CAN通信信息的时间标记 144
15.3比较工作方式 144
15.3.1 CCP1引脚设定 145
15.3.2TMR1/TMR3工作方式选择 145
15.3.3软件中断方式 145
15.3.4特殊事件触发方式 145
15.4.1 PWM周期 146
15.4 PWM工作方式 146
15.4.2 PWM工作循环周期 147
15.4.3 PWM操作配置 147
15.5 PWM(CCP)模块接口硬件电路 148
15.6 PWM(CCP)模块汇编语言编程 148
15.7 PWM(CCP)模块C语言编程 152
第16章增强型捕捉/比较/PWM(ECCP)模块 154
16.1ECCP1模块 155
16.2捕捉工作方式 156
16.3比较工作方式 156
16.4标准PWM工作方式 157
16.5增强型PWM工作方式 158
16.5.1 PWM输出操作配置 159
16.5半桥输出方式 160
16.5.3全桥输出方式 161
16.5.4可编程死区延时 163
16.5.5系统执行 164
16.5.6 PWM启动条件 164
16.5.7输出极性配置 164
16.5.8 PWM操作的配置 164
16.6增强型CCP的自动关闭功能 165
17.3 SPI方式 167
17.2控制寄存器组 167
第17章主同步串行端口 167
17.1主同步串行模块概述 167
17.3.1寄存器组 168
17.3.2运行 170
17.3.3使能SPI 171
17.3.4典型连接 171
17.3.5主控方式 172
17.3.6从动方式 174
17.3.10总线工作方式的兼容性 175
17.3.9复位的影响 175
17.3.8休眠方式 175
17.3.7同步从动方式选择 175
17.4 I2C模式 176
17.4.1 I2C的寄存器组 177
17.4.2操作方式 180
17.4.3从动方式 181
17.4.4时钟延伸 187
17.4.5支持通用地址寻址 190
17.4.6主控方式 191
17.4.7波特率发生器 193
17.4.8 I2C主控工作方式时的启动状态时序图 194
17.4.9 I2C主控方式时的重启动状态时序图 195
17.4.10 I2C主控发送方式 196
17.4.11 I2C主控接收方式 197
17.4.12应答信号位时序图 198
17.4.13停止状态位时序图 198
1 7.4.14休眠工作方式 199
17.4.15 复位影响 199
17.4.16多主机方式 199
17.4.17多主机通信、总线冲突和总线仲裁 200
17.5 SPI总线应用的开关量输入接口硬件电路 204
17.6 SPI总线应用开关量输入汇编语言编程 205
17.7 SPI总线应用开关量输入C语言编程 206
17.8 SPI总线应用的开关量输出接口硬件电路 208
17.9 SPI总线应用开关量输出汇编语言编程 208
1 7.10 SPI总线应用的开关量输出C语言编程 210
第18章可寻址的通用同步/异步收发器 212
18.1 USART波特率发生器 214
18.2 USART的异步工作方式 218
18.2.1 USART异步发送器 218
18.2.2 USART异步接收器 220
18.2.3带地址检测的9位异步接收方式 221
18.3.1 USART同步主控发送 222
18.3 USART同步主控方式 222
18.3.2 USART同步主控接收 224
18.4 USART同步从动方式 225
18.4.1 USART同步从动发送 225
18.4.2 USART同步从动接收 226
18USART接口硬件电路 227
18.6USART汇编语言编程 228
18.7USARTC语言编程 229
第19章CAN控制器模块 231
19.1概述 231
19.1.1 CAN模块概述 231
19.1.2发送/接收缓冲器 232
19.2 CAN控制寄存器 233
19.2.1 CAN控制与状态寄存器 233
19.2.2 CAN发送缓冲寄存器 237
19.2.3 CAN接收缓冲寄存器 240
19.2.4 CAN波特率寄存器 245
19.2.5 CAN模块输入/输出控制寄存器 247
1 9.2.6 CAN中断寄存器 248
19.3 CAN工作方式 251
19.3.1 配置方式 251
19.3.2关闭方式 251
19.4 CAN信息发送 252
19.3.6错误识别方式 252
19.4.1发送缓冲器 252
19.3.3正常工作方式 252
19.3.5 自检方式 252
19.3.4监听方式 252
19.4.2发送优先级 253
19.4.3启动发送 253
19.4.4中止发送 253
19.5信息接收 254
19.5.1信息接收缓冲器 254
19.5.2接收缓冲器 255
19.5.3接收优先级 255
19.5.4时间标记 256
19.6信息接收过滤器与屏蔽器 257
19.7波特率设定 258
19.7.1时间当量 259
19.7.2同步时间段 260
19.7.3传输时间段 260
19.7.4相位缓冲时间段 260
19.7.5采样点 260
19.7.6信息处理时间 260
19.8.1硬同步 261
19.8.2重同步 261
19.8 同 步 261
19.8.3同步规则 262
19.9时间段编程 262
19.10振荡器误差 262
19.11位时间配置寄存器 262
19.12.1 CRC错误 263
19.12.4位错误 263
19.12.3格式错误 263
19.12.2应答错误 263
19.12错误检测 263
19.11.3 BRGCON3 263
19.11.2 BRGCON2 263
19.11.1 BRGCON1 263
19.12.5填充位错误 264
19.12.6错误状态 264
19.12.7错误方式和错误计数器 264
19.13 CAN中断 265
19.13.1中断编码位 265
19.13.7 中断应答 266
19.13.6错误中断 266
19.13.5总线活动唤醒中断 266
19.13.4信息错误中断 266
19.13.3接收中断 266
19.13.2发送中断 266
19.14 CAN总线应用接口硬件电路 267
19.15 CAN总线应用汇编语言编程 267
19.16 CAN总线应用C语言编程 271
第20章10位A/D转换器模块 274
20.1对A/D数据采集的要求 278
20.2 A/D转换时钟的选择 279
20.3模拟通道输入引脚的配置 280
20.4 A/D转换 280
20.5 ECCP触发器的使用 281
20.6 A/D转换器应用接口硬件电路 282
20.7 A/D转换器应用的汇编语言编程 283
20.8 A/D转换器应用的C语言编程 288
第21章比较模块 290
21.1比较器的配置 292
21.2比较器的工作 292
21.3比较器的参考 292
21.3.1外部参考信号 292
21.3.2内部参考信号 292
21.4 比较器的响应时间 292
21.6 比较器的中断 293
21.5 比较器的输出 293
21.7休眠期间比较器的运行 294
21.8复位的影响 294
21.9模拟输入接入的注意事项 294
第22章 比较器参考电压源 296
22.1 比较器参考电压源的配置 296
22.2参考电压源的准确度和误差 297
22.3休眠期间的运行 297
22.4复位的影响 297
22.5引脚对外连接的注意事项 297
第23章低电压检测 299
23.1控制寄存器 300
23.2 工作 301
23.2.1参考电压设置点 302
23.2.2 电流消耗 302
23.3休眠期间的工作 302
23.4复位的影响 302
第24章CPU的特殊功能 303
24.1配置位 303
24.2监视定时器(WDT) 309
24.2.1 WDTCON控制寄存器 309
24.3休眠方式 310
24.2.2 WDT后分频器 310
24.3.1从休眠状态到唤醒状态 311
24.3.2 中断唤醒应用 311
24.4程序校验和代码保护 312
24.4.1程序存储器代码保护 313
24.4.2数据存储器EEPROM的代码保护 315
24.4.3系统配置寄存器的保护 315
24.5标识码存储单元 315
24.6在线串行编程 315
24.7在线调试器 315
24.8低电压ICSP编程 315
24.9程序监视定时器汇编语言编程 316
24.10程序监视定时器C语言编程 317
24.11休眠唤醒功能汇编语言编程 318
24.12休眠唤醒功能C语言编程 320
第25章指令系统概述 321
25.1读—修改—写操作 327
25.2指令说明 327
第26章PIC18Fxx8单片机实验板介绍 383
26.1模板功能介绍 383
26.1.4 液晶显示器(LCD)显示 384
26.1.3 LED显示 384
26.1.2键盘 384
26.1.1 A/D转换功能 384
26.1.5 8路开关量输入和8路开关量输出 385
26.1.6 D/A输出 385
26.1.7 串行通信接口SCI 385
26.1.8主/从单片机多机并行通信 385
26.1.9捕捉方式和PWM方式 385
26.1.12其他功能 386
26.2实验板的硬件布局 386
26.1.11时钟信号 386
26.1.10多种复位方式 386
26.3测试点及主要器件介绍 387
第27章液晶显示器应用编程 390
27.1 PIC18Fxx8与MCG12864A8-3的硬件接口电路 390
27.1.1 MCG12864A8-3的结构特点 390
27.1.2 MCG12864A8-3模块的引脚说明 390
27.1.3 PIC18F458与MGLS12864模块的接口电路 391
27.2液晶显示程序清单 392
27.2.1液晶显示器汇编语言接口程序 392
27.2.2液晶显示器C语言接口程序 407
附 录 416