单片机原理及接口技术第三版李朝青第2章MCS-51系列单片机的结构和原理1.掌握单片机的基本结构(CPU、ROM、RAM、定时/计数器、并行I/O、全双工串行口、中断系统、总线结构)。2.掌握特殊功能寄存器SFR的功能、作用及它们复位后的状态。3.掌握存储器的组织结构(分ROM和RAM)及对应的寻址方式。4.了解单片机的工作时钟与时序。2.1单片机内部组成及引脚功能MCS-51系列单片机有3种类型的产品:8051、8751和8031,其主要差别:8051内设有4KB的掩膜ROM;8751内设有4KB的EPROM;8031内没有ROM。51子系列的主要特点为:◆8位CPU。◆片内带振荡器,频率范围1.2~12MHZ。◆片内带256字节的数据存储器。◆片内带4K的程序存储器。◆程序存储器的寻址空间为64K字节。◆片外数据存储器的寻址空间内64K字节。◆128个用户位寻址空间。2.1.1单片机内部结构CPURAMROM中断系统串行口并行口定时计数器振荡电路X1X2P0P1P2P3TXDRXDINT0INT1T0T1图2-1MCS-51系列单片机的基本结构图1.微处理器即CPU,包括运算器和控制器。(1)运算器ALU:进行算术或逻辑运算部件;(2)控制器:产生各种控制信号,控制计算机工作的部件。2.内部数据存储器共有256B(00H~FFH),其中低128B(00H~7FH)用户使用;高128B(80H~FFH)为专用寄存器。3.内部程序存储器8051有4KB(0000H~0FFFH)ROM,用于存放程序、原始数据或表格常数。4.定时器/计数器2个16位定时/计数器。5.并行I/O口共有4个8位I/O口(P1、P2、P3、P4)。6.串行口1个全双工的异步串行口,实现串行数据传送。7.中断控制系统2个外中断、2个定时/计数中断和1个串行口中断。8.时钟电路为单片机产生时钟脉冲序列,1.2MHz~12MHz。2.1.2MCS-51的引脚功能图2-38051单片机引脚图P1.0XTAL2P1.2P1.3P1.4P1.5P1.6P1.7P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.1P2.2P2.3P2.4P2.5P2.6P2.7XTAL1RST/VPDVSSP2.0P0.0P1.1134567821080519111314151617181219204038373635343339313230282726252423292221RXD/P3.0TXD/P3.1T0/P3.4T1/P3.5VCCPSENALE/PROGEA/VPPINT0/P3.2INT1/P3.3WR/P3.6RD/P3.7178051VCCVSSRST/VPDXTAL1XTAL2EA/VPPPSENALE/PROGP3口P2口P1口P0口MCS-51单片机的40引脚双列直插式(DIP)封装结构如下图。XTAL1:时钟电路引脚XTAL2:时钟电路引脚RST/VPD:复位/备用电源EA:外部程序存储器使能端0——外部程序存储器1——片内→片外ALE:低8位地址锁存使能端PSEN:外部程序存储器选通信号表2-1P3各口线的第二功能表P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEAALERST用户I/O控制总线(CB)锁存器A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0地址总线数据总线(AB)(DB)VccVssVccVss片外总线结构1.数据总线数据总线宽度为8位,由P0口直接提供。2.地址总线地址总线宽度为16位,寻址范围都为64KB。由P0口经地址锁存器提供低8位(A7~A0),P2口提供高8位(A15~A8)而形成。可对片外程序存储器和片外数据存储器寻址。3.控制总线控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。2.3存储器组织(a)外部ROM内部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH7FH80HFFH00H外部RAM(64KB)0000HFFFFH内部128BRAM特殊功能寄存器(21个SFR)(c)(b)2.3.1MCS-51储存器特点物理上分为:4个空间,即片内ROM、片外ROM片内RAM、片外RAM逻辑上分为:3个空间,即程序内存(片内、外)统一编址MOVC数据存储器(片内)MOV数据存储器(片外)MOVX2.3.2片内数据存储器1、片内数据存储器低128B(字节地址为00H~7FH)(1)通用寄存器区00H~1FHR0~R7;单片机复位后自动选择工作寄存器0区。8051的片内8位地址寻址,寻址范围为256个单元(00H~FFH)RS1RS0工作寄存器组000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)(2)位寻址区20H~2FH:可进行128位的位寻址(3)用户RAM区30H~7FH:用户RAM区,字节寻址,用作数据缓冲区以及堆栈区。表2-38051RAM区位地址分配表(1)位寻址区的访问SETB7FH;7FH←1等价于SETB2FH.7两点说明:(2)堆栈堆栈是在内存RAM中开辟的一个特定的存储区,专门用来暂存数据或断点地址,并按照“先进后出,后进先出”的原则进行操作。7FH07H08H栈顶栈底●●●●●●RAM栈底是固定的,栈顶会自动地向地址递增的方向变化。系统复位后,SP被初始化位07H。2、片内数据存储器高128B表2-4特殊功能寄存器SFR地址表特殊功能寄存器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作。(1)累加器ACC累加器ACC(简称为A)为一个8位的寄存器,它是CPU中使用最频繁的寄存器,ALU进行运算时,数据绝大多数时候都来自于累加器ACC,运算结果也通常送回累加器ACC。(3)堆栈指针SP堆栈指针SP是一个8位寄存器,用它存放栈顶的地址。数据入栈时,先SP自动加1,后写入数据;数据出栈时,先读出数据,后SP自动减1;SP始终指向栈顶地址。复位时SP=07H。但在程序设计时应将SP值初始化为30H以后,以免占用宝贵的寄存器区和位地址区。7FH07H08H(栈顶)(栈底)●●●●RAMSP30H(2)B寄存器主要用于乘法和除法运算。(4)程序状态字PSW程序状态字PSW是一个8位的寄存器,它用于保存指令执行结果的状态,以供程序查询和判别。Cy——进位/借位标志;位累加器。AC——辅助进/借位标志;用于十进制调整。F0——用户定义标志位;软件置位/清零。OV——溢出标志;硬件置位/清零。P——奇偶标志;A中1的个数为奇数P=1;否则P=0。RS1、RS0——寄存器区选择控制位。00:0区R0~R701:1区R0~R710:2区R0~R711:3区R0~R7(5)数据指针DPTRDPTR为16位寄存器,也可按两个8位寄存器使用:DPH:DPTR高位字节DPL:DPTR低位字节(6)程序计数器PCPC用于存放下一条执行的指令地址,是一个16位专用寄存器,可寻址64KB。PC有自动加1的功能,PC没有地址,不可寻址。复位后,PC=0000H。67H=01100111B58H=01011000B01100111B+01011000B10111111=0BFH则执行后累加器A中的值为0BFH,由相加过程得Cy=0、AC=0、OV=1、P=1。例:试分析下面指令执行后,累加器A,标志位Cy、AC、OV、P的值?MOVA,#67HADDA,#58H分析:第一条指令执行时把立即数67H送入累加器A,第二条指令执行时把累加器A中的立即数67H与立即数58H相加,结果回送到累加器A中。加法运算过程如下:2.3.3片内程序存储器寻址范围:0000H~FFFFH容量64KB,即地址长度:16位1EA,寻址内部ROM;0EA,寻址外部ROM。当PC值超过片内ROM容量时会自动转向外部存储器空间。EA8031单片机接低电平。作用:存放程序及程序运行时所需的常数。0000H——系统复位,PC指向此处;0003H——外部中断0入口000BH——T0溢出中断入口0013H——外中断1入口001BH——T1溢出中断入口0023H——串口中断入口1.P0口(P0.0~P0.7,39~32脚)为三态双向口(1)P0口作地址/数据复用总线使用(低8位)(2)P0口作通用I/O端口使用(3)P0口线上的“读—修改—写”功能2.P1口(P1.0~P1.7、1~8脚)准双向口3.P2口(P2.0~P2.7,21~28脚)准双口(1)P2口作通用I/O端口使用(2)P2口作地址总线口使用(高8位)4.P3口(P3.0~P3.7、10~17脚)双功口(1)P3口作第一功能口(通用I/O端口)使用(2)P3口作第二功能口使用2.4并行I/O端口(1)通用输出此时必须外接上拉电阻。(2)通用输入①读引脚:CPU在执行“MOV”类输入指令时(如:MOVA,P0),内部产生的操作信号是“读引脚”。P0.X引脚上的数据经过缓冲器2读入到内部总线。1、P0口作通用I/O口使用2、P0口作地址/数据总线不必外接上拉电阻。②读锁存器:CPU在执行“读-改-写”类输入指令时(如:ANLP0,A),锁存器中的数据经过缓冲器1送到内部总线,然后与A的内容进行逻辑“与”,结果送回P0锁存器并出现在引脚。+5V注意:在读引脚时,必须先向电路中的锁存器写入1。MOVP0,#0FFHMOVA,P0VccP10QQDCP1R1P1R2D0P1WR*图2、P1口内部结构•P1口内部结构如下图所示•输出部分有内部上拉电阻R*约为20K。•其他部分与P0端口使用相类似(读引脚时先写入1)。写数据读端口P10VccP118051K1D1R1图2.1、P1口应用MOVP1,#0FFHJNBP1.1,$CLRP1.02.4.2P1口内部结构2.4.3P2口内部结构说明:1、P2可以作为通用的I/O,也可以作为高8位地址输出。2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。3、当P2口作为普通I/O口使用时用法和P1口类似。2.4.4P3口内部结构说明:1、做普通端口使用时,第二功能应为“1”。QQDCVcc变异输出P3R1P3R2D0P3WP30图3、P3口内部结构R*变异输入2、使用第二功能时,输出端口锁存器应为“1”。3、第二功能()P3.0TXDP3.4T0P3.1RXDP3.5T1P3.2INT0P3.6WRP3.3INT1P3.7RD1输出I/O口1读I/O口112.5.2时序定时单位1、振荡周期:也称为节拍(用P表示),Tosc=1/fosc2、状态周期:用S表示,是振荡周期的2倍,分为P1和P2两个节拍。3、机器周期:CPU完成一个基本操作所需要的时间。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个振荡周期为一个机器周期。4、执令周期:即从取指到执行完一条指令所需时间。CPU执行一条指令的各个微操作所对应时间顺序称为CPU时序。S1S2S3S4S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2fosc一个状态周期一个机器周期T=12*(1/fosc)X28031对片外RAM和ROM的连接(1)对片外ROM的读操作MOVCA,@A+DPTR(2)对片外RAM的写操作MOVX@DPTR,A第一阶段是根据程序计数器PC到片外ROM中取指令码;第二阶段是对累加器A和DPTR中16位地址进行运算,并把运算得到的和的地址去片外ROM取出所需要常数送到累加器A。读片外