第1章89S52单片机概述.docx
《第1章89S52单片机概述.docx》由会员分享,可在线阅读,更多相关《第1章89S52单片机概述.docx(14页珍藏版)》请在冰豆网上搜索。
第1章89S52单片机概述
第1讲认识89S52单片机
学习要点:
单片机的基本概念
AT89S52引脚功能及封装形式
程序存储器和数据存储器的地址空间
特殊功能寄存的地址分配及其复位值
1.1单片机概述
单片机的全称为单片微型计算机(Single-ChipMicrocomputer)或微型控制器(Micro-controller)。
它在一块芯片上集成了中央处理单元CPU、随机存储器RAM、只读存储器ROM、定时器/计数器和多种输入/输出(I/O),如并行I/O、串行I/O和A/D转换器等。
就其组成而言一块单片机就是一台计算机。
典型的结构如图1-1所示。
由于它具有许多适用于控制的指令和硬件支持而广泛应用于工业控制、仪器仪表、外设控制、顺序控制器中,所以又称为微控制单元(MCU)。
图1-1单片机结构框图
MCS-51系列单片机,是Intel公司继MCS-48系列单片机之后,在1980年推出的高档8位单片机。
当时MCS-51系列产品有8051、8031、8751、80C51、80C31等型号。
它们的结构基本相同,其主要差别反映在寄存器的配置上有所不同。
8051内部没有4K字节的掩膜ROM程序存储器,8031片内没有程序存储器,而8751是将8051片内的ROM换成EPROM。
ATMEL89系列单片机是ATMEL公司的以8031核构成的8位Flash单片机系列。
这个系列单片机的最大特点就是在片内含有Flash存储器,
AT89S52单片机是一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存。
该器件采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C51指令集兼容。
片内程序存储器允许重复在线编程,允许程序存储器在系统内通过SPI串行口改写或用同用的非易失性存储器改写。
通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,AT89S52便成为一个高效的微型计算机。
它的应用范围广,可用于解决复杂的控制问题,且成本较低。
其结构框图如图1-2所示。
图1-2AT89S52结构框图
1.2AT89S52单片机特性
AT89S52的主要特性如下:
兼容MCS51产品
8K字节可擦写1000次的在线可编程ISP闪存
4.0V到5.5V的工作电源范围
全静态工作:
0Hz~24MHz
3级程序存储器加密
256字节内部RAM
32条可编程I/O线
3个16位定时器/计数器
8个中断源
UART串行通道
低功耗空闲方式和掉电方式
通过中断终止掉电方式
看门狗定时器
双数据指针
灵活的在线编程(字节和页模式)
1.3AT89S52引脚功能与封装
图1-3是AT89S52封装结构图。
图1-3AT89S52封装引脚图
按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O口、控制和复位等。
1.多功能I/O口
AT89S52共有四个8位的并行I/O口:
P0、P1、P2、P3端口,对应的引脚分别是P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P1口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在对Flash编程和程序校验时,P1口接收低8位地址。
另外,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX),如表1-1所示。
表1-1P1口管脚复用功能
端口引脚
复用功能
P1.0
T2(定时器/计算器2的外部输入端)
P1.1
T2EX(定时器/计算器2的外部触发端和双向控制)
P1.5
MOSI(用于在线编程)
P1.6
MISO(用于在线编程)
P1.7
SCK(用于在线编程)
P2端口,该口是带有内部上拉电阻的8位双向I/O端口,P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P2口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器或16位的外部数据存储器(如执行MOVX@DPTR指令)时,P2口送出高8位地址,在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。
在对Flash编程和程序校验期间,P2口也接收高位地址或一些控制信号。
P3端口,该口是带有内部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
P3口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在AT89S52中,同样P3口还用于一些复用功能,如表1-2所列。
在对Flash编程和程序校验期间,P3口还接收一些控制信号。
表1-2P3端口引脚与复用功能表
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
2.RST复位输入端。
在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。
看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。
在SFRAUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。
DISRTO位的默认状态,是复位高电平输出功能使能。
3.ALE/PROG地址锁存允许信号。
在存取外部存储器时,这个输出信号用于锁存低字节地址。
在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。
一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。
但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。
在需要时,可以把地址8EH中的SFR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。
在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。
4.PSEN程序存储器允许信号。
它用于读外部程序存储器。
当AT89S52在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。
在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。
5.EA/Vpp外部存取允许信号。
为了确保单片机从地址为0000H~FFFFH的外部程序存储器中读取代码,故要把EA接到GND端,即地端。
但是,如果锁定位1被编程,则EA在复位时被锁存。
当执行内部程序时,EA应接到Vcc。
在对Flash存储器编程时,这条引脚接收12V编程电压Vpp。
6.XTAL1振荡器的反相放大器输入,内部时钟工作电路的输入。
7.XTAL2振荡器的反相放大器输出。
1.4存储器组织
所有的ATMELFlash单片机都将程序存储器和数据存储器分为不同的存储空间。
89系列单片机的典型存储器的结构如图1-4所示。
图1-4存储器结构
程序和数据存储器分为不同的逻辑空间,使得可用8位地址来访问数据存储器。
这样可提高8位CPU的存储和处理速度。
尽管如此,也可通过数据指针(DPTR)寄存器来产生16位的数据存储器地址。
程序存储器只可读不可写,用于存放编好的程序和表格常数。
89系列单片机可寻址的程序存储器总空间为64KB。
外部程序存储器的读选通脉冲为PSEN(程序存储允许信号)。
数据存储器在物理上和逻辑上都分为两个地址空间:
一个内部和一个外部数据存储器空间。
外部数据存储器的寻址空间可达64KB。
访问外部数据存储器时,CPU发出读和写的信号——RD和WR。
将RD和PSEN两个信号加到一个与门的输入端,然后用与门的输出作为外部程序/数据存储器的读选通脉冲。
这样就可将外部程序存储器空间和外部数据存储器空间合并在一起。
1.4.1程序存储器
89系列单片机可寻址的内部和外部程序存储器总空间为64KB。
每个外部程序和数据存储器的可寻址范围高达64KB。
它没有采用程序存储器分区的方法,64KB的地址空间是统一的。
EA引脚接低电平时,单片机就从外部程序存储器中取指。
对于AT89S52,EA引脚接高电平时,程序直接从单片机内部存储器中的0000H到1FFFH单元执行,2000H到FFFFH单元到外部存储器中执行。
程序存储器中有几个单元专门用来存放特定的程序。
这几个单元的配置情况如图1-5所示。
图1-5程序存储器的中断入口配置
由图1-5可知,0000H~0002H单元用于初始化程序。
单片机复位后,CPU总是从0000H单元开始执行程序。
另外,每个中断在程序存储器中都分配有一个固定的入口地址。
中断响应后,CPU便跳到该单元,在这里开始执行中断服务子程序。
例如,外部中断0的入口地址被放在0003H单元,如果使用外部中断0,则它的中断服务子程序必须从0003H单元开始。
如果中断没有使用,那么它的服务单元也可作一般用途的程序存储器用。
每个中断入口地址的间隔为8个单元;外部中断0的入口地址为0003H;定时器0的入口地址为000BH;外部中断1的入口地址为0013H;定时器1的入口地址为001BH;以此类推。
如果一个中断服务子程序足够短的话,则可全部存放在这8个单元中。
对较长的服务子程序,则可利用一条跳转指令跳过后续的中断入口地址。
程序存储器最低端的地址可以在片内Flash中,或在外部存储器中。
将外部存取(EA)引脚接Vcc或接地,就可进行这种选择。
例如,在带有4KB片内Flash的AT89C51中,如果把EA引脚连到Vcc,当地址为0000H~0FFFH时,则访问内部Flash;当地址为1000H~FFFFH时,则访问外部程序存储器。
在AT89C52(8KBFlash)中,当EA端保持高电平时,如果地址不超过1FFFH,则访问内部Flash;地址超过1FFFH(即为2000H~FFFFH)时,将自动转向外部程序存储器。
如果EA端接地,则只访问外部程序存储器,不管是否有内部Flash存储器。
外部程序存储器读选通信号PSEN用于读取所以的外部程序;读取内部程序时,不产生PSEN信号。
执行外部程序是的硬件连接方法如图1-6所示。
图1-6访问外部程序存储器的连接
注意,在访问外部程序存储器时,16条I/O线(P0和P2)作为总线使用。
P0端口作为地址/数据总线使用。
它先输出16位地址的低8位PCL,然后进入悬浮状态,等待程序存储器送出的指令字节。
当有效地址PCL出现在P0总线上时,ALE(允许地址锁存)把这个地址锁存到地址锁存器中。
同时,P2端口输出地址的高8外PCH。
然后PSEN选通外部程序存储器,使指令送到P0总线上,由CPU取入。
即使所用的程序存储器的实际空间可能小于64KB,程序存储器的地址总是为16位的。
在访问外部程序存储器时,要用到两个8位端口——P0和P2来产生程序存储器的地址。
1.4.2数据存储器
数据存储器在物理上逻辑上都分为两个地址空间:
一个为内部数据存储器空间;一个为外部数据存储器空间。
数据存储器的配置如图1-7所示。
图1-7访问外部数据存储器的连接
图1-7是访问8KB外部RAM时的硬件连接图。
在这种情况下,CPU执行内部Flash中的指令(EA接Vcc)。
P0端口作用RAM的地址/数据总线,P2端口中的3位也作为RAM的页地址。
访问外部RAM期间,CPU根据需要发送RD和WR信号。
外部数据存储器的寻址空间可达64KB。
外部数据存储器的地址可以是8位或16位的。
使用8位地址时,要连同另外一条或几条I/O线作为RAM的页地址,如图1-7所示。
这时P2的部分引线可作为为通用的I/O线。
若采用16位地址,则由P2端口传送高8位地址。
内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。
高于7FH的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。
这样,在图1-8中,虽然高128字节区与专用寄存器,即特殊功能寄存器(SFR)区的地址是重合的(80H~FFH),但实际上它们是分开的。
究竟访问哪一区,是通过不同的寻址方式加以区分的。
访问高128字节区时,采用间接寻址方式;访问SFR区时,采用直接寻址方式;访问低128字节区时,两种寻址方式都可采用。
图1-8内部数据存储器的结构
低128字节区的分配情况如图1-9所示。
最低32个单元(00H~1FH)是4个通用工作寄存器组。
每个寄存器组含有8个8为寄存器,编号为R0~R7。
专用寄存器PSW(程序状态字)中有2位(PS0,RS1)用来确定采用哪一个工作寄存器组。
这种结构能够更有效地使用指令空间,因为寄存器指令比直接寻址指令更短。
图1-9内部RAM的低128字节区
工作寄存器组上面的16个单元(20H~2FH)构成了布尔处理机的存储器空间。
这16个单元的128位各自都有专门的位地址,如图1-10所示,它们可以被直接寻址,这些位地址是00H~7FH。
在89系列单片机的指令系统中,还包括了许多位操作指令,这些位操作指令可直接对这128位寻址。
图1-10内部RAM中可寻址位的地址
低128字节区中的所以单元都既可通过直接寻址方式访问,又可通过间接寻址方式访问,又可通过间接寻址方式访问。
而高128字节区则只能通过间接寻址方式来访问。
仅在带有256字节RAM的单片机中才有高128字节区。
专用寄存器即特殊功能寄存器(SFR)区的分配情况如图1-11所示。
这些专用寄存器包括端口锁存器(P0/P1/P2/P3)、程序状态字(PSW)、定时/计数器方式控制(TMOD)、定时/计数器控制(TCON)、定时/计数器(THx/TLx)、累加器(ACC/B)、栈指针(SP),以及其他控制寄存器等等。
专用寄存器只能通过直接寻址方式来访问。
通常,在所有ATMEL单片机的专用寄存器(SFR)区中,寄存器的分配情况是相同的。
图1-11特殊功能寄存器(SFR)区的分配及其复位值
专用寄存器区中有一些单元是即可字节寻址又可位寻址的(见图1-11)。
凡是地址以“0”和“8”结尾(能被8整除)的单元都是可位寻地址的,地址的范围是80H~FFH。
以下各讲中讲到的单片机都是指AT89S52单片机。
知识点
对40脚PDIP封装的AT89S52来说,P0口对应管脚号是[39]到[32];P1口对应管脚号是[1]到[8];P2口对应管脚号是[21]到[28];P3口对应管脚号是[10]到[17]。
管脚的第2功能:
P1.0----T2时钟输出,P1.1----T2EX,P1.5----MOSI用于在系统编程,P1.6----MISO用于在系统编程,P1.7----SCK用于在系统编程;P3.0----串行输入口RXD,P3.1----串行输出口TXD,P3.2----外部中断0(INT0),P3.3----外部中断1(INT1),P3.4----定时器0外部输入(T0),P3.5----定时器1外部输入(T1)。
中断矢量地址:
3H,定时器0溢出----000BH,外部中断1地址----0013H,定时器1溢出----001BH,串行口中断----0023H,定时器2溢出----002BH。
内部RAM可直接寻址的字节地址及位地址,图1-10。
特殊功能寄存器的字节地址及其复位值,图1-11。