《新编电子技术讲座 活学活用PIC单片机C语言编程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(日)中尾真治著;卢伯英译
  • 出 版 社:北京:科学出版社
  • 出版年份:2012
  • ISBN:9787030339621
  • 页数:285 页
图书介绍:本书根据现代电子技术的各个环节,本系列书主要包括电子制作、电路仿真设计、单片机编程与开发、嵌入式系统设计、数字电路系统设计、机器人制作等,分别适合各个技术层面的读者。

1章 C语言入门 1

1.1 C语言的基本知识 1

1.1.1程序的组成要素 1

1.1.2源文件 3

1.1.3头文件 3

1.1.4预处理程序 3

1.1.5 main函数 4

1.1.6汇编程序 4

1.2常量、数据类型和变量 5

1.2.1转义字符 6

1.2.2枚举常数 8

1.2.3数据类型 8

1.2.4变量声明 10

1.2.5 Const 10

1.2.6 Volatile 10

1.3数组和指针 11

1.3.1数组 11

1.3.2数组与字符串 12

1.3.3指针 13

1.3.4指针和字符串常数 14

1.3.5指针和数组 15

1.4结构体和共用体 16

1.4.1结构体 16

1.4.2共用体 18

1.5运算 20

1.5.1简单赋值运算 20

1.5.2算术运算 21

1.5.3自增和自减 22

1.5.4关系运算 22

1.5.5位操作运算 24

1.5.6复合赋值运算 24

1.5.7取地址运算 26

1.5.8代入不同的数据类型变量中 26

1.5.9不同数据型变量的一同计算 26

1.5.10运算的优先级和结合规则 27

1.6分支语句与循环语句 29

1.6.1基于关系真假的分支语句 29

1.6.2基于计算结果的多分支语句 30

1.6.3边计算边循环 31

1.6.4如果关系为真则进行循环 33

1.6.5无限循环 35

1.7函数 36

1.7.1函数的结构 36

1.7.2函数返回值数据类型 36

1.7.3函数的参数 37

1.7.4函数的原型声明 37

1.7.5使用函数 38

1.7.6实际参数与形式参数 38

1.7.7 main函数和中断函数 42

1.7.8函数的嵌套 42

1.7.9不使用递推调用 44

1.7.10库函数 44

1.8作用域 48

1.8.1局部变量和自动变量 48

1.8.2全局变量 49

1.8.3 static 50

1.8.4作用域 51

1.8.5 persistent 51

1.8.6在汇编程序中使用变量 52

2章 PIC单片机的基本知识 53

2.1 PIC单片机的基本知识 53

2.1.1 8位PIC单片机 53

2.1.2引脚位置 53

2.1.3工作电压范围 56

2.1.4 4个时钟脉冲对应1个周期 56

2.1.5 PIC12F683的引脚配置 56

2.2配置位 57

2.2.1执行程序前的设定 57

2.2.2配置位 57

2.2.3代码保护与校验 59

2.2.4代码保护的解除 60

2.2.5代码未被保护的领域 60

2.2.6配置位的书写方法 60

2.2.7 LD存储单元的书写方法 61

2.2.8编程器的操作顺序 62

2.3振荡电路 62

2.3.1构建系统时钟 62

2.3.2振荡电路的种类 62

2.3.3使用内部振荡器 62

2.3.4使用外部加装的振子 65

2.3.5使用外部加装的振荡器 66

2.3.6用外部加装的R和C制作 66

2.3.7振荡电路的转换 66

2.3.8 2速启动模式 67

2.3.9使用故障保险时钟监视器 67

2.4复位 68

2.4.1复位后的状态 68

2.4.2不使用外部复位的场合 68

2.4.3接通电源时的复位工作情况 69

2.4.4加电复位 69

2.4.5加电定时器 70

2.4.6振荡器启动定时器 70

2.4.7电压过低复位 70

2.4.8监视定时器复位 71

2.4.9 MCLR复位 71

2.4.10复位状态位 71

2.5存储器 73

2.5.1存储器的类型 73

2.5.2程序存储器 73

2.5.3能写入程序存储器中的次数 73

2.5.4程序存储器中内容的读出 73

2.5.5数据存储器 73

2.5.6 PIC12F683的情况 73

