第1章AVR单片机硬件结构和运行原理 3
1.1 AVR单片机的内部结构 3
目录 3
1.2存储器组织 5
1.3定时器/计数器 9
1.4 AT90S8515/8535单片机的I/O口 23
1.5 中断系统 26
1.6复位系统 34
1.7 AT90S8535单片机片内模数转换器 36
1.8 同步串行口SPI 40
1.9异步串行口UART 46
1.10模拟比较器 53
1.11 看门狗 55
1.12 EEPROM的读/写 58
1.13休眠方式 60
2.1 AVR单片机汇编器编程规定 62
2.1.1 伪指令 62
第2章AVR单片机指令系统 62
2.1.2表达式 65
2.2操作数及指令所涉及的对象 67
2.2.1状态寄存器SREG 67
2.2.2执行指令对标志位的影响 68
2.2.3操作数寄存器和操作数 69
2.2.4堆栈 69
2.3寻址方式 69
2.4算术和逻辑运算指令 72
2.4.1 加法指令 73
2.4.2减法指令 75
2.4.3取反指令 77
2.4.4取补指令 77
2.4.5 比较指令 77
2.4.6逻辑与指令 78
2.4.7逻辑或指令 79
2.4.8逻辑异或指令 80
2.5转移指令 80
2.5.2条件转移指令 82
2.5.1无条件转移指令 82
2.6数据传输指令 90
2.6.1直接寻址数据传输指令 92
2.6.2间接寻址传输指令 92
2.6.3 I/O口数据传送 94
2.6.4堆栈操作指令 94
2.7位操作及其他指令 95
2.7.1移位指令 97
2.7.2位操作指令 98
2.7.3修改标志位指令 98
2.7.4 I/O寄存器操作指令 100
2.7.5其他指令 101
第3章定点运算和定点数制转换 102
3.1软件DAA的实现方法 102
3.1.1 实现加法DAA功能子程序ADDAA和LSDAA的设计方法 103
3.1.2实现减法DAA功能子程序SUDAA的设计方法 104
3.2定点运算子程序 105
3.2.1 多字节压缩BCD码加法子程序ADBCD4和ADBCD 105
3.1.3实现右移DAA功能子程序RSDAA的设计方法 105
3.2.2多字节压缩BCD码减法子程序SUBCD4和SUBCD 106
3.2.3乘法子程序MUL16 107
3.2.4带舍入功能的乘法子程序MUL165 108
3.2.5整数除法子程序DIV16 108
3.2.6将最后余数舍入处理的除法子程序DIV165 109
3.2.7 商为规格化浮点数的除法子程序DIV16F 109
3.2.8 整数除法子程序DIV24和DIV40 109
3.2.9 整数开方子程序INTSQR 112
3.3定点数制转换子程序 114
第4章AVR实用程序 120
4.1查表(子)程序 120
4.1.1 线性内插计算子程序CHETA 120
4.1.2功能数据表格项目浏览、查找、修改程序 127
4.2 EEPROM读/写子程序 137
4.2.1 EEPROM读出子程序REEP 137
4.2.2 EEPROM写入子程序WEEP 138
4.3.1 时钟日历芯片OKI MSM 62×42×的读/写子程序 139
4.3输入输出子程序 139
4.3.2显示保护程序DSPRV 143
4.3.3键处理程序DEALKY 145
4.3.4计算键值——LED显示管理子程序DSPA和DSPY 148
4.3.5键入数字序列左移处理子程序LSDD8 155
4.3.6双键浏览、修改数据子程序KYIN2 158
4.3.7通用宽行打印机检测及打印子程序LPRNT 163
4.3.8步进电机控制程序 167
4.4精确定时及日历时钟走时程序(电脑钟) 175
4.4.1 MCU主频4 MHz用TCNT1精确定时程序 176
4.4.2 MCU主频8 MHz用TCNT1精确定时程序 178
4.4.3 MCU主频4 MHz用TCNT0精确定时程序 180
4.4.4 以外部时钟(32768 Hz)用T/C2定时直接产生秒号程序 181
4.4.5时钟日历走时子程序ACLK 182
4.5通信程序 188
4.5.1 异步串行口中断接收和发送ASCII码字串程序 188
4.5.2用外部中断配合查询接收串行ASCII码字串程序 193
4.5.3 以定时器和输出口配合用中断方式发送ASCII码字串程序 200
4.5.4以定时器和输入口配合用中断方式接收ASCII码字串程序 205
4.5.5主从多机通信程序 211
4.5.6智能型RS-232与RS-485标准转换程序 216
4.5.7 高速同步串行口通信程序 218
4.5.8模拟串行口配合74164驱动LED静态显示程序 221
4.6脉宽调制(PWM)输出 223
4.6.1 精确定时输出占空比1:1秒号方波 224
4.6.2 用比较匹配达到时控制输出口的方法输出PWM波形 225
4.6.3 用比较匹配达到时求反输出口的方法输出PWM波形 227
4.7.1 A/D转换和自运行的PWM输出综合程序 229
4.7模数转换 229
4.7.2利用模拟比较器进行A/D转换程序 232
4.8可靠性程序 235
4.8.1 滑动平均子程序SLPAV 235
4.8.2 带外部SRAM(不断电)的8515系统断电保护程序 240
4.8.3 AT90LS8535工作于掉电模式下小系统的断电保护程序 249
4.8.4 循环冗余检测子程序CRCST 255
4.8.5循环冗余检测演示程序 259
4.9.1 ASCII码数据综合处理子程序 261
4.9码制转换 261
4.9.2格雷(Gray)码与二进制数相互转换子程序 272
4.10嵌入式系统软件设计方法 274
4.11嵌入式系统常用优化设计方法 276
第5章AVR浮点程序库 282
5.1 AVR浮点程序库的特点 282
5.1.1 AVR浮点程序库的设计特点 282
5.1.2 AVR浮点程序库的优点 283
5.1.3 IEEE浮点数格式 285
5.1.4浮点数的规格化 287
5.1.5对阶 288
5.2基本运算子程序的设计方法 288
5.2.1 支持基本运算的辅助子程序 288
5.2.2浮点数比较大小子程序FPCP的设计方法 289
5.2.3浮点加法子程序FPAD的设计方法 290
5.2.4浮点减法子程序FPSU的设计方法 291
5.2.5浮点乘法子程序FPMU的设计方法 294
5.2.6浮点除法子程序FPDI的设计方法 297
5.2.7浮点数模拟手算开平方子程序FPSQ的设计方法 300
5.2.8浮点数牛顿迭代开平方子程序FSQR的设计方法 304
5.2.9基本运算子程序的演示程序 306
5.3函数计算子程序的设计方法 308
5.3.1 函数计算子程序的设计总则 309
5.3.2 函数计算子程序的辅助子程序 309
5.3.3用荷纳法计算多项式值子程序FPLN1和FPLN2 315
5.3.4对数函数LNX及其衍生函数子程序的设计方法 317
5.3.5指数函数EXP及其衍生函数子程序的设计方法 322
5.3.6正弦函数sin x及其衍生函数子程序的设计方法 327
5.3.7 反正弦函数ASINX及其衍生函数子程序的设计方法 330
5.3.8 函数计算子程序的演示程序 336
5.3.9阶乘子程序NP的设计方法 337
5.3.10浮点数制转换 338
5.4浮点程序应用实例 349
5.4.1拟合直线程序 349
5.4.2模数转换器AD7701的应用 354