单片机学习资料2

2019-04-22 13:13

二 Atmega8单片机结构分析

通过第一章内容的学习,我们已经知道,单片机就是在一块芯片上集成了一台微型计算机所必须的几个组成部分:CPU、存储器、I/0接口。

单片机主要是针对各种控制而设计的,因此,单片机除了具有一般微型计算机的组成部分外,一般还集成了定时/计数器、看门狗电路和中断系统,有的单片机还集成了A/D转换功能部件。

单片机的这些组成部件在结构上有什么特点?又是怎样工作的呢?这些都是本章要解决的问题。

§2.1 Atmega8单片机结构

为了提高运行效率,Atmega8单片机采用了哈佛(Harvar)结构,即程序存储器和数据存储器使用不同的存储空间。Atmega8单片机系统结构如图2—1:

RESETPC0-PC6PB0-PB7B端口驱动8位数据总线ADCPORTB数字接口TWI定时/计数器内部振荡器看门狗定时器MCU控制器MCU控制器VCCC端口驱动PORTC数字接口模拟输入选择GNDAGNDAREF程序计数器程序Flash指令寄存器指令译码器控制线CPU编程逻辑+-模拟比较器堆栈指针SRAM通用寄存器ALU状态寄存器SPI模拟比较器接口振荡器振荡器中断单元E2PROMUSARTPORTD数字接口D端口驱动PD0-PD7 图2—1 Atmega8结构框图

§2.2 Atmega8引脚功能

Atmega8单片机有PDIP、TQFP和MLF三种不同形式的封装,这里我们主要介绍它的PDIP封装,见图2—2所示。

(RESET)PC6(RXD)PD0(TXD)PD1(INT0)PD2(INT1)PD3(XCK/T0)PD4VCCGND(XTAL1/TOSC1)PB6(XTAL2/TOSC2)PB7(T1)PD5(AIN0)PD6(AIN1)PD7(ICP)PB01234567891011121314282726252423PC5(ADC5/SCL)PC4(ADC4/SDA)PC3(ADC3)PC2(ADC2)PC1(ADC1)PC0(ADC0)GNDAREFAVCCPB5(SCK)PB4(MISO)PB3(MOSI/OC2)PB2(SS/OC1B)PB1(OC1A)ATmega82221201918171615

图2—2 ATmega8引脚配置图

由上图可以看出,Atmega8单片机各引出脚的功能分括号外功能(第一功能)和括号内功能(第二功能)。下面我们先介绍Atmega8单片机引脚的第一功能,引脚第二功能,我们将在以后相关章节中讲述。

1.VCC(7脚)——(数字)电源; 2.GND(8、22脚)——地;

3.AVCC(20脚)——ADC转换模块电源供电端,即当PC0—PC3用于ADC时,AVCC引脚应通过低通滤波器连接到VCC上;当PC0—PC3不使用ADC时,该引脚应直接连接到VCC上。注意:PC4、PC5端口的电源是由VCC提供的;

4.AREF(21脚)——ADC转换模块参考电源输入端; 5.PB7(10脚)、PB6(9脚)、PB5(19脚)、PB4(18脚)、PB3(17脚)、PB2(16脚)、PB1(15脚)和PB0(14脚)——组成B端口的8个位。B端口是一个8位的双向I/O口,每个引脚都有内部上拉电阻,而且输出缓冲器具有双向(输入和输出)大电流的驱动能力,可以直接驱动发光二极管发光。

6.PC6(1脚)、PC5(28脚)、PC4(27脚)、PC3(26脚)、PC2(25脚)、PC1(24脚)和PC0(23脚)——组成C端口的7个位。C端口是一个7位的双向I/O口,每个引脚都有内部上拉电阻,而且输出缓冲器具有双向(输入和输出)大电流的驱动能力,可以直接驱动发光二极管发光。