2.6中断 74

2.6.1在中断中执行 74

2.6.2选择中断事件 74

2.6.3 GIE位 78

2.6.4中断允许位 78

2.6.5 PEIE位 78

2.6.6中断标志位 78

2.6.7使用中断设定 79

2.6.8中断函数 80

2.6.9暂时不进行中断处理的场合 80

2.6.10 PIC12F683的场合 82

2.7监视定时器 84

2.7.1超时和复位 84

2.7.2使用31kHz的内部振荡器 84

2.7.3监视定时器的寄存器 85

2.7.4 16位预换算器 86

2.7.5与定时器0共用的预换算器 86

2.7.6监视定时器的超时时间 87

2.7.7使用监视定时器的设定 87

2.7.8把监视定时器的内容设置成0 88

2.7.9超时时的动作 89

2.7.10 TO位 89

2.7.11 PIC12F683的场合 90

2.8休眠方式 91

2.8.1什么也不做时节省电力 91

2.8.2使PIC单片机进入休眠方式 91

2.8.3即使休眠方式中也不能停止的功能 91

2.8.4从休眠方式中苏醒的功能 91

2.8.5利用中断从休眠方式中苏醒的情况 92

2.8.6在实施进入休眠方式之前设置0 92

2.8.7在从休眠方式苏醒之后执行程序地址 92

2.8.8从休眠方式中苏醒时花费的时间 92

2.8.9使用中断从休眠方式中苏醒的例子 93

2.8.10复位状态位 93

3章 PIC单片机的外围功能 97

3.1 I/O端口 97

3.1.1输入输出数字数据 97

3.1.2 I/O端口的寄存器 97

3.1.3 I/O引脚的输入电压范围 100

3.1.4输入缓冲器的种类 100

3.1.5VIL和VIH 101

3.1.6输出电路 102

3.1.7灌电流和拉电流 102

3.1.8 I/O引脚的输入输出设定 102

3.1.9模拟输入模式和数字I/O模式 102

3.1.10构成数字I/O模式的方法 103

3.1.11 I/O引脚的输入输出设定举例 103

3.1.12从外部电路输入数据 104

3.1.13从外部电路输入数据举例 104

3.1.14把数据输出到外部电路 105

3.1.15把数据输出到外部电路举例 105

3.1.16 I/O引脚的输入输出设定和输出数据的覆盖 108

3.1.17进入休眠方式后怎样变化? 108

3.1.18空闲引脚的处理 108

3.1.19使用I/O端口举例 108

3.1.20 PIC12F683的场合 111

3.2弱上拉电路 113

3.2.1上拉输入信号 113

3.2.2弱上拉电路的寄存器 113

3.2.3设定使用弱上拉电路 114

3.2.4使用弱上拉电路设定举例 114

3.2.5外附加电阻的方法是一种好方案 115

3.2.6进入休眠方式时有什么变化吗? 115

3.2.7使用弱上拉电路举例 115

3.2.8 PIC12F683的场合 118

3.3 I/O端口输入电平变化检测功能 119

3.3.1能判明输入数据是否发生了变化 119

3.3.2 I/O端口输入电平变化检测功能的寄存器 119

3.3.3怎样做才能检测出变化? 120

3.3.4能检测出变化的最小脉冲幅度 121

3.3.5使用I/O端口输入电平变化检测功能的设定 121

3.3.6把RAIF位的内容设置成0 121

3.3.7设定使用I/O端口输入电平变化检测功能举例 122

3.3.8不能检测变化的定时 122

3.3.9 I/O端口输入电平变化中断 123

3.3.10当进入休眠方式时会怎样变化? 124

3.3.11超低功率唤醒电路 124

3.3.12使用I/O端口输入电平变化检测功能举例 126

3.3.13 PIC12F683的场合 129

3.4 INT引脚输入边沿检测功能 130

3.4.1可以检测出输入信号的边沿 130

3.4.2 INT引脚输入边沿检测功能的寄存器 130

3.4.3使用INT引脚输入边沿检测功能设定 130

3.4.4把INTF位的内容设置成0 130

3.4.5使用INT引脚输入边沿检测功能设定举例 130

3.4.6 INT引脚输入边沿中断 131

3.4.7当进入休眠方式时怎样变化? 132

3.4.8使用INT引脚输入边沿检测功能举例 133

3.5定时器0 135

3.5.1附有预换算器的8位定时器 135

3.5.2定时器0的寄存器 136

3.5.3选择输入时钟 136

3.5.4把外部时钟设置成输入时钟的场合 136

3.5.5定时器0的预换算器 136

3.5.6对TOIF位和TMRO寄存器的内容进行初始化 137

3.5.7使用定时器0设定举例 137

3.5.8读出定时器0的内容 137

3.5.9把数据写入定时器0中 138

3.5.10在定时器中使用预换算器场合中的注意事项 138

3.5.11定时器0溢出中断 138

3.5.12当进入休眠方式时,会如何变化? 139

3.5.13当进行复位时,会如何变化? 139

3.5.14使用定时器0举例 140

3.6定时器1 142

3.6.1附带有预换算器的16位定时器 142

3.6.2定时器1的寄存器 142

3.6.3选择输入时钟 143

3.6.4设置外部时钟为输入时钟的场合 144

3.6.5使外部时钟与系统时钟同步的场合 144

3.6.6使外部时钟与系统时钟不同步的场合 144

3.6.7最初是从外部时钟信号下降后开始递增过程 144

3.6.8定时器1的预换算器 145

3.6.9使定时器1工作 145

3.6.10利用外部信号终止定时器1的工作 145

3.6.11对TMR1IF位或TMR1 H寄存器和TMR1L寄存器的内容进行初始化 145

3.6.12使用定时器1设定举例 145

3.6.13读取定时器1的内容 147

3.6.14把数据写进定时器1中 147

3.6.15定时器1溢出中断 147

3.6.16若进入休眠方式会如何变化? 148

3.6.17当实施复位时,会如何变化? 149

3.6.18使用定时器1举例 149

3.7比较器 152

3.7.1比较两个模拟信号 152

3.7.2比较器的寄存器 152

3.7.3模拟输入信号的源阻抗 154

3.7.4共模输入电压范围 154

3.7.5选择比较器的输入输出构成方案 154

3.7.6比较器的模拟输入引脚设定 154

3.7.7比较器的运行 154

3.7.8输入偏移电压 156

3.7.9响应时间 157

3.7.10读出比较器的输出 157

3.7.11把比较器的输出从引脚输出 157

3.7.12使用比较器设定举例 157

3.7.13检测比较器的输出变化 158

3.7.14把C1IF位或C2IF位的内容设置成0 158

3.7.15不能检测变化的定时 158

3.7.16比较器输出变化中断 160

3.7.17使比较器的输出变化与定时器1的输入时钟同步 161

3.7.18利用比较器的输出终止定时器1工作 161

3.7.19若进入休眠方式会怎样变化? 161

3.7.20若进行复位时会怎样变化? 161

3.7.21使用比较器举例 161

3.7.22 PIC12F682的场合 165

3.8比较器参考值 167

3.8.1构建比较器用的参考电压 167

3.8.2比较器参考值的寄存器 167

3.8.3比较器参考电压的运作 168

3.8.4比较器参考电压的输出电压 168

3.8.5输出电压的整定时间 169

3.8.6输出电压的精度 169

3.8.7使用比较器参考值设定举例 169

3.8.8若进入休眠方式会怎样变化? 170

3.8.9当进行复位时,会如何变化? 170

3.8.10使用比较器参考值举例 170

3.9 EEPROM存储器 174

3.9.1即使断开电源也能保存数据 174

3.9.2 EEPROM存储器的寄存器 175

3.9.3 EEPROM存储器或程序存储器的地址 176

3.9.4 EEPROM存储器或程序存储器的初值 176

3.9.5读出EEPROM存储器或程序存储器的内容 177

3.9.6把数据写入EEPROM存储器 178

3.9.7未发生中断期间 179

3.9.8写入中需要花费的时间 179

3.9.9在写入过程中可以进行EEPROM存储器以外的操作 179

3.9.10在EEPROM存储器中能进行写入的次数 180

3.9.11写入错误 181

3.9.12 EEPROM存储器写入结束中断 181

3.9.13把EEIF位的内容设置成0 182

