第二章一、AT89C51内部结构和引脚功能1、AT89C51单片机内部结构框图2、AT89C51单片机内部结构中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):89C51内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):89C51共有4K字节程序存储器(FLASHROM),用于存放用户程序和数据表格。定时/计数器:89C51有两个16位的可编程定时/计数器,以实现定时或计数,当定时/计数器产生溢出时,可用中断方式控制程序转向。并行输入输出(I/O)口:89C51共有4个8位的并行I/O口(P0、P1、P2、P3),用于对外部数据的传输。全双工串行口:89C51内置一个全双工异步串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:89C51具备较完善的中断功能,有五个中断源(两个外中断、两个定时/计数器中断和一个串行中断),可基本满足不同的控制要求,并具有2级的优先级别选择。时钟电路:89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的时序脉冲,但需外接晶体振荡器和振荡电容。二、AT89C51引脚说明1.电源引脚Pin20:接地脚Pin40:正电源脚,接+5V电源2.时钟引脚这两个管脚用来为单片机提供时钟信号Pin19:时钟XTAL1脚,晶体振荡电路的输入端Pin18:时钟XTAL2脚,晶体振荡电路的输出端两种接法:①使用内部振荡电路时,外接石英晶体②外部振荡脉冲输入时,XTAL1接外部时钟振荡脉冲,XTAL2悬空不用。3.控制线Pin9:RESET/Vpd复位信号脚/备用电源①正常工作时,RST(RESET)端为复位信号输入端②在VCC掉电情况下,该引脚还可接上备用电源,由VPD向内RAM供电,以保持内RAM中的数据不丢失。Pin30:ALE/地址锁存允许信号①ALE:当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低8位地址。②PROG:在对闪存进行编程期间(也称“烧录程序”)时,此引脚用于输入编程脉冲,此时为低电平有效Pin31:EA/Vpp外部程序存储器地址允许输入端①正常工作时,EA为内外ROM选择端②对闪存进行编程期间,此引脚用于施加编程电源VPPPin29:外部程序存储器读选通信号,在从片外ROM中读取指令时,PSEN送出片外ROM的读信号(低电平),一般接到外ROM的读控制端4.I/OPin39-Pin32为P0.0-P0.7输入输出脚①普通的I/O口②作为与外部传送数据的8位数据总线(D0~D7)。③作为扩展外部存储器时的低8位地址总线(A0~A7)Pin1-Pin8为P1.0-P1.7输入输出脚普通的I/O口Pin21-Pin28为P2.0-P2.7输入输出脚①普通的I/O口②作为扩展外部存储器时的高8位地址总线(A8~A15)Pin10-Pin17为P3.0-P3.7输入输出脚①普通的I/O口②第二功能P3口的第二功能表三、时钟电路单片机的时钟信号用来提供单片机内部各种操作的时间基准,时钟电路用来产生单片机工作所需要的时钟信号。图2―4HMOS型MCS—51单片机时钟产生方式(a)内部振荡器方式;(b)外部振荡器方式(a)采用内部时钟方式时,片内的高增益反相放大器通过XTAL1、XTAL2外接作为反馈元件的片外晶体振荡器(呈感性)与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.2~12MHz之间任选,电容C1、C2可在5~30pF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调作用2、周期的概念(a)振荡周期:为单片机提供定时信号的振荡源的周期,即振荡频率的倒数(晶振周期或外加振荡源周期),用P表示振荡频率:振荡器元件(晶振)的频率(b)时钟周期:振荡周期的二倍,用S表示内部时钟发生器是二分频触发器,对振荡频率二分频(c)机器周期:6个时钟周期或12个振荡周期一个机器周期由6个状态(时钟)周期组成(d)指令周期:执行一条指令所占用的时间用机器周期个数表示,可查附录AT89C51:最高振荡频率24MHZ晶振振荡周期时钟周期机器周期指令周期6M1/6μs1/3μs2μs2~8μs12M1/12μs1/6μs1μs1~4μs(e)ALE信号:允许地址锁存信号,当访问外部存储器时,ALE以每机器周期两次的信号输出,用于锁存出现在P0口的低8位地址。输出周期性的信号,频率为振荡频率的1/6,周期为机器周期的1/2。1.复位以便中央处理器CPU及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作a.单片机上电后,对单片机的初始化,从ROM中地址为0000H处开始执行程序b.程序运行出错或操作错误进入死锁状态,复位后,重新开始2.复位信号在单片机的RST端(9)至少维持2个机器周期以上的高电平,高电平有效,再从高电平到底电平,单片机完成复位,从0000H地址开始执行程序3.复位后的状态复位后,大部分寄存器清0,特例是SP=07H,P0-P3=FFH,但不影响片内RAM存放的内容,而ALE、在复位期间将输出高电平。在复位电路中,RC构成微分电路,在接电瞬间,产生一个微分脉冲,其宽度若大于2个机器周期,80C51型单片机将复位。为保证微分脉冲宽度足够大,RC时间常数应大于2个机器周期。一般取10μF电容、8.2kΩ电阻。PSEN一、AT89C51存储器的组成程序存储器:只读存储器,用于存放程序。具有非易失性,掉电后其内的信息依然存在片内ROM(FLASHROM):用来存放程序和表格常数,4KB。片外ROM:用来存放程序,片内不够用时可以外扩ROM,内ROM+外ROM≤64K数据存储器:随机读写存储器,用于存放数据。具有易失性,芯片掉电后,其内的信息消失。片内RAM:用来存放运算过程中的数据,256B(片内数据+SFR)。片外RAM:在数据采集系统中可存放大量的数据,可扩展64KB单片机的工作是按照事先编制好的程序命令一条条循序执行的,程序存储器就是用来存放这些已编好的程序和表格常数的片内ROM是4KB的FLASHROM,只能读,需要用编程器写入程序4KB的ROM的地址范围0000H~0FFFH,有一个专门的程序计数器地址指针PC,PC用于存放CPU下一条要执行的指令地址,是一个16位的专用寄存器,可寻址范围是0000H~0FFFFH共64K.片内不够用时,可以外扩ROM,内ROM+外ROM≤64KEA管脚作用=0,全访问片外ROM;=1,先访问片内,超出4KB后,访问片外几个特殊地址:0000H:系统复位后的启动地址,用户程序的第一条指令(转移指令)中断程序的入口地址:0003H,000BH,0013H,001BH,0023H三、数据存储器1.片内数据存储器片内RAM为256字节,地址范围为00H~FFH,分为两大部分:低128字(00H~7FH)为真正的RAM区;高128字节(80H~FFH)为特殊功能寄存器区SFR低128BRAM(三个区域)工作寄存器区1.工作寄存器区是指00H~1FH区,共分4个组,每组有8个单元,共32个内部RAM单元。2.作为工作寄存器使用的8个单元,又称为R0—R73.程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择哪一组作为工作寄存器使用。CPU通过软件修改PSW中RS0和RS1两位的状态,就可任选一个工作寄存器工作。每组8个寄存器每个寄存器都是8位4.每次只能有1组作为工作寄存器使用(R0,R1,R2,R3,R4,R5,R6,R7),其它各组可以作为一般的数据缓冲区使用。位寻址区1、位寻址区是指20H~2FH单元,共16个单元。2、位寻址区的16个单元(共计128位)的每1位都有一个8位表示的位地址,位地址范围为00H~1FH。3、位寻址区的每1位都可当作软件触发器,由程序直接进行位处理。4、同样,位寻址的RAM单元也可以按字节操作作为一般的数据缓冲区。数据缓冲区1.30H~37H,数据缓冲区2.堆栈区也在此区中堆栈区高128BRAM(四个区域高128B的RAM单元中有21个单元可用,称为SFR(特殊功能寄存器)。这21个SFR分散在高128B(80H~FFH)的地址空间内凡是地址能被8整除的SFR既可字节寻址,也可位寻址SFR特殊功能1)累加器ACC(E0H)累加器ACC是80C51型单片机中最常用的寄存器。许多指令的操作数取自ACC,许多运算的结果存放在ACC中。乘除法指令必须通过ACC进行。累加器ACC的指令助记符为A。(2)寄存器B(F0H)在MCS-51型单片机乘除法指令中要用到寄存器B。除此外,B可作为一般寄存器用。(3)程序状态字寄存器PSW(D0H)PSW也称为标志寄存器,存放各有关标志。其结构和定义如表2-3所示。CY:进位标志。有进位/借位时CY=1,否则CY=0;AC:半进位标志。当D3位向D4位产生进位/借位时AC=1,常用于十进制调整运算中;F0:用户可设定的标志位,可置位/复位,也可供测试。RS1、RS0:四个通用寄存器组的选择位,该两位的四种组合状态用来选择0~3寄存器组。见表1-2。OV:溢出标志。当带符号数运算结果超出-128~+127范围时OV=1,否则OV=0。当无符号数乘法结果超过255时,或当无符号数除法的除数为0时,OV=1,否则OV=0。P:奇偶校验标志。每条指令执行完,若A中“1”的个数为奇数时P=1,否则P=0,即奇偶校验方式。(4)数据指针DPTR(83H,82H)数据指针DPTR是一个16位的特殊功能寄存器,由两个8位寄存器DPH和DPL组成,DPH是DPTR的高8位,DPL是DPTR的低8位,DPTR既可合并作为一个16位寄存器,又可分开按8位寄存器单独操作。(5)堆栈指针SP(81H)堆栈是CPU用于暂时存放部分数据的“仓库”。在80C51中,由内RAM中若干存储单元组成。存储单元的个数称为堆栈的深度(可理解为仓库容量)(6)其他寄存器与单片机定时、中断、串行、并行通信功能相关的寄存器2.片外数据存储器若片内RAM不够用(数据采集系统),可扩展片外数据存储器片外最大可扩展64KB(0000H~FFFFH),和片内RAM独立编址当访问片内00H~FFH区域和片外0000H~FFFFH区域时,用不同的指令来区分(MOV,MOVX)片外数据存储区的指针:DPTR第五章一、四个口的功能和第二功能单片机经常要和外设之间传输数据(输入,输出),P0,P1,P2,P3就是可以和外设完成并行数据传输的接口。一、P1口1.结构P1由8个这样的电路组成锁存器起输出锁存作用,场效应管(FET)V组成输出驱动器,以增大带负载能力;三态门1是用于读锁存器端口;三态门2是引脚输入缓冲器;其1位的结构原理如图2―7所示。2.功能(1)输出(外接发光二极管)MOVP1,#data(P1=0Xdata)内部总线输出“0”,则D=0,Q=1,V导通,则输出点=0(2)输入(外接开关)a.读引脚MOVA,P1(A=P1)读引脚脉冲有效,为高电平,把该三态缓冲器打开,这样端口引脚上的数据经过三态门缓冲器读入到内部总线。如果输入数据走该通道,那么V是否对引脚有影响?有的。如果锁存器原来寄存的数据Q=0,那么则V导通,引脚始终被嵌位在低电平,不可能输入外接电路的高电平。所以在输入前,必须用输出指令向锁存器写入“1”,使V截止(断开),保证单片机输入