第1章 走近单片机

在讲单片机程序设计之前,我们先了解一下单片机。我本想说走进单片机的世界,可是如今的世界里,我们早已被单片机包围了,所以我这里说“走近单片机”。让我们一起来揭开身边单片机的面纱。

1.1 我们身边的单片机

先看看我们身边的家用电器吧:电视机、电冰箱、空调、洗衣机、电磁炉、电饭锅、微波炉、电话、手机、计算机……这些家电都离不开单片机,如果它们的单片机不工作了,那这些家电也就休息了。下面我们就拿起手中的螺丝刀,对家电做一个分解手术,把隐藏在其中的单片机挖出来。

图1-1是我们常用的电磁炉,观察该电器,感觉是不是很简单呢?我们经常用的也就几个控制按键、一组菜单按键、一组数码管而已。

图1-1 电磁炉操作面板

下面我们就开始动手,用一个“外科大夫”的眼光来看看电磁炉的内部构造。

从图1-2所示电磁炉的内部结构来看,电磁炉的内部并不是很复杂:操作面板下固定了一个简单的电路板(主控电路板)、一个电磁线圈和一个散热风扇,线圈下还有一块电路板(电源控制板)与操作面板的电路板通过排线连接在一起。

图1-2 电磁炉的内部结构

操作面板下的这块电路板就是单片机隐身的地方,如图1-3所示。

图1-3 电磁炉中的单片机

我们可以观察一下这块单片机:被黑色陶瓷包围着,外面留了20条“腿”,头上有一个小原点,我们能看到的就是这些了。图1-4给出了其外形图片和引脚定义。

图1-4 单片机S3F9454

这就是我们要“挖”的东西—我们身边的一块单片机。下面用一个简易原理图来表示其工作原理,如图1-5所示。

电磁炉的例子还是有些复杂,它用到的电子器件比较多。接下来我们再看一个更简单的电器:电子钟。

图1-5 电磁炉原理图

我们先看一个比较商业化的电子钟(也叫万年历)。

图1-6是一个万年历的产品,显示的信息比较多,我们可以看一个用数码管实现的简单电子钟,如图1-7所示。

图1-6 万年历

图1-7 电子钟

怎么样,图1-7中的电子钟和我们生活中看到的最简单的电子钟是不是很像呢?看到这个电子钟,你是不是有一种想去实现一个这样的电子钟的冲动?和你一样,在学习单片机的时候,有人就用单片机自己设计了类似的电子钟,如图1-8所示。

图1-8 实验板一

我们再看一个更清晰、更完整的简易电路。

图1-9的实验板上中间那个个头较大的就是我们要找的单片机了。它上面还有一些小字,不是很清楚:ATMEGA16……这就是我们后面要讲的AVR单片机中的一种。

图1-9 实验板二

注意观察一下这块单片机,除了也是黑色封装、外露两排“腿”,它的左上角还有一个小坑,并用一个白色的三角形标注。这个小圆坑我们在后面会介绍,这里先提示你注意一下。

现在你知道我们身边隐藏了好多的单片机了吧!好,知道了我们身边有这么多的单片机,接下来就进一步去认识它们、了解它们。

1.2 认识单片机

在认识单片机之前,我们先重新认识一下计算机,如图1-10所示。

我们重点关注计算机的主机部分,观察后可以发现计算机的外设—显示器、键盘、鼠标、音频设备都接在计算机主机上,如图1-11所示。

图1-10 计算机

图1-11 计算机外设接口

仿照“解剖”电磁炉的过程,我们打开主机,观察主机内部的构造,如图1-12所示。

图1-12 计算机主机内部构造

图1-12是计算机主机的硬件装配图,有人绘制了计算机的组成原理图,如图1-13所示。

图1-13 计算机组成原理图

图1-13还是比较专业的,有些地方需要了解计算机的组成原理(南桥芯片、北桥芯片等)。我们把CPU、北桥芯片、南桥芯片看做一个整体,重新绘制一个简单的原理图,如图1-14所示。

我们进一步简化原理图,将CPU、硬盘、内存看做一个整体,PIC扩展槽看做已经扩展的接口(扩展了一个并口),这样是不是更像机箱呢?如图1-15所示。

