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