3.9.14即使在休眠方式中,也能写入 182

3.9.15使用EEPROM存储器举例 182

3.9.16 PIC12F683的场合 185

3.10 EUSART 186

3.10.1串行通信 186

3.10.2 EUSART的寄存器 186

3.10.3传送格式 190

3.10.4数据位长度 191

3.10.5奇偶性 191

3.10.6停止位 192

3.10.7数据流控制 192

3.10.8传送速度 192

3.10.9发送接收引脚 194

3.10.10发送 194

3.10.11接收 197

3.10.12成帧误差 200

3.10.13超限误差 201

3.10.14 EUSART发送中断 202

3.10.15 EUSART接收中断 204

3.10.16使用EUSART举例 205

3.11 A/D转换器 210

3.11.1用数字数据表示模拟输入电压 210

3.11.2 A/D转换器的寄存器 210

3.11.3模拟输入信号的源阻抗 213

3.11.4模拟输入电压范围 213

3.11.5 A/D转换器的模拟输入引脚设定 213

3.11.6选择进行A/D变换的模拟输入引脚 214

3.11.7参考电压 214

3.11.8 A/D变换时钟 214

3.11.9把FRc设置成A/D变换时钟的场合 214

3.11.10把FRC以外的时钟设置成A/D变换时钟的场合 215

3.11.11 A/D变换结果数据的右对齐和左对齐 215

3.11.12向保持电容器充电 215

3.11.13开始执行A/D变换 216

3.11.14 A/D变换结束 216

3.11.15读取A/D变换结果数据 216

3.11.16 A/D变换的误差 216

3.11.17进行A/D变换花费的时间 216

3.11.18把ADIF位的内容设置成0 217

3.11.19 A/D转换器使用举例 217

3.11.20 A/D变换结束中断 218

3.11.21即使在休眠方式中,也能进行A/D变换 220

3.11.22 A/D转换器使用举例 221

3.11.23 PIC12F683的场合 225

4章 开发工具 227

4.1在个人计算机中安装 227

4.1.1开发工具软件 227

4.1.2获取方法 227

4.1.3安装方法 229

4.1.4 MPLAB IDE的画面构成 230

4.2编写程序 230

4.2.1头文件 230

4.2.2源文件 230

4.2.3编辑器 230

4.2.4制作新文件等 230

4.2.5编辑器选项 231

4.3制定项目 232

4.3.1制作新项目 232

4.3.2表示使用中的文件 234

4.3.3项目的编辑和保存等 235

4.3.4工作区 235

4.4建立项目 236

4.4.1建立项目 236

4.4.2出现错误的场合 236

4.5用模拟器调试 237

4.5.1模拟器的启动 237

4.5.2寄存器的表示 238

4.5.3通过选择变量或寄存器的表示 238

4.5.4 EEPROM存储器的表示 239

4.5.5寄存器、变量、EEPROM存储器的内容变更 240

4.5.6程序的执行 240

4.5.7断点 241

4.5.8停表(秒表) 242

4.5.9外部数据的输入 243

4.6用编程器写入 244

4.6.1编程器 244

4.6.2配置位和ID位置的表示 246

4.6.3 PICkit 3的启动 246

4.6.4程序的写入 247

5章 PIC单片机的应用电路 251

5.1 USB 251

5.1.1与个人计算机的USB端口进行通信 251

5.1.2电源 252

5.1.3引脚 252

5.1.4转移设定 252

5.1.5 VCP驱动器 253

5.1.6串行通信应用 253

5.1.7向个人计算机发送信息 253

5.2 LCD 256

5.2.1表示字符 256

5.2.2电源 256

5.2.3引脚 256

5.2.4字符的表示位置 257

5.2.5能表示的字符 258

5.2.6把信息表示于LCD中 259

5.3温度 265

5.3.1测量温度 265

5.3.2形成表示温度的模拟电压 265

5.3.3把室温传送到个人计算机 265

5.4时间 270

5.4.1时钟用晶体振子 270

5.4.2用由晶体振子作成的系统时钟进行工作 271

5.4.3计量时间 271

5.5声音 278

5.5.1把电信号变成声音 278

5.5.2哆来咪的频率 278

5.5.3用PIC单片机形成声音 279

参考文献 285