《STC89C52单片机硬件结构(1).ppt》由会员分享,可在线阅读,更多相关《STC89C52单片机硬件结构(1).ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Tankertanker DesignTankertanker DesignSTC89C52RC单片机有如下功能部件和特性:1.增强型6时钟/机器周期和12时钟/机器周期任意设置。2.指令代码完全兼容传统80513.工作电压:5.53.4V(5V单片机)/2.03.8V(3V单片机)。4.工作频率:040MHz,相当于普通8051单片机的080MHz,实际工作频率可达48MHz。5.用户应用程序空间:8KB片内Flash程序存储器,擦写次数10万次以上。6.片上集成512B RAM数据存储器。Tankertanker Design7.通用I/O口(35/39个),复位后为:P1、P2、P3、P
2、4是准双向口/弱上拉(与普通MCS-51传统I/O口功能一样);P0口是开漏输出口,作为总线扩展时用,不用加上拉电阻;P0口作为I/O口用时,需加上拉电阻。8.ISP在系统可编程/IAP在应用可编程,无需专用编程器/仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,8KB程序3s即可完成一片。9.芯片内置EEPROM功能。10.硬件看门狗(WDT)。11.内部集成MAX810专用复位电路(HD版本和90C版本才有),外部晶体20M以下时,可不需要外部复位电路。Tankertanker Design12.共3个16位定时器/计数器,兼容普通MCS-51单片机的定时器,其中
3、定时器T0还可以当成2个8位定时器使用。13.外部中断4路,下降沿中断或低电平触发中断,掉电模式可由外部中断低电平触发中断方式唤醒。14.通用异步串行口(UART),还可用定时器软件实现多个UART。15.工作温度范围:075(商业级)/4085(工业级)。16.封装形式有:LQFP-44、PDIP-40、PLCC-44、PQFP-44。由于LQFP-44具有体积小、扩展了P4口、外部中断2和3及定时器T2的功能。PDIP-40的封装与传统的89C52芯片兼容。Tankertanker Design除此之外,STC89C52RC单片机自身还有很多独特的优点:1.加密性强,无法解密。2.超强抗干
4、扰。主要表现在:高抗静电(ESD保护),可以轻松抗御2KV/4KV快速脉冲干扰(EFT测试),宽电压、不怕电源抖动,宽温度范围为4085,I/O口经过特殊处理,单片机内部的电源供电系统、时钟电路、复位电路及看门狗电路经过特殊处理。3.采用三大降低单片机时钟对外部电磁辐射的措施:禁止ALE输出;如选6时钟/机器周期,外部时钟频率可降一半;单片机时钟振荡器增益可设为1/2gain。4.超低功耗:掉电模式,典型电流损耗0.1A;空闲模式,典型电流损耗为2mA;正常工作模式,典型电流损耗4mA7mA。Tankertanker DesignSTC89C52RC单片机的工作模式有如下几种:1.掉电模式:R
5、AM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,中断返回后,继续执行原程序。典型功耗0.1A。2.空闲模式:CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。典型功耗2mA。3.正常工作模式:单片机正常执行程序的工作模式,典型功耗4mA7mA。Tankertanker Design 选用STC89C52系列单片机的一个主要原因: 由于这种单片机可以利用全双工异步串行口(P3.0/P3.1)进行在系统编程(ISP),即无需专用编程器/仿真器,就可通过串口直接下载用户程序,因此省却了每次编程必须插拔单片机到专用编程器上的麻烦,可以直接将STC单片机固定
6、焊接在PCB板上,进行程序的下载调试。Tankertanker Design STC89系列单片机大部分具有在系统可编程(ISP)特性,ISP的好处就是省去购买通用编程器,单片机在用户系统上即可下载/烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小了新产品由于软件缺陷带来的风险。由于可以将程序直接下载进单片机看运行结果也可以不用仿真器。STC单片机在线编程典型线路如图4-2所示。Tankertanker Design大部分STC89系列单片机在销售给用户之前已在单片机内部固
7、化有ISP系统引导程序,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,故无须编程器(速度比通用编程器快)。注意:不要用通用编程器编程,否则有可能将单片机内部已固化的ISP系统引导程序擦除,造成无法使用STC提供的ISP软件下载用户的程序代码。Tankertanker Design4.2 STC89C52单片机的外部引脚及功能单片机的外部引脚及功能 STC89C52目前有LQFP44、PQFP44、PDIP40、PLCC44等封装形式,并且不同版本的引脚也不同,图4- 3所示为各封装形式的HD版本和90C版本的引脚图。图图4- 3 3(a)PDIP40的的HD版本引脚图版本引脚图 图
8、图4-3(b)PDIP40的的90C版本引脚版本引脚图图Tankertanker Design图图4-3(c)LQFP44的的HD版本引脚图版本引脚图 图图4-3(d)LQFP44的的90C版本引脚版本引脚图图Tankertanker Design图图4-3(e)PLCC44的的HD版本引脚图版本引脚图 图图4-3(f)PLCC44的的90C版本引脚图版本引脚图Tankertanker Design STC89C52RC单片机的HD版本和90C版本的区别是:HD版本有ALE引脚,无P4.6/P4.5/P4.4口。而90C版本无PSEN、EA管脚,有P4.4和P4.6引脚;90C版本的ALE/P
9、4.5管脚既可作I/O口P4.5使用,也可被复用作ALE引脚使用,默认是作为ALE管脚。如需作为P4.5口使用时,只能选择90C版本的单片机,且需在烧录用户程序时在STC-ISP编程器中将ALE pin选择为用作P4.5,在烧录用户程序时在STC-ISP编程器中该管脚默认作ALE pin,具体设置如图4- 4所示。Tankertanker DesignSTC89C52RC单片机有5个端口P0、P1、P2、P3、P4,其中P4端口在LQFP44、PQFP44、PLCC44等封装形式中才有,其它有很多引脚和控制信号共用引脚。下面就各引脚进行说明。1. P0口引脚 P0.0P0.7:P0口即可作为输
10、入/输出口,也可作为地址/数据复用总线使用。当P0口作为输入/输出口时,P0是一个8位准双向口,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/O口必须外接10K4.7K的上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线A0-A7和数据线D0-D7共用,此时无需外接上拉电阻。Tankertanker Design2. P1口引脚P1.0P1.7:P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉
11、低的引脚会输出一个电流。其中,P1.0和P1.1还可以作为定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见表4- 1。引脚号功能特性P1.0T2(定时/计数器2外部计数输入),时钟输出P1.1T2EX(定时器/计数器2捕获/重装触发和方向控制)Tankertanker Design3. P2口引脚P2.0P2.7:P2口内部带上拉电阻的8位双向I/O端口。即可作为输入/输出口,也可作为高8位地址总线使用(A8-A15)。当P2口作为输入/输出口时,P2是一个8位准双向口。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOV
12、X DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2口引脚上的内容就是专用寄存器SFR区中的P2寄存器的内容,在整个访问期间不会改变。Tankertanker Design4. P3口引脚P3.0P3.7:P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,还有其他一些复用功能,如表4- 2所示。引脚号
13、复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2 INT0 (外部中断0)P3.3 INT1 (外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)Tankertanker Design6. 电源与时钟引脚(1) VCC:电源正极(2) Gnd:电源负极,接地(3) XTAL1:片内振荡器反相放大器和时钟发生器电路输入端。用片内振荡器时,该脚接外部石英晶体和微调电容。外接时钟源时,该脚接外部时钟振荡器的信号。(4) XTAL2:片内振荡器反相放大器的输出端。当使用片内振
14、荡器,该脚连接外部石英晶体和微调电容。当使用外部时钟源时,本脚悬空。 RST:复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平为有效。Tankertanker Design4.3 STC89C52单片机存储器结构单片机存储器结构STC89C52RC存储器的结构特点之一是将程序存储器和数据存储器分开(哈佛结构),并有各自的访问指令。STC89C52RC系列单片机除可以访问片上Flash存储器外,还可以访问
15、64KB的外部程序存储器。STC89C52RC系列单片机内部有512字节的数据存储器,其在物理和逻辑上都分为两个地址空间:内部RAM(256字节)和内部扩展RAM(256字节),另外还可以访问在片外扩展的64KB外部数据存储器。Tankertanker Design4.3.1 STC89C52单片机程序存储器单片机程序存储器存放程序和表格之类的固定常数。片内为8KB的Flash,地址为0000H1FFFH。16位地址线,可外扩的程序存储器空间最大为64KB,地址为0000HFFFFH。使用时应注意以下问题:(1)分为片内和片外两部分,访问片内的还是片外的程序存储器,由 EA 引脚电平确定。 E
16、A=1时,CPU从片内0000H开始取指令,当PC值没有超出1FFFH时,只访问片内Flash存储器,当PC值超出1FFFH自动转向读片外程序存储器空间2000HFFFFH内的程序。 EA=0时,只能执行片外程序存储器(0000HFFFFH)中的程序,不理会片内8KB Flash存储器。Tankertanker Design(2)程序存储器某些固定单元用于各中断源中断服务程序入口。STC89C52复位后,程序存储器地址指针PC的内容为0000H,于是程序从程序存储器的0000H开始执行,一般在这个单元存放一条跳转指令,跳向主程序的入口地址。除此之外,64KB程序存储器空间中有8个特殊单元分别对
17、应于8个中断源的中断入口地址,见表4- 3。通常这8个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。因为两个中断入口间的间隔仅有8个单元,一般不够存放中断服务子程序。Tankertanker Design中断源中断向量地址0003HT0000BH0013HT1T1001BHUARTUART0023HT2002BH0033H003BH表表4- 3 程序程序存储存储器空器空间的间的8个中个中断入断入口地口地址址Tankertanker Design4.3.2 STC89C52单片机数据存储器STC89C52RC系列单片机内部集成了512字节RAM,可用于存放
18、程序执行的中间结果和过程数据。内部数据存储器在物理和逻辑上都分为两个地址空间:内部RAM(256字节)和内部扩展RAM(256字节)。此外,还可以访问在片外扩展的64KB数据存储器。STC89C52RC系列单片机的存储器分布如图4- 5所示。(特别说明:图中阴影部分的访问是由辅助寄存器AUXR(地址为8EH)的第EXTRAM位来设置,这部分在物理上是内部RAM,逻辑上占用外部RAM地址空间)Tankertanker DesignTankertanker Design1. 片内数据存储器:传统的89C52单片机的内部RAM只有256字节的空间可供使用,在此情况下STC公司响应广大用户的呼声,在一
19、些单片机内部增加了RAM。STC89C52RC系列单片机内部扩展了256个字节RAM。于是STC89C52RC单片机内部512字节的RAM有3个部分:(1)低128字节(00H-7FH)内部RAM;(2)高128字节(80H-FFH)内部RAM;(3)内部扩展的256字节RAM空间(00H-FFH)。下面分别作出说明:Tankertanker Design(1)低128字节(00H-7FH)的空间即可以直接寻址也可间接寻址,内部低128字节RAM又可分为:工作寄存器组0(00H-07H)8字节、工作寄存器组1(08H-0FH)8字节、工作寄存器组2(10H-17H)8字节、工作寄存器组3(18
20、H-1FH)8字节、可位寻址区(20H-2FH)16字节、用户RAM和堆栈区(30H-7FH)80字节;(2)高128字节(80H-FFH)的空间和特殊功能寄存器区SFR的地址空间(80H-FFH)貌似共用相同的地址范围,但物理上是独立的,使用时通过不同的寻址方式加以区分:高128字节只能间接寻址,而特殊功能寄存器区SFR只能直接寻址。(3)内部扩展RAM,在物理上是内部,但逻辑上是占用外部数据存储器的部分空间,需要用MOVX来访问。内部扩展RAM是否可以被访问是由辅助寄存器AUXR(地址为8EH)的第EXTRAM位来设置。关于扩展RAM的管理将在第4.3.3节的AUXR特殊功能寄存器部分详细
21、介绍。Tankertanker Design2.片外数据存储区当片内RAM不够用时,需外扩数据存储器,STC89C52最多可外扩64KB的RAM。注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低256字节的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。另外说明下,只有在访问真正的外部数据存储器期间,WR或RD信号才有效。但当MOVX指令访问物理上在内部,逻辑上在外部的片内扩展RAM时,这些信号将被忽略。Tankertanker Design4.3.3 STC89C52单片机特殊功能寄存器STC89C52中的CPU对片内各功能部件的控制是采用特殊功能寄
22、存器集中控制方式。特殊功能寄存器SFR的单元地址映射在片内RAM的80H-FFH区域中,离散地分布在该区域,其中字节地址以0H或8H结尾的特殊功能寄存器可以进行位操作。Tankertanker Design表表4- 4 单片机内核特殊功能寄存器单片机内核特殊功能寄存器序号符号功能介绍字节地址位地址复位值1ACC累加器E0HE7-E0HE7-E0H0000 00002BB寄存器F0HF7-F0HF7-F0H0000 00003PSW程序状态字寄存器D0HD7-D0HD7-D0H0000 00004SP堆栈指针81H0000 01115DP0L 数据地址指针DPTR0低8位82H0000 0000
23、6DP0H 数据地址指针DPTR0高8位83H0000 00007DP1L 数据地址指针DPTR1低8位84H8DP1H 数据地址指针DPTR1高8位85HTankertanker Design表表4- 5 单片机系统管理特殊功能寄存器单片机系统管理特殊功能寄存器序号符号功能介绍字节地址位地址复位值1PCON电源控制寄存器87H0 xx1 00002AUXR辅助寄存器8EHxxxx xx003AUXR1辅助寄存器1A2Hxxxx 0 xx0Tankertanker Design表表4- 6 单片机中断管理特殊功能寄存器单片机中断管理特殊功能寄存器序号符号功能介绍字节地址位地址复位值1IE中断允
24、许控制寄存器A8HAFH-A8HAFH-A8H0000 00002IP低中断优先级控制寄存器B8HBFH-B8HBFH-B8Hxx00 00003IPH高中断优先级控制寄存器B7H0000 00004TCONT0、T1定时器/计数器控制寄存器88H8FH-88H8FH-88H0000 00005SCON串行口控制寄存器98H9FH-98H9FH-98H0000 00006T2CON T2定时器/计数器控制寄存器C8HCFH-C8HCFH-C8H0000 00007XICON扩展中断控制寄存器C0HC7H-C0HC7H-C0H0000 0000Tankertanker Design表表4- 7
25、单片机单片机I/O口特殊功能寄存器口特殊功能寄存器序号符号功能介绍字节地址位地址复位值1P0P0口锁存器80H87H-80H87H-80H1111 11112P1P1口锁存器90H97H-90H97H-90H1111 11113P2P2口锁存器A0HA7H-A0HA7H-A0H1111 11114P3P3口锁存器B0HB7H-B0HB7H-B0H1111 11115P4P4口锁存器E8HE7H-E0HE7H-E0Hxxxx 1111Tankertanker Design表表4- 8 单片机串行口特殊功能寄存器单片机串行口特殊功能寄存器序号符号功能介绍字节地址位地址复位值1*SCON串行口控制寄
26、存器98H9FH-98H9FH-98H0000 00002SBUF串行口锁存器99Hxxxx xxxx3SADEN串行从机地址掩模寄存器B9H0000 00004SADDR 串行从机地址控制寄存器A9H0000 0000Tankertanker Design表表4- 9 单片机定时器特殊功能寄存器单片机定时器特殊功能寄存器序号符号功能介绍字节地址位地址复位值1*TCONT0、T1定时/计数控制寄存器88H8FH-88H8FH-88H0000 00002TMODT0、T1定时/计数方式控制寄存器89H0000 00003TL0定时器/计数器0(低8位)8AH0000 00004TH0定时器/计数
27、器0(低8位)8CH0000 00005TL1定时器/计数器1(高8位)8BH0000 00006TH1定时器/计数器1(高8位)8DH0000 00007*T2CON定时器/计数器2控制寄存器C8H0000 00008T2MOD定时器/计数器2模式寄存器C9Hxxxx xx009RCAP2L外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位CAH0000 000010RCAP2H外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位CBH0000 000011TL2定时器/计数器2(低8位)CCH0000 000012TH2定时器/计数器2(高8位)CDH0000 0000T
28、ankertanker Design表表4- 10 单片机看门狗特殊功能寄存器单片机看门狗特殊功能寄存器序号符号功能介绍字节地址位地址复位值1WDT_CONTR看门狗控制寄存器E1hxx00 0000Tankertanker Design表表4- 11 单片机单片机ISP/IAP特殊功能寄存器特殊功能寄存器序号符号功能介绍字节地址位地址复位值1ISP_DATAISP/IAP数据寄存器E2h1111 11112ISP_ADDRHISP/IAP 地址高8位E3h0000 00003ISP_ADDRL ISP/IAP 地址低8位E4h0000 00004ISP_CMDISP/IAP命令寄存器E5hx
29、xxx x0005ISP_TRIGISP/IAP 命令触发寄存器E6hxxxx xxxx6ISP_CONTR ISP/IAP 控制寄存器E7h000 x x000Tankertanker Design以下介绍部分特殊功能寄存器,其它各特殊功能寄存器的功能将在相应的章节介绍。1、AUXR 扩展RAM及ALE管理特殊功能寄存器(见表4- 12)(1)扩展RAM的管理由AUXR特殊功能寄存器的第EXTRAM位来设置。普通89C51/89C52系列单片机的内部RAM只有128(89C51)/256(89C52)供用户使用,而STC89C52RC系列单片机内部扩展了256字节的RAM。符号功能介绍字节地
30、址位地址复位值AUXR辅助寄存器8EHEXTRAMALEOFFxxxx xx00Tankertanker Design(2)当EXTRAM=0时,内部扩展RAM可存取,此时使用MOVX A,Ri/MOVX Ri,A指令来固定访问00H-FFH内部扩展的RAM空间,当超过FFH的外部RAM则用MOVX A,DPTR/MOVX DPTR,A指令来访问; 当EXTRAM=1时,禁止内部扩展RAM的使用,外部的RAM可以存取,此时MOVX DPTR和MOVX Ri的使用同传统的89C52。有些用户系统因为外部扩展了I/O或者用片选去选多个RAM区,有时与此内部扩展的RAM逻辑地址上有冲突,于是将此位设
31、置为”1”,禁止访问此内部扩展的RAM就可以了。符号功能介绍字节地址位地址复位值AUXR辅助寄存器8EHEXTRAMALEOFFxxxx xx00Tankertanker Design特别说明:请尽量用MOVX A,Ri/MOVX Ri,A指令访问内部扩展RAM,这样只能访问256字节的扩展RAM,可与很多单片机兼容,以达到完全兼容以前老产品的目的。另外,在访问内部扩展RAM之前,用户还需在烧录用户程序时在STC-ISP编程器中设置允许内部扩展AUX-RAM访问,如图4- 6所示。Tankertanker Design(3)当ALEOFF=0时,在12时钟模式时ALE脚输出固定的1/6晶振频率
32、信号,在6时钟模式时输出固定的1/3晶振频率信号。 当ALEOFF=1时,ALE引脚仅在执行MOVX或MOVC指令时才输出信号,好处是降低了系统对外界的电磁干扰。符号功能介绍字节地址位地址复位值AUXR辅助寄存器8EHEXTRAMALEOFFxxxx xx00Tankertanker Design2、AUXR1 双数据指针控制特殊功能寄存器(见表4- 13)(1)GF2通用功能用户自定义位。由用户根据需要自定义使用。(2)DPS是DPTR寄存器选择位。当DPS=0时,选择数据指针DPTR0;当DPS=1时,选择数据指针DPTR1。AUXR1特殊功能寄存器位于A2H单元,不可用位操作指令快速访问
33、。但由于DPS位位于bit0,故对AUXR1寄存器用INC指令,DPS位便会反转,由0变成1或由1变成0,即可实现双数椐指针的快速切换。符号功能介绍字节地址位地址复位值AUXR1辅助寄存器A2HGF2DPSxxxx 0 xx0Tankertanker Design3、堆栈指针SPSP指示堆栈顶部在内部RAM块中的位置。该微处理器的堆栈结构是向上生长型。单片机复位后,SP为07H,使得堆栈实际上从08H单元开始,由于08H1FH单元分别是属于13组的工作寄存器区,最好在复位后把SP值改置为60H或更大的值,避免堆栈与工作寄存器冲突。堆栈操作只有两种:数据压入(PUSH)堆栈和数据弹出(POP)堆
34、栈。数据压入堆栈,SP自动加1;数据弹出堆栈,SP自动减1。堆栈是为子程序调用和中断操作而设,主要用来保护断点地址和现场状态。Tankertanker Design4、累加器A使用最频繁的寄存器,可写为Acc。A的进位标志Cy是特殊的,因为它同时又是位处理机的位累加器。累加器A的作用是ALU单元的输入数据源之一,又是ALU运算结果存放单元。数据传送大多都通过累加器A,相当于数据的中转站。5、寄存器B为执行乘法和除法而设。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。执行乘法时,两乘数分别在A、B中,执行乘法指令后,乘积在BA中;执行除法时,被除数取自A,除数取自B,商存放在A中
35、,余数存放在B中。Tankertanker Design6、程序状态字寄存器PSW(Program Status Word)(见表4- 14)PSW包含了程序运行状态的信息,其中4位保存当前指令执行后的状态,供程序查询和判断。PSW中各个位的功能:(1)Cy(PSW.7)进位标志位Cy可写为C。在算术和逻辑运算时,若有进位/借位,Cy1;否则,Cy0。在位处理器中,它是位累加器。(2)Ac(PSW.6)辅助进位标志位在BCD码运算时,用作十进位调整。即当D3位向D4位产生进位或借位时,Ac1;否则,Ac0。符号字节地址位地址复位值PSWD0HCyAcF0RS1RS0OVP0000 0000Ta
36、nkertanker Design6、程序状态字寄存器PSW(Program Status Word)(见表4- 14)(3)F0(PSW.5)用户设定标志位由用户使用的一个状态标志位,可用指令来使它置1或清0,控制程序的流向。用户应充分利用它。(4)RS1、RS0(PSW.4、PSW.3)4组工作寄存器区选择选择片内RAM区中的4组工作寄存器区中的某一组为当前工作寄存区见表4- 15。符号字节地址位地址复位值PSWD0HCyAcF0RS1RS0OVP0000 0000Tankertanker Design6、程序状态字寄存器PSW(Program Status Word)(见表4- 14)(
37、5)OV(PSW.2)溢出标志位当执行算术指令时,用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。(6)PSW.1位 保留位(7)P(PSW.0)奇偶标志位指令执行完,累加器A中“1”的个数是奇数还是偶数。P=1,表示A中“1”的个数为奇数。P=0,表示A中“1”的个数为偶数。此标志位对串行通信有重要的意义,常用奇偶检验的方法来检验数据串行传输的可靠性。符号字节地址位地址复位值PSWD0HCyAcF0RS1RS0OVP0000 0000Tankertanker Design4.4 STC89C52单片机单片机I/O口口STC89C52RC单片机所有I/O端口均有3种工
38、作类型:准双向口/弱上拉(标准8051输出模式)、仅为输入(高阻)或开漏输出功能。Tankertanker Design4.4.1 P0端口P0口是一个双功能的8位并行端口,字节地址为80H,位地址为80H87H。端口的各位具有完全相同但又相互独立的电路结构。P0口上电复位后处于开漏模式,当P0管脚作I/O口时,需外加10K4.7K的上拉电阻,当P0管脚作为地址/数据复用总线使用时,不用外加上拉电阻。Tankertanker Design 当P0口线锁存器为0时,开漏输出关闭所有上拉晶体管。当P0口作为一个逻辑输出时,这种配置方式必须有外部上拉电阻,一般通过电阻外接到Vcc。如果外部有上拉电阻
39、,开漏的I/O口还可以读外部状态,即此时被配置为开漏模式的I/O口还可以作为输入I/O口。这种方式的下拉与准双向口相同。输出口线配置如图4- 7所示,开漏端口带有一个干扰抑制电路。Tankertanker Design4.4.2 P1/P2/P3/P4端口STC89C52RC系列单片机的P1/P2/P3/P4上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。准双向口有3个上拉晶体管适应不同的需要。即:要想获
40、得较大的驱动能力,采用低电平输出。Tankertanker Design在3个上拉晶体管中,有1个上拉晶体管称为“弱上拉”,当口线寄存器为1且引脚本身也为1时打开。此上拉提供基本驱动电流使准双向口输出为1。如果一个引脚输出为1而由外部装置下拉到低时,弱上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门槛电压以下。输出11弱上拉管提供电流输出00灌电流,导通Tankertanker Design第2个上拉晶体管,称为“极弱上拉”,当口线锁存为1时打开。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉为高电平。第3个上拉晶体管称为
41、“强上拉”。当口线锁存器由0到1跳变时,这个上拉用来加快准双向口由逻辑0到逻辑1转换。当发生这种情况时,强上拉打开约2个时钟以使引脚能够迅速地上拉到高电平。准双向口输出如图4- 8所示。输出1悬空极弱上拉管上拉电流0到10到1Tankertanker Design如果用户向3V单片机的引脚上加5V电压,将会有电流从引脚流向Vcc,这样导致额外的功率消耗。因此,建议不要在准双向口模式中向3V单片机引脚施加5V电压,如使用的话,要加限流电阻,或用二极管做输入隔离,或用三极管做输出隔离。准双向口带有一个干扰抑制电路。准双向口读外部状态前,要先锁存为“1”,才可读到外部正确的状态。Tankertank
42、er Design4.4.3 5V单片机连接3V器件STC89C52RC的5V单片机的P0口的灌电流最大为12mA,其他I/O口的灌电流最大为6mA。P0口驱动能力是其它端口的2倍。8个LSTTL输入。当STC89C52RC系列5V单片机连接3.3V器件时,为防止3.3V器件承受不了5V,可将相应的5V单片机P0口先串一个0330的限流电阻到3.3V器件I/O口,相应的3.3V器件I/O口外部加10K上拉电阻到3.3V器件的Vcc,这样高电平是3.3V,低电平是0V,输入输出一切正常。其配置见图4- 9。Tankertanker Design4.5 STC89C52单片机的时钟与复位单片机的时
43、钟与复位4.5.1 传统51单片机时序单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。时钟电路产生单片机工作时所必需的控制信号,在时钟信号的控制下,严格按时序执行指令。由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节数不同。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几种周期,即时钟周期、机器周期和指令周期,也称为时序定时单位。Tankertanker Design1. 时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。可以这么理解,时钟周期就
44、是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12 us。显然,对同一种机型的单片机,时钟频率越高,单片机的工作速度就越快。但是,由于不同的单片机硬件电路和器件的不完全相同,所以其所需要的时钟频率范围也不一定相同。在单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。Tankertanker Design2. 机器周期在单片机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干
45、个S周期(状态周期)组成。51系列单片机的一个机器周期由6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),51单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。Tankertanker Design由图4- 10可知:1个机器周期包括12个时钟周期,分6个状态:S1S6。每个状态又分两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、S6P2。Tankertanker Design3. 指令周期指令周期是执行一条指令所需要的时间,一般由若干个
46、机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。51单片机的指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。从指令执行时间看:单字节和双字节指令一般为单机器周期和双机器周期;三字节指令都是双机器周期;乘、除指令占用四个机器周期。Tankertanker Design4.5.2 STC89C52单片机时钟电路单片机工作
47、时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控制时序进行工作。CPU发出的时序信号有两类,一类用于对片内各个功能部件控制,用户无须了解;另一类用于对片外存储器或I/O口的控制,这部分时序对于分析、设计硬件接口电路至关重要。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。Tankertanker Design1内部时钟方式STC89C
48、52内部有一个用于构成振荡器的高增益反相放大器,输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。2外部时钟方式 此方式利用外部振荡脉冲接入XTAL1或XTAL2。对于STC89C52RC系列单片机,因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外部时钟源直接接到XTAL1端,XTAL2端悬空。用现成的外部振荡器产生脉冲信号,常用于多片单片机同时工作,以便于多片单片机之间的同步,一般采用内部时钟方式产生工作时序,如图4- 11所示。Tankertanker Design时钟电路中的R、C的参数值的设置
49、情况如表4- 16所示。晶振增益控制晶振增益控制OSCDN=full gainOSCDN=full gain晶振晶振频率频率4MHz4MHz6MHz6MHz12M-12M-25MHz25MHz26M-26M-30MHz30MHz31M-31M-35MHz35MHz36M-36M-39MHz39MHz40M-40M-43MHz43MHz44M-44M-48MHz48MHzC2C2、C3C3=100=100pFpF47pF-47pF-100pF100pF=47pF=47pF=10pF=10pF=10pF=10pF=10pF=10pF=10pF=10pF=5pF=5pFR1R1不用不用不用不用不用不
50、用6.8K6.8K5.1K5.1K4.7K4.7K3.3K3.3K3.3K3.3K晶振增益控制晶振增益控制OSCDN=1/2 gainOSCDN=1/2 gain晶振晶振频率频率4MHz4MHz6MHz6MHz12M-12M-25MHz25MHz26M-26M-30MHz30MHz31M-31M-35MHz35MHz36M-36M-39MHz39MHz40M-40M-43MHz43MHz44M-44M-48MHz48MHzC2C2、C3C3=100=100pFpF47pF-47pF-100pF100pF=47pF=47pF=10pF=10pF不用不用不用不用不用不用不用不用R1R1不用不用不用