从现在开始就要发挥你的想象力了,先看图1-15,左侧的虚拟机箱看做主机,右侧的接口看做主机后面的接口电路,是不是很像计算机的主机呢?

我们进一步想象,现在把虚拟主机缩小,像科幻电影那样,最后把它的尺寸压缩到52mm×514mm(长(宽)。由于尺寸的缩小,我们把它的接口也更改一下,改为引脚式放在迷你“主机”的两侧,如图1-16所示。我们给它起一个新的名字:“微型计算机”。

图1-14 计算机简化原理图一

图1-15 计算机简化原理图二

图1-16 设想的微型计算机

由于该“微型计算机”太小,外围接口又是通过引脚引出的,我们也就不能用金属外壳做它的“机箱”了,而改用塑料或陶瓷将其封装起来。这样一片“微型计算机”可以完成计算机主机的工作,因而我们可以叫它单片微型计算机,简称“单片机”;老外给了它另外一个名字“微控制器”,英文叫“Microcontroller Unit”,因而常用英文缩写MCU表示单片机。

单片机较正规的定义是:一种集成在电路芯片,采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

至此我们已经引入了单片机的概念,下面就来了解一下我们后面要学习的单片机—AVR单片机。

1.3 了解AVR单片机

1.3.1 单片机的历史

1.单片机的诞生

其实和我上面介绍单片机一样,我们人类是先发明的计算机(更精确的说法应该是先有了计算机的处理器),然后才有了单片机。下面就来看看单片机的发展史。

● 1971年1月,Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,它是第一代微处理器问世的标志,微处理器和微型计算机时代从此开始。微处理器芯片Intel 4004包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC(很多资料称ENIAC“Electronic Numerical Integrator And Computer,电子数字积分计算机,1946年2月诞生”是第一台电子计算机,因此经常拿它做比较。其实第一台电子计算机应该是ABC“Atanasoff-Berry Computer,阿塔纳索夫-贝瑞计算机”,1939年完成样机)。

● 1971年11月,Intel推出MCS-4微型计算机系统,该系统包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微处理器。

● 1972年4月,霍夫等人研制出第一个8位微处理器Intel 8008。由于8008主要采用工艺简单、速度较低的P沟道MOS(Metal OXide Semiconductor,金属氧化物半导体)电路,因此仍属于第一代微处理器。

● 1973年8月,霍夫等人研制出新一代8位微处理器Intel 8080。Intel 8080以N沟道MOS电路取代了P沟道,这标志着第二代微处理器的诞生。

● 1975年4月,MITS(Micro Instrumentation and Telemetry Systems,微仪系统家用电子公司)发布第一个通用型Altair 8800系统,该系统配有一个成套工具、一个主板、一个英特尔8080 CPU和256B的RAM。这是世界上第一台微型计算机(个人电脑)。

● 1976年Intel公司研制出MCS-48系列单片机。该系列单片机具有以下特点:CPU为4位或8位,ROM为1KB或2KB,RAM为64B或128B,具有并行接口、无串行接口,有1个8位的定时器/计数器,有2个中断源。注意,在此之前介绍的只是处理器的研制历史,MCS-48系列才是真正的单片机,它更像是Altair 8800的压缩版(微型版),因而说这是单片机问世的标志。

● 20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列单片机在集成度、存储容量(片内RAM、ROM)、功能的增强及扩展、运算速度等方面都有显著提高。

● 20世纪80年代中期以后,Intel以专利转让的形式把8051内核卖给了许多半导体厂家,如Atmel、Philips、Ananog Devices、Dallas等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些单片机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而常用80C51系列来称呼所有具有8051指令系统的单片机。

2.AVR的历史

● 1984年,George Perlegos在美国加州西部San Jose创立Atmel(爱特梅尔)公司,该公司主要设计、生产EPROM(可编程只读存储器)和PLD(可编程逻辑电路);

● 20世纪80年代末,Atmel以专利的形式购买Intel的内核,开始CMOS工艺的80C51系列单片机的生产;

● 1993年,Atmel开始将Flash存储技术应用于80C51内核处理器;

● 1996年,Atmel在挪威成立关于AVR的研发中心;

● 1997年,Atmel公司挪威设计中心的A先生(Alf-Egil Bogen)与V先生(Vegard Wollan)利用Atmel公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,简称AVR(Alf and Vegard’s Risc processor);

● 1997年,Atmel首先推出的基于AVR技术的高速8位单片机是AT90S8515(采用40-pin的DIP封装),其功能类似于8051处理器,只是复位引脚REST是低电平有效(8051单片机的REST引脚是高电平有效);

● 2001年,Atmel公司相继推出高档ATmega系列AVR单片机,主要有Atmega 8/16/32/64/128(存储容量为8/16/32/64/128KB);

● 2004年,Atmel公司推出基于ARM内核的AT91SAM系列处理器;

● 2006年,Atmel公司推出32-bit AVR处理器—AT32系列;

● 2008年,Atmel公司推出增强型产品AVR处理器—ATxmega系列。

1.3.2 AVR单片机的特点

AVR单片机是1997年由Atmel公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU)精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通信设备、家用电器、电池管理、汽车工业控制等各个领域。

