单片机89C52.docx
《单片机89C52.docx》由会员分享,可在线阅读,更多相关《单片机89C52.docx(8页珍藏版)》请在冰豆网上搜索。
单片机89C52
3.1单片机的选择
AT89C52单片机与AT89C51单片机相比:
RAM空间增大,内部FLASH变大,中断源增加,AT89C52的内部RAM是256字节,00H~7FH既可直接寻址又可间接寻址;并且增加了许多新的功能:
ISP在线编程功能,最高工作频率33Hz,具有双工UART串行通道,内部集成看门狗计时器,双数据指示器等一些优秀的功能,通过多方面的考虑,本文选用AT89C52单片机[7]。
3.2AT89C52单片机
AT89C52ATMEL公司生产的低电压,高性能CMOS8位单片机.片内含8KbyTES的可反复擦写的只读程序存储器(PEROM)和256byTES。
的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH由存储单元,功能强大AT89C52单片适用于许多较为复杂控制应用场合[8]。
3.2.1AT89C52单片机的主要性能参数与功能特性
8字节可重擦写FLASH闪速存储器
1000次擦写周期
全静态操作:
0HZ-24MHZ
三级加密程序存储器
256X8字节内部RAM
32个可编程I/0口线
3个16位定时/计数器
8个中断源
可编程串行UART通道
低功耗空闲和掉电模式
AT89C52提供以下标准功能:
8字节FLASH闪速存储器,256字竹内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.
3.2.2AT89C52单片机引脚功能图
图3-1单片机引脚图
3.2.3AT89C52单片机的引脚功能
Vcc:
电源电压
GND:
地
P0:
P0口是一组8位漏极开路型双向1/O口,也即地址/数据总线复用口。
作为输出口用时.每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
PI是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL与AT89C51不同之处是,Pl.0和P1.1还可分别作为定时/计数器2的外部计数输入(Pl.0/T2)和输(P1.1/T2EX),FLASH编程和程序校验期间,Pl接收低8位地址。
P2口:
是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。
对端口P2写“l",通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvx@DPTR指令)时,P2送出高8位地址数据。
在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL).
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如表1-1所示:
表3-1引脚功能
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INTO(外中断0)
P3.3
NTO(外中断l)
P3.4
TO(定时/计数器0)
P3.5
Tl(定时/计数器l)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节.一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位.可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
·PSEN:
程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
·EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地).需注怠的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
flash存储器编程时,该引脚加上+12V的编程允许电源VPP ,当然这必须是该器件是使用12V编程电压VPP。
·XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端.
·XTAL1:
振荡器反相放大器的输出端。
中断寄存器
AT89C52有6个中断源,2个中断优先级,lE寄存器控制各中断位,lP寄存器中6个中断源的每一个可定为2个优先级。
数据存储器
AT89C52有256个字节的内部RAM,80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字竹的RAM和殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。
如果指令是直接寻址方式则为访问特殊功能寄存器.
定时器2
定时器2 是一个16 位定时/计数器。
它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄
存器T2CON(如表3)的C/T2 位选择。
定时器2 有三种工作方式:
捕获方式,自动重装载(向上或向下计数)方式和波
特率发生器方式,工作方式由T2CON 的控制位来选择。
定时器2 由两个8 位寄存器TH2 和TL2 组成,在定时器工作方式中,每个机器周期TL2 寄存器的值加1,由于一个机
器周期由12 个振荡时钟构成,因此,计数速率为振荡频率的1/12。
在计数工作方式时,当T2 引脚上外部输入信号产生由1至0的下降沿时,寄存器的值加1,在这种工作方式下,每个 机器周期的5SP2期间,对外部输入进行采样。
若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的S3P1 期间寄存器加1。
由于识别1至0的跳变需要2个机器周期(24个振荡周期),因此,最高计数速率为振荡频率的1/24。
为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
捕获方式
在捕获方式下,通过T2CON 控制位EXEN2 来选择两种方式。
如果EXEN2=0,定时器2是一个16位定时器或计数器,计数溢出时,对T2CON的溢出标志TF2置位,同时激活中断。
如果EXEN2=1,定时器2完成相同的操作,而当T2EX引脚外部输入信号发生1至0负跳变时,也出现TH2 和TL2 中的值分别被捕获到RCAP2H 和RCAP2L中。
另外,T2EX引脚信号的跳变使得T2CON 中的EXF2置位,与TF2相仿,EXF2也会激活中断。
自动重装载(向上或向下计数器)方式
当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON的DCEN 位(允许向下计数)来选择的。
复位时,DCEN 位置“0”,定时器2 默认设置为向上计数。
当DCEN置位时,定时器2既可向上计数也可向下计数,这取决于T2EX引脚的值,当DCEN=0时,定时器2自动设置为向上计数,在这种方式下,T2CON中的EXEN2控制位有两种选择,若EXEN2=0,定时器2为向上计数至0FFFFH溢出,置位TF2激活中断,同时把16位计数寄存器RCAP2H和RCAP2L重装载,RCAP2H和RCAP2L的值可由软件预置。
若EXEN2=1,定时器2的16位重装载由溢出或外部输入端T2EX从1至0的下降沿触发。
这个脉冲使EXF2置位,如果中断允许,同样产生中断。
定时器2的中断入口地址是:
002BH—0032H 。
当DCEN=1时,允许定时器2向上或向下计数,这种方式下,T2EX引脚控制计数器方向。
T2EX引脚为逻辑“1”时,定时器向上计数,当计数0FFFFH向上溢出时,置位TF2,同时把16位计数寄存器RCAP2H和RCAP2L重装载到TH2和TL2中。
T2EX引脚为逻辑“0”时,定时器2向下计数,当TH2和TL2中的数值等于RCAP2H和RCAP2L中的值时,计数溢出,置位TF2,同时将0FFFFH数值重新装入定时寄存器中。
当定时/计数器2向上溢出或向下溢出时,置位EXF2位。
波特率发生器
当T2CON(表3中的TCLK和RCLK置位时,定时/计数器2作为波特率发生器使用。
如果定时/计数器2作为发送器或 接收器,其发送和接收的波特率可以是不同的,定时器1用于其它功能,若RCLK和TCLK置位,则定时器2工作于波特率发生器方式。
波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2翻转使定时器2的寄存器用RCAP2H 和RCAP2L中的16位数值重新装载,该数值由软件设置。
在方式1和方式3中,波特率由定时器2的溢出速率根据下式确定:
方式1和3的波特率=定时器的溢出率/16
定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。
定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2振荡频率)寄存器的值加1。
波特率的计算公式如下:
方式1和3的波特率=振荡频率/{32*[65536-(RCP2H,RCP2L)]}
式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位无符号数。
定时器2作为波特率发生器使用的电路。
T2CON中的RCLK或TCLK=1时,波特率工作方式才有效。
在波特率发生器工作方式中,TH2翻转不能使TF2置位,故而不产生中断。
但若EXEN2置位,且T2EX 端产生由1至0的负跳变,则会使EXF2置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2和TL2中。
所以,当定时器2作为波特率发生器使用时,T2EX可作为附加的外部中断源来使用。
需要注意的是,当定时器2 工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2和TL2。
因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。
然而,对RCAP2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。
在访问定时器2或RCAP2寄存器之前,应将定时器关闭(清除TR2)。
时钟振荡器
AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
THANKS!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考