单片机并行接口扩展技术第二章文档Word格式文档下载.docx
- 文档编号:19013968
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:21
- 大小:384.48KB
单片机并行接口扩展技术第二章文档Word格式文档下载.docx
《单片机并行接口扩展技术第二章文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机并行接口扩展技术第二章文档Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
在CPU内部协调各寄存器之间的数据传送,完成ALU的各种算术或逻辑运算操作;
在CPU访问外部存储器或端口时,提供地址锁存信号ALE、外部程序存贮器选通信号PSEN以及读(/RD)、写(/WR)等控制信号。
(3)寄存器。
CPU中还有一些寄存器,如累加器(ACC)、程序状态字(PSW)、B寄存器、程序计数器PC、堆栈指针(SP)、指令寄存器(IR)等,这些寄存器有的在片内特殊功能寄存器空间有地址映像,它们既可看作CPU的寄存器,也可看作具有确定单元的存储单元。
•
累加器ACC(Accumulator)。
ACC是一个8位的寄存器,也是CPU中最重要、最繁忙的寄存器,许多运算中的数据和结果都要经过累加器。
程序状态字PSW(ProgramStatusWord)。
PSW是一个8位的寄存器,用于存放程序运行结果的一些特征,本书拟在特殊功能寄存器一节详细介绍。
B寄存器。
B寄存器主要是和ACC配合完成乖法和除法运算,存放运算结果,不进行乖、除运算时,B寄存器可作为RAM使用。
程序计数器PC。
程序计数器PC用来存放即将执行的指令地址。
它是一个独立的16位寄存器,没有内存映射单元,总是指向将要执行的指令的地址,并具有内容自动加l功能。
堆栈指针SP(StackPointer)。
为一个指向堆栈顶部的指针,当执行子程序调用或中断服务程序时,需要将下一条要执行的指令地址即PC值压入堆栈保存起来,当子程序或中断返回时,再将SP指向单元的内容回送到程序计数器PC中。
这是一个很重要的指针。
指令寄存器IR(InstructionRegister)。
指令寄存器的功能是存放指令代码,CPU执行指令时,由程序存储器中读取指令代码送入指令寄存器,经译码器译码后,由定时与控制部分发出相应的控制信号,以完成指令功能,它也没有内存映射单元。
(4)布尔(位)处理器。
除对字节(Byte)进行操作外,AT89S51单片机借用PSW中的C可以直接对位(Bit)进行操作,在进行位操作时,C就类似进行字节操作的ACC用作数据源或存放结果。
通过位操作指令可以实现置位、清零、取反以及位逻辑运算等操作。
2.3AT89S51单片机系统的存贮器组织
单片机系统中,存放程序的存储器称为程序存储器,类似与通用计算机系统中的ROM,只能进行读操作,存放数据的存储器称为数据存储器,相当于通用计算机系统中的RAM。
与通用计算机系统不同,单片机系统中的程序存储器和数据存储器都有各自的读信号(PSEN、/RD),换言之,单片机系统的存储器可以分成两个物理存储器,即程序存储器和数据存储器,它们的范围都是64KB。
3)RAM区。
30H~7FH共80个字节称为RAM区,RAM区一般作为普通的数据缓冲区和堆栈区使用。
(2)专用功能寄存器区。
专用功能寄存器(SFR)也称为特殊功能寄存器,主要用于控制、管理单片机内部各种部件如算术逻辑部件、I/O口、串行口(UART)、定时/计数器、中断系统等功能模块的工作,用户通过编程专用功能寄存器设定对应模块的工作方式。
各专用功能寄存器名称、符号、地址以及复位值如表2.3所示:
AT89S51单片机共有22个专用功能寄存器,各专用功能寄存器和RAM统一编址,离散地分布在80H~0FFH之间,访问这些专用寄存器仅允许使用直接寻址方式,对80H~FFH之间未定义的单元进行读操作时,将得到一个随机数,写操作无任何意义。
专用功能寄存器中,如果字节地址末位是0或8,则该寄存器还可进行位寻址。
AT89S51单片机共有256个可寻址的位,前128个(位地址00H~7FH)位于字节地址20H~2FH中,如表2.2所示,后128个(位地址80H~8FH)位于SFR中,如表2.4所示:
1)累加器ACC和B寄存器在2.2节已经介绍过,这里不再赘述。
2)程序状态字寄存器(PSW)。
PSW是8位寄存器,用于反映操作或运算结果的状态,字节地址为0D0H,是一个可进行位寻址的寄存器,各位具体定义如表2.5所示:
P:
奇偶标志(Parityflag)。
如果ACC中有奇数个1,则P为l,否则P为0。
OV:
溢出标志(Overflowflag)。
有符号数运算时,如果发生溢出,则OV被置l,否则清0。
对于有符号数,如果用最高位表示符号,则一个字节能表示的数的范围为-128~+127。
如果运算结果超出了这个数值范围,就会发生溢出,此时,OV被置l;
在乘法运算中,如果乘积超过255,则OV被置l;
在除法运算中,除数为0时,OV被置l。
RS1、RS0:
工作寄存器组选择位(RegisterbankSelectcontrolbits),当前工作寄存器组的选择如表2.6所示。
用户可以用软件改变RS1和RS0的值以切换当前选用的工作寄存器组。
单片机在复位时,RS1、RS0均为0,故复位启动后,当前工作寄存器的缺省选择为第0组。
F0:
用户标志。
由用户置位或复位。
PSW.1为保留位(Reserved)。
AC:
辅助进位标志(AuxiliaryCarryflag)。
AC主要用于BCD码运算,当进行加法(或减法)运算时,如果低半字节(D3)向高半字节(D4)有进位(或借位),则AC置1,否则清0。
C:
进位标志(Carryflag)。
在进行加法(或减法)运算时,如果操作结果的最高位(D7)有进位,则C置1,否则清0。
在进行位操作时,C作为操作位累加器。
3)堆栈指针寄存器(SP,StackPointerregister)。
堆栈指针寄存器是一个8位专用功能寄存器,主要用于指示堆栈顶部在RAM中的位置。
堆栈是向上生成的,即当执行PUSH或ALL指令时,SP的值就会增加。
系统复位后,SP被初始化为07H,堆栈实际上是从08H单元开始的,考虑到08H~1FH为工作寄存器区,20H~2FH为位寻址区,程序可能会用到这些区域,所以,程序初始时最好把SP初值设为2FH以后的位置如60H单元。
在使用堆栈时要注意,堆栈一般设置在RAM的顶部,由于堆栈减少了内部RAM的可利用单元,不能设得太低,但也不能设得太高,如果在压栈过程中,SP超过07FH(对于AT89S51单片机),就会引起程序运行出错,这是单片机初学者常犯的错误之一。
4)数据指针(DataPointer)。
AT89S51单片机有两个数据指针寄存器,即DPTR0、DPTR1,它们都是16位寄存器,主要用于访问外部64KB数据存储器时存放地址。
它们也可以分别作为两个8位的寄存器DPLx和DPHx(x=0,1)使用。
5)P0、P1、P2和P3。
P0、P1、P2、P3分别为单片机P0~P3口的锁存器。
6)串行数据缓冲寄存器(SBUF,SerialDataBufferregister)。
SBUF实际上是两个独立的寄存器,即发送数据缓冲寄存器和接收数据缓冲寄存器,两个寄存器共用一个地址(SBUF),当发送数据时,数据被送往发送数据缓冲寄存器;
当接收数据时,接收到的数据被送往接收数据缓冲寄存器。
7)TH0、TL0、TH1和TL1。
单片机有2个16位的定时/计数器,即T0和T1,TH0、TL0和TH1、TL1分别为T0和T1计数寄存器的高8位和低8位。
8)IP、IE、TMOD、TCON、SCON和PCON。
这些SFR包含了单片机的中断系统、定时/计数器以及串行口等部件的工作方式和状态位,详解见第四章。
9)辅助寄存器AUXR(AuxiliaryRegister)。
AUXR的地址为08EH,各位功能如表2.7所示:
DISALE:
禁止或允许(Disable/Enable)ALE信号。
为1时,仅当执行MOVX和MOXC指令时,ALE才激活(出现);
为0时,ALE信号始终以振荡器1/6的频率出现在单片机的ALE引脚上。
DISRTO:
禁止或允许WDT溢出时的复位输出(Disable/EnableReset-out)。
为1时,单片机的复位引脚仅用于输入;
为0时,在WDT溢出后,单片机的复位引脚输出一个高电平脉冲。
WDIDLE:
在空闲模式下禁止或允许WDT的计数器计数。
为1时,空闲模式时WDT的计数停止计数;
为0时,空闲模式时WDT的计数器继续计数。
“—”保留位,用于扩展。
系统复位后,AUXR的值为:
xxx00xx0,即复位后,单片机系统缺省的状态是:
ALE信号始终出现在单片机的ALE引脚;
WDT溢出后,单片机的复位引脚输出一个宽度为98个机器周期的高电平脉冲;
空闲模式时WDT的计数器继续计数。
10)辅助寄存器AUXR1(AuxiliaryRegister1)。
AUXR1的地址为0A2H,各位功能如表2.8所示:
•
DPS:
数据指针寄存器选择(DataPointerRegisterSelect)。
为1时,选择
DP1L和DP1H为当前DPTR;
为0时,选择DP0L和DP0H为当前DPTR;
系统复位后,DPS为0,即选择DP0L和DP0H为当前DPTR。
11)WDTRST:
看门狗定时器复位(WatchdogTimerReset)专用功能寄存器。
单片机系统在正常工作时,CPU常会受到各种干扰,使程序陷入死循环或跑飞状态,看门狗定时器(WDT,WatchdogTimer)是一种能使程序自动恢复到正常的运行状态的有效方法。
AT89S51单片机内部包含了一个WDT,它包含了一个14位的计数器和一个看门狗定时器复位(WDTRST)SFR,WDTRST的地址为0A6H。
当WDT使能后,只要振荡器在工作,每个机器周期都会使WDT计数器的值加1。
WDT的工作原理如下:
正常情况下,程序周期性地在WDT计数器的值到达3FFFH之前对其进行清0,如果CPU受到干扰使程序进入非正常运行状态,这种清零操作将不再被执行,当WDT的计数器的值到达3FFFH时,便产生溢出,引起单片机复位,在单片机的RST引脚上输出一宽度为98个振荡周期的正脉冲,同时,置PC的值为0000H,程序从头开始重新执行,恢复到正常的运行状态。
单片机上电复位后,WDT的缺省状态是禁止,为了使能WDT,用户必须按顺序依次向WDTRST写入1EH和0E1H两字节数据。
WDT一旦使能,将无法通过软件禁止,用户必须在最长16383个机器周期时间内对WDT的计数器清0,计数器清0操作同使能WDT一样,也是按顺序依次向WDTRST写入1EH和0E1H两字节数据,换言之,每次按顺序依次向WDTRST写入1EH和0E1H两字节数据后,WDT计数器都从0重新开始计数。
WDTRST是一个只写寄存器,而WDT的计数器既不能读,也不能写。
当单片机工作在掉电模式(Power-downmode)时,振荡器停止,这时WDT的计数器也停止计数,用户程序可以不再对其进行清0操作。
硬件复位和低电平触发的外部中断都可以使单片机退出掉电模式。
如果是硬件复位退出掉电模式,以后对WDT操作和正常系统复位时的操作完全相同;
如果是低电平中断引起退出掉电模式,则要求引起中断的低电平信号要有足够的宽度,以保证振荡器在低电平期间能进入稳定的工作状态。
为了避免在中断信号为低电平期间,WDT引起复位,WDT计数器在中断信号变成高电平后才开始计数。
一般情况下,进入中断服务程序时,要对WDT的计数器清0。
为了避免在刚退出掉电模式的几个机器周期内产生复位,最好在进入掉电模式前,先对WDT的计数器执行一次清0操作。
SFRAUXR中的WDIDLE位决定了空闲(IDLEmode)模式时WDT的计数器是否继续计数,若WDIDLE为0(缺省值),则在空闲模式时,WDT的计数器会继续计数,为了避免在空闲模式时,WDT引起AT89S51单片机复位,用户程序总是设置一个定时器,周期性地退出空闲模式,对WDT的计数器清0,然后,再进入空闲模式。
当WDIDLE为1时,在空闲模式,WDT的计数器停止计数,退出空闲模式时,WDT的计数器恢复计数。
(3)外部数据存储器。
当内部RAM不够用,就需要扩展外部数据存储器,原则最大可扩展64KB。
按照访问方式的不同,外部数据存储器也可分成二块,最低的256字节(0000H~00FFH)既通过DPTR寻址,也可能通过R0和R1间接寻址,而0100H~0FFFFH只能通过DPTR间接寻址。
实际使用中,可以通过分页技术使外部数据存储器的容量远远超过64KB;
另一种方法是使用非并行接口的存储器芯片,如使用I2C接口的存储器芯片或SPI接口的存储器芯片,可使数据存储器的容量扩至数百兆。
单片机的外部数据存储器和端口是统一编址的,也就是说,如果某一个单元作了端口,就不能再作为存储器单元,反之,如果某一个单元作为存储器单元,就不能再作为端口。
2.4AT89S51单片机引脚及功能
AT89S51单片机有4种封装形式,分别为40-leadPDIP、44-leadPLCC、40-leadTQFP和42-leadPDIP,其中40脚PDIP封装的引脚分布如图2.5所示,引脚描述如下:
(1)电源引脚(2条,VCC、GND)
VCC(40Pin)接+5V电源;
GND(20Pin)接地。
(2)外接晶体引脚(2条,XTAL1、XTAL2)
XTAL1(19Pin)外接石英晶体和微调电容,在单片机内部,它是构成片内振荡器的反相放大器输入端。
当采用外部振荡器时,此引脚接地。
XTAL2(18Pin):
外接石英晶体和微调电容的另一端,在单片机内部,它接至片内振荡器的反相放大器输出端。
当采用外部振荡器时,该引脚接收外部振
荡器信号,即外部振荡器通过XTAL2被送到单片机内部的时钟发生器输入端。
(3)控制类引脚(4条,RST、ALE、/EA和/PSEN)
RST(9Pin)复位信号(Reset)引脚。
RST为输入引脚,当振荡器在运行时,该引脚上出现两个机器周期以上的高电平,即可引起单片机复位,复位一般有两种,即上电或手动复位以及WDT超时复位。
如果DISRTO允许复位输出,则当WDT引起复位时,会在RST引输出一个宽度为98个机器周期的正脉冲。
ALE(30Pin)地址锁存允许信号(AddressLatchEnable)。
ALE是输出信号引脚,用于锁存访问外部数据存储器时的低8位地址。
在正常情况下,ALE信号总以固定频率(振荡器频率的1/6)周期地出现,可用作对外定时或为其它芯片提供时钟,每当访问外部数据存储器时,将会丢失一个ALE脉冲。
如果需要,ALE信号也可通过设置SRF(8EH)位而被禁止。
/EA(30Pin)外部存取允许(ExternalAccessEnable)信号。
/EA为输入信号引脚,当使用外部程序存储器时,即希望程序从外部程序存储器的0000H开始执行程序时,/EA必须接GND;
当/EA为高电平时,单片机复位后,将从内部Flash的0000H开始取指。
当需要对单片机内部Flash编程时,该引脚(/PROG)也接收12V的编程电压。
/PSEN(29Pin):
外部程序存储器“读”选通信号,在访问外部程序存储器期间,每个机器周期,该信号两次有效,但当访问外部数据存储器时,这两次有效的/PSEN信号将不会出现。
(4)I/O端口引脚(32条,P0、P1、P2、P3)
AT89S51单片机共有4个并行I/O端口,每个端口是8位双向端口
,共32条引脚。
每个端口的结构基本相同,即都包含有锁存器,输出驱动和输入缓冲,但在对输出的控制上有很大差别,因此,在功能和用途上各不相同,在没有外扩程序或数据存储器系统中,这四个端口的每一位都可作为I/O口使用。
1)P0口。
P0口是一个8位漏极开路的双向I/O口,P0.x的结构如图2.6所示。
V1、V2构成输出驱动器,与门3、反向器4以及多路模拟开关MUX构成输出控制电路,三态门1、2组成输入缓冲器。
P0口有两种功能,即地址/数据分时复用总线和I/O接口。
当单片机系统有外接存储器时,P0口用作地址/数据分时复用总线。
当需要输出地址信息时,控制信号为“1”,CPU控制多路开关MUX使
AC相接,地址信息经过反向器4到达P0口引脚;
当需要输出数据时,控制信号为“0”,CPU控制多路开关MUX使AB相接,数据经过锁存器的/Q端到达P0口引脚;
当需要从P0口引脚输入数据时,控制信号仍为“0”,CPU会自动先向锁存器写1,使/Q端为低电平,从而V1截止,引脚上的输入信号经缓冲器1进入内部数据总
线。
当单片机系统没有外扩存储器时,P0口可作为准双向I/O口使用,这时,控制信号为“0”,V2截止,需要外接上拉电阻。
2)P1口。
P1口8位双向I/O端口,内含有上拉电阻。
P1口的结构如图2.7所示。
输出数据时(即写数据到引脚),数据被写到P1口的锁存器,若写的数据为“1”,则锁存器的/Q端为低电平,V截止,P1.x引脚为高电平;
反之,若写的数据为“0”,则锁存器的/Q端为高电平,V导通,P1.x引脚为低电平。
输入数据时(即读引脚数据),必须先向锁存器写“1”,使V截止,引脚数据经过缓冲器1进入内部数据总线。
如果读引脚时,锁存器的Q端为“0”,则V导通,读到的信息永远为“0”。
单片机复位后,P1口锁存器的值为0FFH。
另外,在进行串行Flash编程和校验操作时,P1.5(MOSI)、P1.6(MISO)、P1.7(SCK)分别是串行数据输入、输出和移位脉冲引脚。
3)P2口。
P2口具有内部上拉的电阻的准8位双向I/O口,结构如图2.8所示。
它有两种功能,当系统有外部存储器时,P2口用作地址总线,提供高8位地址(A15~A8),这时控制信号为“1”,MUX的AC相接,地址信号经过缓冲器3到达P2.x当系统没有外部存储器,P2可作为通用的I/O口使用,
工作原理与P1口相同。
4)P3口。
P3口也是具有内部上拉的电阻的准8位双向I/O口,P3口的每条线都有两种功能,即作为I/O和第二功能。
结构如图2.9所示。
P3口用作输出时,数据由锁存器的Q端经与非门3和反相器到达P3.x;
输入数据时,锁存器的Q端必须为高电平,V管截止,数据信号从P3.x经缓冲器4和1最后进入内部数据总线。
P3口的每条线都有第二功能,如表2.9所示。
P3口作为第二功能使用时,其锁存器的Q端必须为高电平,否则,若Q为低电平,则与非门3将输出高电平,使V管导通,第二功能输入时,P3.x被钳成低电平,使得第二功能输入信号恒为低电平;
第二功能输出时,若Q为“0”,则与非门3的输出恒为高电平,V管导通,P3.x恒为低电平。
P0、P1、P2、P3口可总结如下:
从结构上讲,每个端口均有锁存器、输出驱动和输入缓冲等组成
P1、P2、P3口内部均有上拉电阻,当它们用作通用输入口(即读引脚状态)时,对应位的锁存器Q端必须先置为“1”;
P0口内部无上拉电阻,作为I/O口使用时,必须外接上拉电阻,读引脚时,对应的锁存器也必须先置“1”。
当系统有外部存储器时,P0一般分时用作地址/数据总线,P2用作高8位地址总线,P3口的P3.7和P3.6负责提供外部数据存储器的读、写信号;
当系统没有外部存储器时,P0、P1、P2、P3均可用作I/O口。
2.5AT89S51的时钟电路
单片机系统中的各个部件是在一个统一的时钟脉冲控制下有序地进行工作,时钟电路是单片机系统最基本、最重要的电路。
2.5.1时钟电路
AT89S51单片机内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,如果在引脚XTAL1和XTAL2两端跨接上晶体振荡器(晶振)或陶瓷振荡器就构成了稳定的自激振荡电路,该振荡器电路的输出可直接送入内部时序电路。
AT89S51单片机的时钟可由两种方式产生,即内部时钟方式和外部时钟方式。
(1)内部时钟方式。
内部时钟方式即是由单片机内部的高增益反相放大器和外部跨接的晶振、微调电容构成时钟电路产生时钟的方法,其工作原理如图2.10(a)所示。
外接晶振(陶瓷振荡器)时,C1、C2的值通常选择为30pF(40pF)左右;
C1、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2MHz~12MHz之间选择。
为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚XTALl和XTAL2靠近。
由于内部时钟方式外部电路接线简单,单片机应用系统中大多采用这种方式。
内部时钟方式产生的时钟信号的频率就是晶振的固有频率,常用fsoc来表示。
如选择12MHz晶振,则fsoc=12×
106Hz。
(2)外部时钟方式。
外部时钟方式即完全用单片机外部电路产生时钟的方法,外部电路产生的时钟信号被直接接到单片机的XTAL1引,此时XTAL2开路,具体电路如图2.10(b)所示。
2.5.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 并行 接口 扩展 技术 第二 文档