1.AVR单片机的分类

AVR产品从1997年发布第一款产品以来,现在已经有很多品种,Atmel公司按其使用范围将它们分为6大系列。

(1)低端的Tiny系列

该系列单片机具有体积小、0.7V超低功耗、运行速度快、性价比高等特点。该系列单片机主要有ATtiny4、ATtiny5、ATtiny10、ATtiny13、ATtiny20、ATtiny40、ATtiny24、ATtiny44、ATtiny84、ATtiny261、ATtiny461、ATtiny48等。

该系列的AVR主要应用于电池供电的低功耗设备,如手机附件、掌上游戏机及其附件、远程控制设备等。

(2)高端的Mega系列

该系列AVR是种类最为繁多的一个系列,它具有低功耗、集成度高(大多集成了片内Flash、SRAM、片内EEPROM、SPI、TWI、USART、看门狗等功能)、集成数模转换功能、运行速度快等特点。该系列单片机主要有ATmega8、ATmega16、ATmega32、ATmega64、ATmega128、AT90CAN32、AT90CAN64、AT90CAN128、AT90PWM1、AT90PWM2B、AT90PWM3B、AT90USB162、AT90USB646、ATmega8U2、ATmega16U2、ATmega32U2等。

该系列AVR的应用范围比较广,可使用于工业、家用电器、智能玩具、便携智能仪表、机器人等领域。

(3)增强版XMEGA系列

该系列是Mega系列的增强版,该系列AVR的特点如下:具有高精度(12位)数模转换器、实时性强、Atmel节能技术、高度集成(8UART、4TWI、4SPI)、AVR驱动支持、ATmel Qtouch库支持、有些型号集成USB接口。该系列单片机主要有ATxmega64A1U、ATxmega64A3U、ATxmega16A4U、ATxmega32A4U、ATxmega64A4U、ATxmega128A4U等。

该系列AVR主要应用于自动调温器、家庭和建筑控制系统、低功耗家庭控制系统等。

(4)32位的AVR

32-bit AVR是AVR产品中的低功耗32位单片机,该系列AVR具有通用性强(集成USB主机模式、网络MAC、SDRAM、NAND Flash、高速串口等)、运算能力强、高速数据吞吐量、低功耗等特点。该系列单片机主要有AT32UC3L016、AT32UC3L032、AT32UC3 L064、AT32UC3L0128、ATU64L3U、ATU128L3U、ATU256L3U等。

该系列AVR主要应用于电容式触摸遥控器、游戏手柄、电池供电设备、板卡控制、工业控制、通信协议转换器等。

(5)电源管理AVR

Battery Management AVR是针对电池管理而设计的一个系列,该系列AVR具有安全性高、精确度高、集成电源充电控制机制、Atmel电池管理系统支持等特点。该系列单片机主要有ATmega8HVA、ATmega16HVA、ATmega16HVB、ATmega32HVB、ATmega406等。

该系列AVR主要应用于电池管理系统中,如锂电池汽车的电池管理系统、笔记本电池管理、UPS系统等。

(6)汽车控制AVR

Automotive AVR和Battery Management AVR一样是使用范围比较专业的一个AVR系列,主要应用于汽车智能控制。该系列AVR具有高性能、代码安全性高、内置电压保护等特点。该系列单片机主要有Attiny24 Automotive、Attiny44 Automotive、Attiny84 Automotive、Attiny88 Automotive、Attiny261 Automotive、Attiny461 Automotive、Attiny861 Automotive、ATmega328P Automotive、AT90CAN32 Automotive等。

该系列AVR主要应用于汽车控制系统。

2.AVR单片机的特点

AVR单片机也具有80C51单片机的共性:包含中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行接口、串行接口和中断系统等。下面我们分别介绍。

(1)中央处理器

中央处理器也叫CPU(Central Processing Unit),主要由控制器和运算器组成,是整个单片机的核心部件。CPU主要完成取指令、翻译指令、执行指令等操作,同时负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入/输出功能等操作。

【注意】 我们称一款单片机是8位或16位、32位,就是根据单片机的中央处理器处理数据的宽度来划分的。通常说的AT89系列和AVR中的AT90S系列、Tiny系列、ATmega系列等都是8位单片机,也有32位的AVR单片机,如AT32系列。

(2)数据存储器(RAM)

数据存储器是单片机的数据存储单元,AVR的数据存储器包括通用寄存器、I/O寄存器、内部数据存储器(SRAM)。其中通用寄存器主要用于数据交换,I/O寄存器用于控制单片机的I/O口,用户只能访问(读/写)而不能用于存放数据,内部数据存储器用于存放读/写数据、定义变量、运算的中间结果等。

【注意】 通常用C语言写单片机程序时,不需要操作通用寄存器,编译器会自动管理;我们控制单片机主要操作的是I/O寄存器,将其设定为输入口、输出口或特殊功能的I/O口;在程序中定义的全局变量、函数内部的变量、函数参数,占用的都是SRAM存储单元。

(3)EEPROM数据存储器

AVR单片机与8051单片机不同,该单片机内部除了上面讲的数据存储单元,还集成了EEPROM数据存储器。该存储器作为一个独立的数据空间而存在,可以按字节读/写。通常我们会在其中保存设计软件的配置参数等。

(4)程序存储器(ROM)

程序存储器是和数据存储器相对应的,主要用来存放编译后下载到单片机中的程序。AVR的程序存储器都是Flash结构的,因而可以多次读/写,通常内置Flash的擦写寿命为10000次。

【注意】 通常所说的ATmega8、ATmega16、ATmega32就是从其程序存储器的大小来区分的,ATmega8有8KB系统内可编程Flash,ATmega16有16KB系统内可编程Flash,ATmega64有64KB系统内可编程Flash。

(5)定时器/计数器

每个单片机的内部一般都会有两个或两个以上的定时器/计数器(Timer/Conter),用于外部事件的计数或内部定时。AVR单片机也提供了定时器/计数器而且扩展了PWM功能。

(6)并行输入/输出(I/O)口

每个单片机都会提供基本的输入/输出口,通常称其为I/O口。我们可以在程序中设定其内部的I/O寄存器来改变I/O口的输入、输出功能。

【注意】 单片机编程主要就是管理其I/O口的输入、输出及特殊功能,也就是用程序控制其I/O寄存器,这也是我们后面学习的重点。

(7)全双工串行口

通常一个单片机会提供一个或多个全双工串行通信口,用于与其他设备间的串行数据传输。串行通信接口是51单片机设计时提供的,因而后期开发的单片机也几乎都提供。

AVR单片机除了提供USART串行通信接口,通常还集成了SPI、TWI(IIC)两种串行通信接口。

(8)中断系统

单片机的中断系统是实现多任务、任务优先级的核心技术。AVR单片机有多种中断机制:复位中断、外部中断、定时器/计数器中断、USART中断、ADC中断、SPI中断、模拟比较器中断等。

【注意】 前面介绍并行输入/输出口时谈到,用程序控制I/O寄存器实现I/O口的控制是我们后面学习的重点。但学会了控制I/O口只是对单片机程序设计有一个基本的认识,灵活使用定时器/计数器和中断系统才是学会单片机程序设计的关键。

(9)时钟电路

AVR单片机设计了多种时钟源选择项,使用时可以根据Flash熔丝位的配置灵活选择。不过也正是这种灵活、多样的熔丝位配置选项,使初学者往往不知所措。当然在Proteus仿真中我们可以不关心这些,先进入嵌入式软件设计的学习。

3.AVR单片机的优势