注意:PC6的电气特性与端口C其他引脚的电气特性不同。当未对RSTDISBL熔丝编程时,PC6只作为复位输入引脚,不能当作I/O端口使用。要想使PC6作为I/O端口,就必须对RSTDISBL熔丝进行编程。如何对RSTDISBL熔丝编程,我们将在后面相关内容中介绍。

7.PD7(13脚)、PD6(12脚)、PD5(11脚)、PD4(6脚)、PD3(5脚)、PD2(4脚)、PD1(3脚)和PD0(2脚)——组成D端口的8个位。D端口是一个8位的双向I/O口,每个引脚都有内部上拉电阻,而且输出缓冲器具有双向(输入和输出)大电流的驱动能力,可以直接驱动发光二极管发光。

Atmega8的B、C、D端口都是双向I/O口,如何定义它们是输入还是输出,或内部上拉电阻是否有效,这些相关内容我们将在下一节《ATmega8的I/O端口》中讲述。

§2.3 ATmega8的I/O端口

由上节内容我们知道:Atmega8的I/O端口具有第一和第二两种功能,下面我们具体介绍这些内容。

一、端口的第一功能——通用的数字I/O口

Atmega8的I/O端口用做通用数字I/O口时,具有真正的读—修改—写功能,意思是某端口引脚方向改变(输入还是输出),不会影响其他引脚方向的改变。同样,某端口引脚输出值的改变(输出高电平还是输出低电平)以及用做输入时其上拉电阻的通、断,也不会影响其他引脚。

Atmega8每个I/O引脚内部都有独立的上拉电阻,如图2—3。

+5V开关K控制信号:为1时,K合上;为0时,K断开.K上拉电阻I/O口引脚(如PB0)ATmega82—3 I/O口引脚内部上拉电阻

如何用C语言定义打开某I/0(如PB0)口的上拉电阻呢?其格式如下:

DDRB=0B00000000;//先定义PB0为输入口

PORTB=0B00000001;//再将要打开上拉电阻的位置1。

上述定义中DDRB、PORTB是什么呢?其实在Atmega8中每个I/O端口都有3个寄存器,它们分别是:数据方向寄存器(DDRx)、数据寄存器(PORTx)和数据输入引脚寄存器(PINx)(x:是B或C或D)。下面我们以B端口为例,介绍这三种寄存器及其应用。

1.B端口方向寄存器——DDRB

位7DDB7R/W复位值R/W065432DDB2R/W01DDB1R/W00DDB0R/W0DDRBDDB6DDB5R/W0R/W0DDB4DDB3R/W0R/W0

方向寄存器主要用来定义I/O口引脚是输入还是输出,当I/O口的某位置“1”时,那么相应的引脚为输出,否则,该引脚为输入。例如:DDRB=0B00000010,即DDB=1,说明B口的PB1为输出,其他引脚为输入。

2.B端口数据寄存器——PORTB

位76543210PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0PORTBR/W复位值R/W0R/W0R/W0R/W0R/W0R/W0R/W0R/W0

数据寄存器或用来定义引脚输出电平的高低,或用来定义是否打开引脚内部的上拉电阻。定义了I/O口某个引脚为输出后,当数据寄存器相应位置“1”时,说明该引脚输出高电平;置“0”时,输出低电平,如:

DDRB=0B00000110;//定义PB1、PB2为输出。

PORTB=0B00000010;//PB1输出高电平,PB2输出低电平。

定义了I/O口某个引脚为输入后,当数据寄存器相应位置“1”时,说明打开该引脚的内部上拉电阻;置“0”时,该引脚内部的上拉电阻是关断的,如: DDRB=0B00000000;//定义PB0—PB7为输入。

PORTB=0B00000010;//打开PB1内部上拉电阻。 3.B端口输入引脚寄存器——PINB

位76543210PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0PINBR/WRN/ARN/ARN/ARN/ARN/ARN/ARN/ARN/A

