本书针对Atmel公司的AVR系列单片机和ImageCraft公司的ICC AVR开发环境,详细地介绍了AT90LS8535的C语言程序设计。全书共有13章,其内容既涉及到了单片机的结构原理、指令系统、内部资源和外部功能扩展,又包含了单片机的编程工具--ICC AVRC编译器的数据类型、控制流、函数和指针等。
本书的特点是:深入浅出,从最基本的概念开始,循序渐进地讲解单片机的应用开发:列举了大量实例,使读者能从实际应用中掌握单片机的开发与应用技术。
本书适合作为从事单片机开发人员的参考用书。
本书特色
◆深入浅出。从最基本的概念开始,循序渐进地讲解单片机的应用开发
◆列举了大量实例,使读者能从实际应用中掌握单片机的开发与应用技术
◆本书系统地介绍了AVR单片机应用系统的开发,涵盖了整机设计中从硬件到软件编程的多个方面。
第1章 单片机系统概述
1.1 AVR系列单片机的特点
1.2 AT90系列单片机简介
第2章 AT90LS8535单片机的基础知识
2.1 AT90LS8535单片机的总体结构
2.1.1 AT90LS8535单片机的中央处理器
2.1.2 AT90LS8535单片机的存储器组织
2.1.3 AT90LS8535单片机的I/O接口
2.1.4 AT90LS8535单片机的内部资源
2.1.5 AT90LS8535单片机的时钟电路
2.1.6 AT90LS8535单片机的系统复位
2.1.7 AT90LS8535单片机的节电方式
2.1.8 AT90LS8535单片机的芯片引脚
2.2 AT90LS8535单片机的指令系统
2.2.1 汇编指令格式
2.2.2 寻址方式
2.2.3 伪指令
2.2.4 指令类型及数据操作方式
2.3 应用程序设计
2.3.1 程序设计方法
2.3.2 应用程序举例
第3章 AT90LS8535单片机的C编程
3.1 支持高级语言编程的AVR系列单片机
3.2 AVR的C编译器
3.3 ICCAVR介绍
3.3.1 安装ICCAVR
3.3.2 设置ICCAVR
3.4 用ICCAVR编写应用程序
3.5 下载程序文件
第4章 数据类型.运算符和表达式
4.1 ICCAVR支持的数据类型
4.2 常量与变量
4.2.1 常量
4.2.2 变量
4.3 AT90LS8535的存储空间
4.4 算术和赋值运算
4.4.1 算术运算符和算术表达式
4.4.2 赋值运算符和赋值表达式
4.5 逻辑运算
4.6 关系运算
4.7 位操作
4.7.1 位逻辑运算
4.7.2 移位运算
4.8 逗号运算
第5章 控制流
5.1 C语言的结构化程序设计
5.1.1 顺序结构
5.1.2 选择结构
5.1.3 循环结构
5.2 选择语句
5.2.1 if语句
5.2.2 switch分支
5.2.3 选择语句的嵌套
5.3 循环语句
5.3.1 while语句
5.3.2 do…while语句
5.3.3 for语句
5.3.4 循环语句嵌套
5.3.5 break语句和continue语句
第6章 函数
6.1 函数的定义
6.1.1 函数的定义的一般形式
6.1.2 函数的参数
6.1.3 函数的值
6.2 函数的调用
6.2.1 函数的一般调用
6.2.2 函数的递归调用
6.2.3 函数的嵌套调用
6.3 变量的类型及其存储方式
6.3.1 局部变量
6.3.2 局部变量的存储方式
6.3.3 全局变量
6.3.4 全局变量的存储方式
6.4 内部函数和外部函数
6.4.1 内部函数
6.4.2 外部函数
第7章 指针
7.1 指针和指针变量
7.2 指针变量的定义和引用
7.2.1 指针变量的定义
7.2.2 指针变量的引用
7.2.3 指针变量作为函数参数
7.3 数组与指针
7.3.1 指向数组元素的指针变量
7.3.2 数组元素的引用(通过指针)
7.3.3 数组名作为函数参数
7.3.4 指向多维数组的元素的指针变量
7.4 字符串与指针
7.4.1 字符串的表示形式
7.4.2 字符串指针变量与字符数组的区别
7.5 函数与指针
7.5.1 函数指针变量
7.5.2 指针型函数
7.6 指向指针的指针
7.7 有关指针数据类型和运算小结
7.7.1 有关指针的数据类型的小结
7.7.2 指针运算的小结
第8章 结构体和共用体
8.1 结构体的定义和引用
8.1.1 结构体类型变量的定义
8.1.2 结构体类型变量的引用
8.2 结构类型的说明
8.3 结构体变量的初始化和赋值
8.3.1 结构体变量的初始化
8.3.2 结构体变量的赋值
8.4 结构体数组
8.4.1 结构体数组的定义
8.4.2 结构体数组的初始化
8.5 指向结构体类型变量的指针
8.5.1 指向结构体变量的指针
8.5.2 指向结构体数组的指针
8.5.3 指向结构体变量的指针做函数参数
8.6 共用体
8.6.1 共用体的定义
8.6.2 共用体变量的引用
第9章 A190LS8535的内部资源
9.1 I/O 口
9.1.1 端口A
9.1.2 端口B
9.1.3 端口C
9.1.4 端口D
9.1.5 I/O口的编程
9.2 中断
9.2.1 单片机的中断功能
9.2.2 AT90LS8535单片机的中断系统
9.2.3 1CCAVRC编译器的中断操作
9.2.4 中断的编程
9.3 串行数据通信
9.3.1 数据通信基础
9.3.2 AT90LS8535的同步串行接口
9.3.3 AT90LS8535的异步串行接口
9.4 定时/计数器
9.4.1 定时/计数器的分频器
9.4.2 8位定时/计数器0
9.4.3 16位定时/计数器1
9.4.4 8位定时/计数器2
9.5 EEPROM
9.5.1 与EEPROM有关的寄存器
9.5.2 EEPROM读/写操作
9.5.3 EEPROM的应用举例
9.6 模拟量输入接口
9.6.1 模数转换器的结构
9.6.2 ADC的使用
9.6.3 与模数转换器有关的寄存器
9.6.4 ADC的噪声消除
9.6.5 ADC的应用举例
9.7 模拟比较器
9.7.1 模拟比较器的结构
9.7.2 与模拟比较器有关的寄存器
9.7.3 模拟比较器的应用举例
第10章 AT90LS8535的人机接口编程
10.1 键盘接口
10.1.1 非矩阵式键盘
10.1.2 矩阵式键盘
10.2 LED显示输出
10.2.1 LED的静态显示
10.2.2 LED的动态扫描显示
10.2.3 动态扫描显示专用芯片MC14489
10.3 LCD显示输出
10.3.1 字符型LCD
10.3.2 点阵型LCD
10.4 ISD2500系列语音芯片的编程
10.4.1 ISD2500的片内结构和引脚
10.4.2 ISD2500的操作
10.4.3 ISD2500和单片机的接口及编程
10.5 TP-uP微型打印机
10.5.1 TP-uP打印机的接口和逻辑时序
10.5.2 P-uP打印机的打印命令和字符代码
10.5.3 AT90LS8535与TP-uP系列打印机的接口及编程
10.6 IC卡
10.6.1 IC卡读写装置
10.6.2 IC卡软件
第11章 AT90LS8535的外围扩展
11.1 简单I/O扩展芯片
11.1.1 用74LS377扩展数据输出接口
11.1.2 数据输入接口
11.2 模拟量输出
11.2.1 D/A转换器简介
11.2.2 8位数模转换器DAC0832
11.2.3 8位数模转换器与单片机的接口及编程
11.2.4 12位数模转换器DACl230
11.2.5 12位数模转换器与单片机的接口及编程
11.3 可编程I/O扩展芯片8255A
11.3.1 8255A的引脚和内部结构
11.3.2 8255A的工作方式
11.3.3 8255A的控制字
11.3.4 AT90LS8535和8255A的接口
11.4 带片内RAM的I/O扩展芯片8155
11.4.1 8155的引脚和内部结构.
11.4.2 8155的I/O口工作方式
11.4.3 8155的定时/计数器
11.4.4 8155的命令和状态字
11.4.5 AT90LS8535与8155的接口及编程
11.5 定时/计数器芯片8253
11.5.1 8253的信号引脚和逻辑结构
11.5.2 8253的工作方式
11.5.3 8253的控制字
11.5.4 AT90LS8535与8253的接口及编程
11.6 实时时钟芯片DS1302
11.6.1 DS1302的引脚和内部结构
11.6.2 DS1302的控制方式
11.6.3 AT90LS8535与DS1302的接口与编程
11.7 数字温度传感器DS18B20
11.7.1 DSl8B20的引脚和内部结构
11.7.2 DS18B20的温度测量
11.7.3 AT90LS8535与DS18B20的接口与编程
第12章 AT90LS8535的通信编程
12.1 串口通信
12.1.1 异步串口UART通信
12.1.2 同步串口SPI通信
12.2 I2C总线
12.2.1 I2C总线协议
12.2.2 采用AT90LS8535的并行I/O口模拟I2C总线
12.3 CAN总线
12.3.1 CAN总线的特点
12.3.2 CAN协议的信息格式
12.3.3 CAN控制器SJA1000
12.3.4 AT90LS8535与SJA1000的接口及编程
12.4 AT90LS8535单片机与PC的串行通信
12.4.1 基于VC++6.0的PC串口通信
12.4.2 应用实例
第13章 系统设计中的程序处理方法
13.1 数字滤波处理
13.1.1 平滑滤波
13.1.2 中值滤波
13.1.3 程序判断滤波
13.2 非线性处理
13.2.1 查表法
13.2.2 线性插值法
自从1976年Intel公司推出MCS-48系列单片机以来, 单片机技术得到了迅速的推广, 已被广泛用于自动测量. 智能仪表. 工业控制及家用电器等各个方面. 除了应用范围的扩大之外, 单片机本身的发展也愈加迅速, 如今, 单片机的家族越来越庞大, 系列产品越来越多, 技术上也越来越先进.
AVR系列单片机是Atmel公司生产的一种具有双总线结构的RISC(Reduced lnstructionSet Computer的缩写, 即精简指令系统计算机)单片机, 它相对于传统的CISC(Complicatedlnstruction Set Computer的缩写, 即复杂指令系统计算机)单片机而言, 具有较短的指令周期和较快的运行速度. 此外, AVR单片机还具有片内Flash. 片内看门狗定时器. 片内同步/异步串行接口. 片内定时/计数器. 片内模数转换器等多种内部资源. 上述这些特点使采用AVR单片机的应用系统不仅具有运行速度快. 结构简单. 功能强大的特点, 而且具有高可靠性和良好的经济性.
C语言是一种编译型的结构化程序设计语言, 具有简单的语法结构和强大的处理功能, 具有运行速度快. 编译效率高. 移植性好和可读性强等多种优点, 可以实现对系统硬件的直接操作. C语言支持自顶向下的结构化程序设计方法, 支持模块化程序设计结构. 因此, 用C语言来编写目标系统软件, 可以大大缩短开发周期, 且明显地增加软件的可读性, 便于改进和扩充, 从而开发出大规模. 高性能的应用系统.
综上所述, 以AVR单片机为基础, 以C语言为工具开发单片机应用系统已成为单片机应用中的一个趋势. 鉴于此, 本书首先介绍了AVR单片机--AT90LS8535的基本结构, 然后介绍了C语言的数据类型. 函数和指针等基础知识, 最后结合大量实例, 讲解了如何用C语言开发AVR系列单片机. 因此, 本书特别适用于单片机的初学者学习使用.
本书共13章. 第一章为单片机简介, 第2章为AT90LS8535单片机的基础知识, 第3章介绍AVR单片机的C编程基础:第4章介绍C语言的数据结构:第5章介绍C的控制流, 第6章介绍C的函数结构, 第7章介绍C语言的指针类型, 第8章介绍C的组合数据类型, 第9章介绍8535的内部资源编程, 第10章介绍8535的人机接口技术, 第11章为8535单片机的扩展编程, 第12章介绍8535的通讯接口, 第13章介绍了系统设计中的程序处理方法.
由于作者的学识水平有限, 书中难免有错误或不妥之处, 恳请广大读者批评指正.