AVR产品在1997年一经推出,就在业界引起了不小的震动。时至今日,其ATmega系列和其他AVR产品仍是很多嵌入式设计者的最爱,这是为什么呢?我们可以总结一下其自身的优势。

(1)可靠性高、功能强、速度快、功耗低、性价比高

这些都是嵌入式设计的必要条件,也是衡量一款单片机性能优劣的重要指标,因而该项应该是AVR单片机的首选优势。

(2)集成度高

AVR单片机具有良好的集成性能。AVR单片机都具备在线编程接口,其中Mega系列大多具有JTAG仿真和下载功能;AVR单片机含有片内看门狗电路、片内可编程Flash、片内EEPROM数据存储器、USART、SPI、TWI;多数AVR单片机还内嵌了AD转换器、模拟比较器、PWM定时器/计数器等多种功能;AVR片机的I/O接口具有很强的驱动能力,灌电流可直接驱动继电器、LED等器件。正是AVR的这些高度集成的功能,硬件工程师在嵌入式设计中才钟情于“她”,这样可以省去驱动电路,节约系统成本。

(3)入门简单

AVR内部集成功能强大的特点,可以为硬件工程师省去驱动电路的设计;而嵌入式软件工程师也有很广的选择余地。AVR单片机除支持汇编语言外,还支持BASIC、C语言等多种高级语言,常用的开发工具有IAR AVR、Code Vision AVR、ICC AVR、GCC AVR、BASCOM AVR等。使用高级语言编写嵌入式代码,有快速上手、方便移植等优点。这也是众多嵌入式工程师钟情于“她”的又一个原因。

(4)种类繁多

从前面我们介绍“AVR单片机的分类”就可以知道,Atmel公司这些年为适应用户的选择研制了众多的AVR产品。也正是有多种系列可以适用于不同的应用场合,因而嵌入式工程师在使用一款AVR产品后才会爱不释手,在设计新产品时会根据需要选择AVR的其他系列。

1.3.3 AVR单片机的代表ATmega16

Atmel公司在1997年推出首款AVR产品后,相继推出了低端的Tiny系列、中端的AT90S系列和高端的ATmega系列,后来将AT90S系列并入ATmega系列,又推出了增强型XMEGA系列和电池管理AVR、汽车控制AVR。

在众多的AVR单片机中,使用范围最广的是ATmega系列。这是因为ATmega系列几乎具备了AVR单片机所有的优点:可靠性高、功能强、速度快、功耗低、性价比高、集成度高、种类繁多等。所以我们在ATmega系列中选择一款来讲解,这就是ATmega16。

1.ATmega16的主要特点

(1)先进的RISC结构

● 131条指令,大多数指令执行时间为单个时钟周期;

● 32个8位通用工作寄存器;

● 工作于16MHz时钟时性能高达16MIPS;

● 只需两个时钟周期的硬件乘法器。

(2)非易失性程序和数据存储器

● 16KB系统内可编程Flash,擦写寿命为10000次;

● 具有独立锁定位的可选Boot代码区;

● 512B的EEPROM,擦写寿命为100000次;

● 1KB的片内SRAM;

● 可以对锁定位进行编程实现用户程序的加密。

(3)JTAG接口(与IEEE1149.1标准兼容)

● 符合JTAG标准的边界扫描功能;

● 支持扩展的片内调试功能;

● 通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程。

(4)外设特点

● 两个具有独立预分频器和比较器功能的8位定时器/计数器;

● 一个具有预分频器、比较器功能和捕捉功能的16位定时器/计数器;

● 具有独立振荡器的实时计数器RTC;

● 四通道PWM;

● 8路10位ADC;

● 面向字节的两线接口;

● 两个可编程的串行USART;

● 可工作于主机/从机模式的SPI串行接口;

● 具有独立片内振荡器的可编程看门狗定时器;

● 片内模拟比较器。

(5)特殊的处理器特点

● 上电复位及可编程的掉电检测;

● 片内经过标定的RC振荡器;

● 片内/片外中断源;

● 6种睡眠模式—空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby(带电挂起)模式及扩展的Standby模式。

(6)I/O和封装

● 32个可编程的I/O口;

● 40引脚PDIP封装,44引脚TQFP封装与44引脚MLF封装。

(7)工作电压(4.5~5.5V)

(8)速度等级(0~16MHz)

2.ATmega16的外观

观察图1-17中左侧的外观图,了解芯片告诉我们的信息。芯片的左上角有一个小圆坑,其下方有一个白色的三角符号。该标志告诉我们这里是芯片的第1引脚,沿逆时针方向数下去,为第1至第40引脚,如图1-17中右图所示。该标志非常重要,我们在实际中调试电路板,用三用表测量时找对应引脚就要用到该标志。

图1-17 ATmega16外观及引脚定义

芯片上的标号ATMEL是芯片公司的名称,ATMEGA16 16PI 0634代表的意思就更丰富了。

ATMEGA:表示该芯片是AVR的mega系列,如ATMEGA8、ATMEGA64、ATMEGA64L等。

16:表示该芯片的具体型号,也表示片内可编程Flash是16KB;有的AVR产品在这个数字后面还会加一个字符L,如ATMEGA16L,L表示该芯片的工作电压是2.7~5.5V,而缺省字符L时,表示工作电压是4.5~5.5V。

16:表示最高系统时钟是16MHz。

P:表示封装形式是PDIP封装;同类符号还有A、M,A表示TQFP封装、M表示MLF封装。

I:表示是无铅工业级产品,使用温度为:40~85℃,U表示有铅工业级;同类符号还有C、A、M,C表示商业用产品、A表示汽车用产品、M表示军用产品。

0634:表示生产批次,即2006年第34批次生产。

最后就是引脚数是40。

这就是一块芯片告诉我们的信息,然后我们可以利用这些信息去网上、生产厂家获取更多的信息。

3.Atmega16的引脚定义

VCC:电源。

GND:地。

PA(PA7..PA0):端口A为8位双向I/O口,具有可编程的内部上拉电阻。端口A具有较强的驱动能力,可以直接驱动继电器、LED等电路;在复位过程中,即系统时钟还未起振时,端口A处于高阻状态。

端口A根据I/O寄存器的设定,也可以作为A/D转换器的模拟输入端。

PB(PB7..PB0):端口B为8位双向I/O口,具有可编程的内部上拉电阻。端口B具有较强的驱动能力,可以直接驱动继电器、LED等电路;在复位过程中,即系统时钟还未起振时,端口B处于高阻状态。

端口B根据I/O寄存器的设定,也可以作为其他特殊功能接口,如SPI串行总线接口、模拟比较器输入口、外部计数器输入口、外部中断2输入口等。

PC(PC7..PC0):端口C为8位双向I/O口,具有可编程的内部上拉电阻。端口C具有较强的驱动能力,可以直接驱动继电器、LED等电路;在复位过程中,即系统时钟还未起振时,端口C处于高阻状态。如果JTAG接口使能,即使出现复位信号,引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻也将被激活。

端口C根据I/O寄存器的设定,也可以作为其他特殊功能接口,如定时振荡器引脚、JTAG接口、TWI(IIC)总线接口等。

PD(PD7..PD0):端口D为8位双向I/O口,具有可编程的内部上拉电阻。端口D具有较强的驱动能力,可以直接驱动继电器、LED等电路;在复位过程中,即系统时钟还未起振时,端口D处于高阻状态。

端口D根据I/O寄存器的设定,也可以作为其他特殊功能接口,如外部中断的输入口、定时器/计数器比较匹配输出口、USART串行总线接口等。

:复位输入引脚,低电平有效。持续时间超过最小门限时间的低电平将引起系统复位。

XTAL1:反向振荡放大器与片内时钟操作电路的输入端。

XTAL2:反向振荡放大器的输出端。

AVCC:端口A和A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接,使用ADC时应通过一个低通滤波器与VCC连接。

AREF:A/D转换器的模拟基准输入引脚。

4.AVR单片机与51单片机的比较

最后,如表1-1所示,将AVR单片机与传统的51单片机做一个简单的比较。其中51单片机以AT89C51和AT89S51为例,而AVR单片机以ATmega系列的ATmega8、ATmega16、ATmega64为例。这样,我们不仅可以比较51单片机与AVR单片机的区别,同时也可以了解ATmega系列中各个单片机的区别。

表1-1 AVR单片机与51单片机的比较