输入引脚寄存器主要用来读取I/O口引脚电平的高低。

注意:“0B00000010”,这种书写格式与B端口的PB0—PB7之间的对应关系如图2—4所示。

PB7PB6PB5PB4PB3PB2PB1PB00B图2—4

Atmega8C、D断口的方向寄存器、数据寄存器、输入引脚寄存器与B口相类似,这里不在叙述。 二、端口的第二功能

大家可能注意到了,有些单片机引脚的功能不止一个,是什么原因呢?由于

工艺及标准化等原因,单片机引脚数目总是有限的。Atmega8单片机引脚数目为28个,但单片机为实现功能所需要的信号数目却远远超过这个数。如何解决这个供需矛盾呢?正如有的人为了增加收入,要做一些兼职工作。单片机也同样如此,当引脚数量有限时,“兼职”是唯一可行的办法,即给其中一些引脚赋以双重功能。下面介绍Atmega8单片机引脚的第二功能。 1. B端口引脚第二功能:见表2—1

表2—1 B端口引脚第二功能 引 脚 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 第 二 功 能 XTAL2(系统时钟晶振引脚2) TOSC2(实时时钟晶振引脚2) XTAL1(系统时钟晶振引脚1或外部系统时钟输入口) TOSC1(实时时钟晶振引脚1) SCK(SPI总线时钟) MISO(SPI总线主输入口/从输出口) MOSI(SPI总线主输出口/从输入口) OC2(T/C2输出比较匹配输出口) SS(SPI总线主从选择) OC1B(T/C1输出比较B匹配输出口) OC1A(T/C1输出比较A匹配输出口) ICP(T/C1输入捕获输入口) ①PB7——XTAL2/ TOSC2 XTAL2:系统时钟晶振引脚2。当系统使用外部晶振时,该引脚连接晶振的一个脚,此时,该引脚不能作为I/O引脚使用。当系统使用内部可校准的RC振荡器或外部时钟源时,该引脚可作为一般I/O口使用。

TOSC2:实时时钟晶振引脚2。只有当选择内部可校准的RC振荡器作为系统时钟源时,而且设置寄存器ASSR中的AS2位,允许使用异步时钟定时器时,PB7才可用作TOSC2。当ASSR寄存器的AS2位置“1”,使能定时/计数器2的异步时钟功能时,PB7与端口引脚脱离,作为振荡放大器的反向输出端。在这种模式下,时钟晶体连接到该引脚,且不能作为I/O引脚。

如果PB7被用作晶振,寄存器DDB7、PORTB7和PINB7读出都为“0”。 ②PB6——XTAL1/ TOSC1

XTAL1:系统时钟晶振引脚1。当系统使用外部晶振时,该引脚连接晶振的一个脚,此时,该引脚不能作为I/O引脚使用。当系统使用内部可校准的RC振荡器或外部时钟源时,该引脚可作为一般I/O口使用。

TOSC1:实时时钟晶振引脚2。只有当选择内部可校准的RC振荡器作为系统时钟源时,而且设置寄存器ASSR中的AS2位,允许使用异步时钟定时器时,PB6才可用作TOSC1。当ASSR寄存器的AS2位置“1”,使能定时/计数器2的异步时钟功能时,PB6与端口引脚脱离,作为振荡放大器的反向输入端。在这种模式下,时钟晶体连接到该引脚,且不能作为I/O引脚。

如果PB6被用作晶振,寄存器DDB6、PORTB6和PINB6读出都为“0”。 ③PB5——SCK

SCK:SPI串行总线接口时钟线。当系统作为主机时,SCK为SPI总线的时钟输出端;当系统作为从机时,SCK为SPI总线的时钟输入端。当使能SPI为从机模式时,无论DDB5是何设置,该引脚被强置为输入。尽管SCK引脚被SPI


单片机学习资料2.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:标准实验报告-金融工程-2011-2012-2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: