c语言的输入p3.3作为输入信号

单片机原理及应用教程(C语言版)第2章 MCS-51单片机结构与原理主 编:周国运中国水利水电出版社 第2章 MCS-51单片机结构与原理目 录2.1 2.2 2.3 2.4 2.5 2.6 2.7 MCS-51单片机的内部结构及CPU MCS-51单片机的引脚与总线结构
MCS-51单片机的存储器结构 MCS-51单片机的时钟及CPU时序 MCS-51单片机的复位 MCS-51单片机的低功耗工作方式 MCS-51单片机的输入/输出端口(作者开发有试题库,为教师免费提供试题,可Email联系) 第2章 MCS-51单片机结构与原理本章讨论MCS-51单片机的结构和工作 原理,内容主要有MCS-51单片机结构、引 脚信号、存储器配置、时钟与CPU时序、 复位,以及低功耗工作方式、输入/输出端 口等。 本章是单片机的基本内容,为学习后面 各个章节的基础,也是从事单片机应用开 发的基础。 2.1 MCS-51单片机内部结构及CPU主要内容2.1.1 MCS-51单片机的功能结构及特点 2.1.2 MCS-51单片机的原理结构 2.1.3 MCS-51单片机的CPU 2.1.1 MCS-51单片机的 功能结构及特点MCS-51单片机的内部功能结构如下 页图所示,图中是以增强型单片机的结 构为对象。 从图中可以看到,MCS-51单片机在 一块芯片中集成了微型计算机所具有的 所有部件,从功能的角度来看,主要包 括9个部分。 2.1.1 MCS-51单片机的功能结构及特点 时钟信号源 时钟电路 8KB Flash ROM BUS外部事件信号256B RAM 128B SFR 16位×3个 定时/计数器 BUSCPU可编程 并行口中断控制器64KB总线 扩展控制器可编程全 双工串行口外中断总线控制8位×4个并行口串行通信图2.1 MCS-51(增强型)单片机功能结构图 2.1.1 MCS-51单片机的功能结构及特点MCS-51单片机内部主要包括9个部分:① 一个8位的微处理器CPU ② 8KB的片内程序存储器Flash ROM ③ 256B的片内数据存储器RAM、128B特殊功能寄 存器(SFR) ④ 3个16位的定时器/计数器 ⑤ 有一个管理6个中断源的中断控制器 ⑥ 4个8位并行I/O端 ⑦ 一个全双工的串行接口(UART) ⑧ 片内振荡电路和时钟发生器 ⑨ 可扩展64KB程序、64KB数据存储器的三总线 控制电路 2.1.2 MCS-51单片机的内部原理结构MCS-51单片机的内部原理结构如图2-2所 示。与图2-1比较,主要的区别是画出了CPU 的内部结构,图中的中间部分除了“定时器、 串行口”大方框之外都属于CPU部件。 下面先介绍CPU部分,对于其它部件, 将在本章和后面的章节讲解。 Vcc GNDP0.0~P0.7地址总线∕数据总线P2.0~P2.7端口0驱动器 RAM 地址端口2驱动器256BRAM 8KB Flash 128B SFR 端口0锁存器 端口2锁存器 ROM程序地址寄存器 缓冲器属运算器B寄存器 指指指 PSEN 令 令 令 ALE 控译寄 EA 制码存 RST 器器器 暂存器1 暂存器2ACCSPALUPSW端口1锁存器 端口1驱动器 P1.0~P1.7定时器、串行口 中断部件及 特殊功能寄存器PC加1PC DPTR端口3锁存器 端口3驱动器 P3.0~P3.7属控制器XTAL2 XTAL1属控制器图2-2 MCS-51(增强型)单片机原理结构图 2.1.3 MCS-51单片机的CPUMCS-51单片机内部有一个功能强大的8位 CPU,它包含两个基本部分,运算器和控制器。一、运算器运算器包括: 算术和逻辑运算部件ALU(Arithmetic Logic Unit)以及累加器ACC、寄存器B、暂存器1、暂 存器2、程序状态字寄存器PSW、布尔处理器等。 2.1.3 MCS-51单片机的CPU1、算术逻辑运算部件ALUALU可以对4位(半字节)、8位(一字节)和 16位(双字节)数据进行操作。这些操作可以是: 算术运算:加、减、乘、除、加1、减1、BCD 码数的十进制调整及比较等; 逻辑运算:与、或、异或、求补及循环移位等。 2.1.3 MCS-51单片机的CPU2、累加器ACCACC在CPU结构中占有特殊的位置,所以ACC 在指令中使用的非常多。 ACC既做源操作数又做目的操作数,如在加、 减、乘、除算术运算指令中,在与、或、异或、循 环移位逻辑运算指令等。 ACC也作为通用寄存器使用,并且可以按位操 作,所以ACC是一个用处最多、最忙碌的寄存器。 在指令中用助记符A来表示。 2.1.3 MCS-51单片机的CPU3、B寄存器B作专门应用:在乘、除运算时,用来存放一 个操作数,并且存放运算后的部分结果。 B作一般应用:在非乘、除运算中,B可以作为 通用寄存器使用。 B可以按位操作 2.1.3 MCS-51单片机的CPU4、程序状态字PSW功能:用于设定CPU的状态和指示指令执行 后的状态。 PSW相当于其它微处理器中的标志寄存器。 格式如下:D7 CY D6 AC D5 F0 D4 D3 D2 D1 F1 D0 PPSW (D0H)RS1 RS0 OV图2-3 程序状态字PSW格式 2.1.3 MCS-51单片机的CPUD7 D6 CY ACD5 D4 D3 D2 F0 RS1 RS0 OVD1 F1D0 PCY(PSW.7):进位、借位标志 在做位操作(布尔操作)时CY作 为位累加器。在指令中用C代替CY AC(PSW.6):半进位、半借位标志,也称 为辅助进位标志 F0、F1(PSW.5 、PSW.1):用户标志位, 留给用户使用 2.1.3 MCS-51单片机的CPUOV(PSW.2):溢出标志位。有以下情况:①加减运算: OV=1表示结果超出了8位有符号数的有 效范围(-128~+127),对无符号数OV没有意义。 ②无符号数乘法运算: OV=1表明结果超出了8位数 ③无符号数除法运算: OV=1表明除数为0P(PSW.0):累加器A的奇偶标志位P表示累加器A中1的个数的奇偶性 P=1,A中有奇数个1;P=0,A中有偶数个1。 2.1.3 MCS-51单片机的CPURS1、RS0(PSW.4 和PSW.3):工作寄存 器组选择控制位。 工作寄存器:R0、R1、……、R7表2-1 RS1、RS0的组合关系RS1 RS0 0 0 0 1 1 0 1 1 工作寄存器组 第0组 第1组 第2组 第3组 片内RAM地址 00H~07H 08H~0FH 10H~17H 18H~1FH 2.1.3 MCS-51单片机的CPU5、布尔处理器布尔处理器以PSW中的进位标志位CY作为位累 加器(用C表示)。 功能:专门用于处理位操作。 MCS-51单片机有丰富的位处理指令:如置位、 位清0、位取反、判断位值(为1或为0)转移,以及 通过C(指令中用C代替CY)做位数据传送、位逻 辑与、位逻辑或等位操作。 2.1.3 MCS-51单片机的CPU二、控制器控制器包括程序计数器PC、指令寄存器IR、指 令译码器ID,以及时钟控制逻辑、堆栈指针SP、 地址指针DPTR等。 PC是一个具有自加1功能的16位的计数器 PC的 内容是将要执行的下一条指令的地址 改变PC的内容就改变了程序执行的顺序1、程序计数器PC2、指令寄存器IR和指令译码器IDIR:存放从Flash ROM中读取的指令 ID:进行译码,产生一定序列的控制信号,完 成指令所规定的操作。 2.1.3 MCS-51单片机的CPU(1)堆栈的概念: 堆栈是在RAM中专门开辟的一个特殊用途的存 储区。 (2)堆栈的功能: 主要用于暂时存放数据。 CPU保存返回地址存、 传递参数,程序员暂时存放数据等。 (3)堆栈的结构: 堆栈一端的地址是固定的,称为栈底;另一端 的地址是动态变化的,是数据保存和取出的端口, 称为栈顶。堆栈像一个桶状存储体,只能从桶口存 放和取出。3、堆栈 2.1.3 MCS-51单片机的CPU(4)堆栈的指针特点: 会配合访问堆栈的读、写,自动修改堆栈指 针。其写称为进栈,其读称为出栈。 (5)堆栈的访问特点: 由于堆栈通过堆栈指针间接访问,只能在栈 顶进栈或出栈,因此堆栈是按照“先进后出” (即先进入堆栈的数据后移出堆栈)的规律存、 取数据。 (6)堆栈的使用特点: 由于堆栈是暂存数据,暂存后还要将其读出 使用,因此对于数据必是先进栈,而后还要出栈, 即数据的进栈和出栈是成对使用的。 2.1.3 MCS-51单片机的CPU4、堆栈指针SP堆栈指针SP(Stack Pointer)中为栈顶的地 址,即SP指向栈顶。 SP是访问堆栈的间址寄存器 SP具有自动加1、自动减1功能。当数据进栈 时,SP先自动加1,然后将数据存入; 当数据出 栈时,先将数据送出,然后SP自动减1。 2.1.3 MCS-51单片机的CPU下图是数据进栈的情况 数据从栈顶进入开始状态 58进栈后的状态 A6,7B进栈后的状态E7 E6SP E1 E5 SPE7 E6E5 SPE7 E6E5E4E3 E2E2 E1E4E3E3 E2 E47B E4 A6 E3 58 E2 36 E1 21 E058 E2 36 E1 21 E036 E1 21 E0 2.1.3 MCS-51单片机的CPU由于进栈时SP的值增加,即堆栈向地址大的 方向生长,并且栈顶是有效数据,这种堆栈是满 递增型堆栈。7B、A6、58、36出栈后的状态 E7 E6 SP E5 E2 E0 E1 E3 E4 7B E4 A6 E358 E2 36 E1 21 E0 2.1.3 MCS-51单片机的CPU5、数据指针DPTRDPTR是唯一的16位寄存器。 DPTR既可以作为一个16位寄存器使用,也可 以作为两个独立的8位寄存器使用。其高字节寄存 器用DPH表示,低字节寄存器用DPL表示。 DPTR的用途: (1)主要用于存放16位地址, 以便对64KB的片外RAM和64KB的程序存储空间 作间接访问。 (2)其次用于存放数据,作为一般寄 存器使用。 2.2 MCS-51单片机的引脚与总线结构主要内容2.2.1 MCS-51单片机的引脚信号及功能 2.2.2 MCS-51单片机的外部总线结构 2.2.1 MCS-51单片机引脚信号及功能T2/P1.0 封装:40DIP, T2EX/P1.1 P1.2 44PLCC。 P1.3 P1.4 常用40DIP P1.5 P1.6 40个引脚分 P1.7 为4类: RST RXD/P3.0 ? 电源引脚 TXD/P3.1 GATE0/INT0/P3.2 ? 晶振引脚 GATE1/INT1/P3.3 T0/P3.4 ? 控制信号 T1/P3.5 WR/P3.6 ? 输入/输出引脚 RD/P3.7 XTAL2 XTAL1 Vss 1 40 2 39 3 38 4 37 5 36 6 89C52 35 7 89C51 34 8 33 9 32 10 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 18 23 19 22 20 21Vcc P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA/VPP ALE/PROG PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 2.2.1 MCS-51单片机引脚信号及功能一、电源引脚Vcc(40脚):接5V电源正端 Vss(20脚):接5V电源地端单片机二、晶振引脚XTAL1(19脚) XTAL2(18脚)C118 XTAL2 晶 振 19 XTAL1C2 2.2.1 MCS-51单片机引脚信号及功能三、控制信号引脚1、RST(9脚)RST:复位信号输入端,高电平有效。 单片机正常工作时:RST保持两个机器周期 的高电平就会使单片机复位; 上电时:RST上的高电平必须保持10ms以上 才能保证有效复位,由于振荡器需要一定的起振 时间。 2.2.1 MCS-51单片机引脚信号及功能2、ALE/PROG(30引脚)ALE:地址锁存信号,每个机器周期输出两个 正脉冲,下降沿或低电平用于控制外接的地址锁 存器,锁存从P0口输出的低8位地址。~0.1μs可以将ALE作为时钟信号使用。 PROG:片内程序存储器的编程脉冲输入端, 低电平有效。 STC单片机无此功能,它不用并行 口而是用串行口编程。≥ 90μs 2.2.1 MCS-51单片机引脚信号及功能3、PSEN(29引脚)片外程序存储器读选通信号输出端,每个机 器周期输出两个负脉冲,低电平有效。在访问片 外数据存储器时,该信号不出现。 EA:程序存储器选择输入端。接低电平时, 使用片外程序存储器;接高电平时,使用片内程 序存储器。 Vpp:片内程序存储器编程电压输入端。4、EA/Vpp(31引脚) 2.2.1 MCS-51单片机引脚信号及功能五、输入/输出引脚1、P0口,P0.0~P0.7(32~39引脚)可以作总线口和一般I/O口使用,与操作指令有 关。 (1)P0口作总线口 为8位推拉式输出的I/O口,分时地输出低 8位地址、读入指令和输入/输出数据。 (2)P0口作为一般I/O口 是一8位漏极开路的I/O口,此时P0口为准 双向口(各位输入前必须先输出1)。 2.2.1 MCS-51单片机引脚信号及功能2、P1口,P1.0~P1.7(1~8引脚)P1口是一个8位准双向I/O口 P1.0、P1.1的第二功能 对于增强型单片机具有第二功能, 第二功能 的信号分别为T2和T2EX。 ? T2(P1.0):定时器/计数器2的计数脉冲输入 和时钟输出。 ? T2EX(P1.1):定时器/计数器2的重 装、捕 获和计数方向控制输入。 2.2.1 MCS-51单片机引脚信号及功能3、P2口,P2.0~P2.7(21~28引脚)两种用法: (1)当CPU以总线方式访问片外存储器时, P2口输出高8位地址。 (2)作为一般I/O口用时,为准双向口。4、P3口,P3.0~P3.7(10~17引脚)P3口是一个8位I/O口,还是一个多功能口 作为一般I/O口使用时,为准双向口。 各引脚第二、第三功能如下页表2-2所示。 2.2.1 MCS-51单片机引脚信号及功能表2-2 P3口各引脚多功能定义引脚P3.0 P3.1第二、第三功能RXD:串行口输入 TXD:串行口输出 INT0/GATE0 :外部中断0请求输入 /定时器/计数器0运行外部控制输入 INT1/GATE1 :外部中断1请求输入 /定时器/计数器1运行外部控制输入 T0:定时器/计数器0外部计数脉冲输入 T1:定时器/计数器1外部计数脉冲输入 WR:外部数据存储器写控制信号输出 RD:外部数据存储器读控制信号输出P3.2P3.3 P3.4 P3.5 P3.6 P3.7 2.2.2 MCS-51单片机的总线结构总线的概念:总线即三总线,指数据总线、地址 总线、控制总线。 总线的一般说法为:多个部件信息的电气连接 MCS-51单片机的总线:内部具有产生总线的结 构。如图2-6所示。 单片机总线的应用: 扩展数据存储器 扩展程序存储器 2.2.2 MCS-51单片机的外部总线结构I / O 口控 ( 制 总 ) 线 CBP1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6/WR P3.7/RD ALE PSEN EA RST89C51、89C52P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 ALE P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7地 74 址 锁 57 存 3 器数 D0 : 据 : 总 : D7 线 A0 : : : : : 地 ( : 址 A7 A8 总 : ) 线 : : : : : A15 (DB) AB图2-6 MCS-51单片机总线结构LS 2.3 MCS-51单片机的存储器结构主要内容2.3.1 程序存储器结构 2.3.2 片内数据存储器结构 2.3.3 片外数据存储器结构 MCS-51单片机存储器概述1、单片机的哈佛结构存储器MCS-51单片机为哈佛结构:程序存储器ROM 和数据存储器RAM分开编址 PC机为诺依曼:ROM和RAM统一编址 程序存储器:固化程序、常数和数据表 数据存储器:存放程序运行中产生的各种数据、 用作堆栈等 2、单片机的存储器空间及分类MCS-51单片机有4个存储空间: 片内程序存 储器、片内数据存储器,片外程序存储器、片外数 据存储器。 4个存储空间可以分成三类: 片内数据存储空 间(256B的RAM和128B的特殊功能寄存器)、片 外数据存储空间(64KB)、片内和片外统一编址 的程序存储空间(64KB) 不同类型的存储空间,有各自的寻址方式和访 问指令。 2.3.1 程序存储器结构一、程序存储器结构51基本型片内有4KB的Flash ROM,地址为 0000H~0FFFH,片外最多可以扩展60KB,地址 为1000H~FFFFH。 增强型片内有8KB的Flash ROM,地址为 0000H~1FFFH,片外最多可以扩展56KB,地址 为2000H~FFFFH,片内外是统一编址的。 程序存储器空间的配置如图2-7所示 2.3.1 程序存储器结构 FFFFH 片外 ROM FFFFH 片外 ROMH1FFFH片外 ROM EA=0 0000H 片内 ROM 片外 ROM0FFFH片内 ROM EA=1EA=1EA=00000H(a)片内有4KB的ROM (b)片内有8KB的ROM图2-7 MCS-51单片机程序存储空间的配置 2.3.1 程序存储器结构EA的作用单片机在执行指令时,对于低地址部分,究竟 是从片内程序存储器取指令,还是从片外程序存储 器取指令? 决定于程序存储器选择引脚EA的电平: EA接低电平,读片外程序存储器 EA接高电平,CPU从片内程序存储器取 指令。 当取指令的地址大于片内存储器的最大地址时, CPU自动转到片外程序存储器取指令。 2.3.1 程序存储器结构二、程序存储器的专用区域用作复位和中断入口。 中断向量:即中断入口地址。如下表 注意区分:中断入口地址、中断服务程序入口地 址、中断服务程序。表2-3 ROM中专用存储区域存储单元 应 用 中断入口地址 BH BH BH0000H~H~000AH 000BH~H~001AH 001BH~H~002AH 002BH~0032H复位后引导程序地址 外中断0 定时器0中断 外中断1 定时器1中断 串行口中断 定时器2中断(增强型) 2.3.1 程序存储器结构C语言编程所考虑的问题 如果用C语言编写程序,不需要考虑以上 这些问题,即不用考虑引导程序问题,中断入 口与跳转问题,这些问题均由编译系统安排好。 main( )函数起到引导程序的作用。 对于中断处理,只要按照格式编写中断处 理函数即可(见第4章)。 2.3.2 片内数据存储器结构片内数据存储器按照寻址方式,可以分为三个 部分:低128字节数据区,高128字节数据区,特殊 功能寄存器区。如下图所示。FFH FFH FFH 高128B RAM idata区 80H 低128B RAM data区 00H 00H 7FH 低128B RAM 特殊功能 寄存器特殊功能寄存器 80H 7FH80Hdata区 (b)增强型单片机片内RAM(a)89C51片内RAM 2.3.2 片内数据存储器结构一、低128字节RAM地址范围:00H~7FH,128字节 应用特点:有多种用途、且使用最频繁 功能作用:分为三个区域,即工作寄存器区、 位寻找区、通用数据区。 寻址方式:直接、间接、位寻址 低128字节RAM的配置如图2-9所示。 7F 堆栈和 数据缓存 30通 用 数 据 区2F20位地址为 00H~7FH (128位)位 寻 址 区工 作 寄 存 器 区1F 1817 10R0、R1…R7(第3组) (第2组) (第1组) (第0组)R0、R1…R70F 08 07 00R0、R1…R7R0、R1…R7如 何 选 择 某 一 组 ?图2-9 低128字节RAM区 2.3.2 片内数据存储器结构1、工作寄存器区范围:地址从00H到1FH,共32字节。 分4个组:第0组、第1组、第2组、第3组 工作寄存器名:R0、R1……R7。 不同的组对应的8个寄存器的地址不同,如表 2-1所示。 工作寄存器组的选择:决定于程序状态字PSW 的RS1和RS0位。见表2-1。 C语言下选寄存器组:在定义函数时,通过使用 关键字“using”来选择(如using m) 。 2.3.2 片内数据存储器结构2、位寻址区范围:字节地址从20H到2FH,16字节。 位地址:00H到7FH ,128位。 用途:既可以做位操作,也可以字节操作。 C语言编程:用关键字“bit”定义的位变量在 该区域;用关键字“bdata”将一般变量定义在该 区域,并且定义的变量还可以进行位寻址。 2.3.2 片内数据存储器结构3、通用数据区范围:地址从30H到7FH,共80字节。 用途:用于堆栈、存放数据、存放程序运行的 中间结果等。4、寻址方式直接、间接、位寻址方式访问 直接、间接范围:字节地址从00H到7FH 位寻址范围:字节地址从20H到2FH,16字节; 位地址00H到7FH,128位 2.3.2 片内数据存储器结构二、高128字节RAM地址范围:80H~FFH,128字节 用途:与低128字节中的30H到7FH完全一样, 用于堆栈、存放程序运行时的数据和中间结果等。 寻址方式:间接访问。 C语言编程:使用关键字“idata”定义变量 2.3.2 片内数据存储器结构三、特殊功能寄存器(SFR)也称为专用寄存器,是单片机中最重要的部分。? ? ?地址范围:80H~FFH,128字节 功能作用: 控制单片机各个部件的运行 反映各部件的运行状态 存放数据或地址 寻址方式:直接访问 2.3.2 片内数据存储器结构1、具体特殊功能寄存器 SFR的数量:基本型只有21个,增强型有27个; 分别有11个、12个可以按位操作。分为6组。 (1)与CPU相关的(7个) PWS*:程序状态寄存器 A*:累加器 B*:辅助运算寄存器 SP:堆栈指针 PCON:电源控制寄存器 DPL、DPH:数据指针的低字节、高字节 合称DPTR,16位寄存器 2.3.2 片内数据存储器结构(2)与定时器0、1相关的(6个) TMOD:模式寄存器 TCON*:控制寄存器 TL0、TH0:T0低8位、高8位计数器 TL1、TH1:T1低8位、高8位计数器 (3)与定时器2相关的(6个,仅增强型有) T2MOD:T2模式寄存器 T2CON*:T2控制寄存器 TL2、TH2:T2低8位、高8位计数器 RCAP2L、RCAP2H:T2捕获寄存器 2.3.2 片内数据存储器结构(4)与中断相关的(2个) IE*:中断允许(控制)寄存器 IP*:中断优先级寄存器 (5)与串行口相关的(2个) SCON*:串行口控制寄存器 SBUF:串行口数据缓冲寄存器,2个 (6)与I/O口相关的(4个) P0*、P1*、P2*、P3* 4个并行口映射寄存器 2.3.2 片内数据存储器结构2、一些最重要的寄存器在表2-5中有格式的特殊功能寄存器最重要,它 们是(9个): PSW*、IE*、IP*、TCON*、TMOD SCON*、PCON、T2CON*、T2MOD 应用单片机,主要就是掌握这9个有格式的特 殊功能寄存器,对基本型仅有7个。 2.3.2 片内数据存储器结构3、特殊功能寄存器在C语言中的表示这些特殊功能寄存器及各位位名在汇编语言中 能够识别,但在C语言中并不识别。 为了在C语言中使用,必须先做定义,它们多 数在“reg51.h”、“reg52.h”等头文件做了定义。 但有一些未做定义,如4个并行口P0~P3各位, 累加器A,寄存器B等,在使用时需要用户定义。 2.3.3 片外数据存储器结构地址范围:0000H~FFFFH 容量:共64KB 访问指令:“MOVX”(片内用MOV) 使用“MOVX”指令对片外RAM进行读/写操作 时,会自动产生读/写控制信号RD和WR,作用于 片外RAM实现读/写操作。 2.3.3 片外数据存储器结构片外RAM的用途: (1)没有特别的用途,不像片内RAM,不划 分区域。 (2)片外RAM做通用RAM使用,主要存放大 量采集的或接收的数据、运算的中间数据、最后结 果、用作堆栈等。 C语言编程:使用关键字“xdata”或“pdata” 将变量、数组、堆栈定义到片外RAM区。 2.3.3 片外数据存储器结构MCS-51单片机的存储器总结MCS-51单片机的存储器系统,有4个存储空间, 按照不同的寻址方式,分成三类存储空间(片内、 片外数据存储空间和程序存储空间)、7个存储区 域。7个存储区为:片内数据存储器包括①直接访问的data区、 ② 间接访问的idata区、 ③可按位寻址的bdata区, ④可直接寻址的特殊功能寄存器区; 片外数据存储器包括⑤按页内间接寻址的pdata 区, ⑥间接访问的xdata区; ⑦片内和片外程序存储器称为code区。 2.4 MCS-51单片机的时钟及CPU时序主要内容2.4.1 时钟电路及时钟信号 2.4.2 CPU时序 MCS-51单片机内有一个节拍发生器, 即片内振荡器和分频器,能够产生单片机 工作的各种时钟信号。 2.4.1 时钟电路及时钟信号一、时钟电路MCS-51单片机内部有产生振荡信号的放大电 路,可以两种方式产生时钟信号,一种是内部方式, 另一种是外部方式。单片机1、内部方式就是利用单片机内部 的高增益反向放大器,外 接晶振等器件构成的振荡 电路。30pC1C218 XTAL2晶 振19 XTAL130p 2.4.1 时钟电路及时钟信号2、外部方式就是把外部的时钟信号接到XTAL1或XTAL2 引脚上,给单片机提供基本的时钟信号。主要用 于多电路时钟同步。VccHMOS 工艺18 XTAL2 外部时 钟信号VccCHMOS 工艺19 XTAL1外部时 钟信号19 XTAL118 XTAL2 二、时钟信号2.4.1 时钟电路及时钟信号在单片机中,泛义的时钟信号包括:振荡信号、 振荡信号的2分频信号、机器周期信号等。1、时钟信号与状态周期时钟信号:振荡频率的2分频,是基本时序信 号。也叫状态信号状态周期S:时钟信号的周期时钟信号的前、后半个周期称为相位1(记为P1) 和相位2(P2),也称为节拍1、节拍2。时钟信号 振荡信号 S1 S3 S5 S2 S4 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 2.4.1 时钟电路及时钟信号2、机器周期机器周期:指CPU访问一次存储器所需要的时 间。机器周期是量度时间的基本单位 机器周期与时钟周期的关系: 1个机器周期包 含6个时钟周期或状态周期 机器周期与振荡周期的关系: 1个机器周期包 含12个振荡周期,即 机器周期=12/fosc 例如,单片机的振荡频率fosc为12MHz,则 机器周期=12/fosc=10-6s=1? s 若振荡频率为6MHz,则机器周期为2? s。 2.4.1 时钟电路及时钟信号3、指令周期指令周期:指CPU执行一条指令所需要的时间。 用机器周期量度。 不同的指令有不同的指令周期,有单机器周期、 双机器周期、4机器周期三种。 2.4.2 CPU时序CPU时序即CPU操作时序,包括取指令和执行 指令两个阶段。 指令周期分为:单机器周期、双机器周期、4 机器周期三种。 指令字节:单字节、双字节、三字节 一些典型指令的操作时序如图2-11所示。 2.4.2 CPU时序时钟信号S1 S3 S5 S2 S4 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2振荡信号ALE 读操作码 S1 S2 S3 S4 读下一操作码(丢弃) S5 S6(a)单字节、单周期指令 如:MOV A, Rn读操作码 S1 S2 S3 S4 读第2字节 S5 S6(b)双字节、单周期指令,如:ADD A, #data 图2-11 MCS-51单片机的CPU时序(1) 2.4.2 CPU时序S1 S2 S3 S4 S5 S6 时钟信号 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2ALE读操作码 S1 S2 S3 S4 读第2字节 S5 S6 读第3字节(c)三字节、双周期指令 如:DJNZ direct, rel读操作码S1 S2 S3 S4 读下一操作码(丢弃) S5 S6(d) 单字节、双周期指令 如:MOVX 图2-11 MCS-51单片机的CPU时序(2) 2.5 MCS-51单片机的复位主要内容2.5.1 复位状态 2.5.2 复位电路 2.5.1 复位状态1、引脚信号状态ALE、PSEN均为高电平2、寄存器状态? ? ? ? P0~P3:FFH SP: 07H SBUF: 不确定 其余: 00H(“×”位按0计) 具体如表2-6所示 表2-6 各特殊功能寄存器的复位值SFR寄存器 PC ACC B PSW SP 复位值 H 00H 07H SFR寄存器 TCON T2CON √ TL0 TH0 TL1 复位值 00H 00H 00H 00H 00HDPTRP0~P3 IP ○0000HFFH ×××00000BTH1TL2 TH2 √ √00H00H 00HIPIE IE√○ √××000000B0××00000BRCAP2L √RCAP2H √ SCON00H00H 00HTMODT2MOD √00H××××××00BSBUFPCON ○不确定0×××0000B 2.5.2 复位电路 一、复位电路主要有两种方式:上电自 动复位、手动复位。1、上电自动复位单片机在正常工作时,高电平 持续2个时钟即复位。上电时高电 平要维持10ms以上。Vcc C 22?单片机RST R 1k上电复位电路 2.5.2 复位电路2、手动复位下面电路具有上电自动 复位和手动复位功能。上电时RST引脚高电 平持续的时间,决定于 复位电路的时间常数R2C之 积,大约是0.55R2C左右。 t=-R2C*ln(UR/Vcc) UR&2.4v,取2.85vR1 200VccC 22?单片机RSTR2 1k 按键复位电路 2.6 MCS-51单片机的 低功耗工作方式主要内容2.6.1 低功耗结构及控制 2.6.2 空闲工作方式 2.6.3 掉电工作方式 单片机的功耗MCS-51单片机通常有两种半导体工艺:一是 HMOS工艺(高密度短沟道工艺),高速;二是 CHMOS工艺(互补金属氧化物的MOS工艺), 高速低功耗。 如8051(HMOS)的功耗为630mW,而 80C51(CHMOS)的功耗只有120mW。 有些新型低功耗单片机,如STC89C51,正常 工作功耗为4~7mA,空闲方式功耗约2 mA,掉 电方式功耗小于0.5? A。 2.6.1 低功耗结构及控制1.低功耗工作结构对于CHMOS工艺的单片机,内部设计有节 电方式运行电路,单片机可以空闲和掉电两种 节电方式工作。节电工作方式由电源控制寄存 器控制。 其低功耗工作原理结构如下图所示。XTAL2 振 荡 电 路 PDXTAL1&时钟 发生器去中断、串行口 定时器/计数器&IDL去CPU 2.6.1 低功耗结构及控制2、电源控制寄存器PCON电源控制寄存器PCON的地址为87H, CHMOS工艺的单片机(89C52)的PCON格式 如下图所示,对HMOS工艺的单片机只有 SMOD位。各位含义如下: PCON D7 D6 D5 D4 D3 D2 D1 D0 (87H) SMOD — — — GF1 GF0 PD IDL 2.6.1 低功耗结构及控制D7 D6 D5 D4 D3 D2 D1 D0 PCON (87H) SMOD — — — GF1 GF0 PD IDLSMOD:波特率倍频位。 若此位为1,则串行口方式1、方式2和 方式3的波特率加倍。 GF1、GF0:用户标志位。 PD:掉电方式控制位。 此位写1,单片机进入掉电方式。此时 系统时钟电路停止工作,致使系统所有部件停止 工作,系统功耗达到最低。 2.6.1 低功耗结构及控制IDL:空闲(等待、待机)方式控制位。 此位写1,单片机进入空闲方式。此时停止 给CPU提供时钟,CPU停止工作,而其它部件 (定时器、串行口、外中断)仍正常工作。 如果同时向PD和IDL两位写1,则PD优先, 进入掉电方式。 PCON的复位值为:0×××0000B 2.6.2 空闲工作方式空闲方式又叫等待方式、待机方式。1、进入空闲方式(1)进入方式:置IDL为1 (2)状态 CPU不工作,内部时钟不向CPU提供 CPU的内部状态保持不变,即SP、PC、 PSW、ACC等保持不变,所有寄存器的值保持 不变。 引脚上:ALE和PSEN保持高电平。 2、退出空闲方式2.6.2 空闲工作方式有两种方法可以退出空闲方式 (1)响应中断退出 响应任何中断都可以使硬件将IDL位清0而结 束空闲方式。 中断服务程序后的返回位置,即返回后要执 行的第一条指令,就是原先使IDL置位指令后面 的那条指令。 可以用GF0或GF1指明从空闲方式进入中断。 (2)硬件复位退出 硬件复位退出空闲状态。 RST端的复位信号直接将IDL位清0,从而退 出空闲状态,CPU则从进入空闲方式的下一条指 令开始重新运行。 2.6.3 掉电工作方式掉电方式又叫停机方式。1、进入掉电方式(1)进入方法:置PD为1 (2)系统状态 内部振荡器停止工作,因此,所有功能部件 都停止工作。 内部RAM区和特殊功能寄存器的值保持不 变 引脚上:ALE和PSEN都为低电平。 2.6.3 掉电工作方式2、退出掉电方式对于一般的单片机来说,退出掉电方式的唯 一方法是由硬件复位,复位后将所有特殊功能 寄存器的内容初始化,但不改变片内RAM区的 数据。 对于某些新型的单片机,如STC89C51系列 单片机,可以通过外中断退出掉电方式,其过 程与空闲方式通过中断退出一样。 2.7 MCS-51单片机的输入/输出端口主要内容2.7.1 P1口 2.7.2 P2口 2.7.3 P3口 2.7.4 P0口 2.7.5 端口的负载能力 和接口要求 I/O口概述MCS-51单片机的4个8位端口:均可作一般I/O口,都是准双向口。每个端口都可以按位作输入或输出 端口结构:每个端口都有一个(1)输出锁存器; (2)输出驱动器;(3) 输入缓冲器。 输出时锁存数据,输入时数据缓冲。 4个端口的差别:功能不尽相同、内部结构 有区别 2.7.1 P1口P1口是唯一的静态准双向口,用作通用I/O 口。 P1口的结构:主要由(1)输出锁存器;(2) 输出驱动器(场效应管FET);(3)两个三态 缓冲器;(4)端口上拉电阻(实为FET)等部 分组成。 P1口相对来说是最简单的,其电路结构如图 2-10所示。 2.7.1 P1口 端口输入 缓冲器 读锁存器 1 内部总线 写锁存器 输出锁存器 读引脚 D 锁存器 CL Q 2 Q Vcc 上拉电阻 R P1.xT 输出驱动器图2-15 P1口某一位的原理结构引脚输入 缓冲器 2.7.1 P1口一、P1口输出输出1:将1写入P1口某一位的锁存器,使输 出驱动器的场效应管T截止,该位的引脚由内部 上拉电阻拉成高电平,输出为1。 输出0:将0写入锁存器,使场效应管导通, 则输出引脚为低电平。 不需要外接上拉电阻:因P1口内各位有上拉 电阻,所以在输出高电平时,能向外提供拉电流 负载。 2.7.1 P1口二、P1口输入输入通道建立:当P1口的某位用作输入时, 该位的锁存器必须锁存输出1(该位先写1), 使输出场效应管T截止,才能够正确输入。 输入:这时从引脚输入的值决定于外部信号 的高低,引脚状态经“读引脚”信号打开的三 态缓冲器2,送入内部总线。 2.7.1 P1口准双向口特点输入时必须向对应位先写1:因为有可能前面 的操作使引脚输出0,场效应管T处于导通状态, 引脚被箝位为0,这样,不管外部信号为何状态, 从引脚输入的永远为0,不能够正确输入。 单片机端口输入前必须先向端口输出1这种特 性,称为准双向口。 MCS-51单片机的P0~P3口作为通用I/O口使 用时,都是准双向口。 2.7.1 P1口三、P1口作“读—修改—写”操作“读—修改—写”操作概念:在CPU执行某 些指令时,需要先从P1口读入数据,经过某些操 作后,再从P1口输出,这样的操作称为“读—修 改—写”操作。 例如:指令“INC P1”,其操作先把P1口原 来的值读入(读入的是锁存器中的值,而不是引 脚的值),然后加上1,最后把结果再从P1口输 出。 表2-7给出了P0~P3口所有的“读—修改—写” 指令。 2.7.1 P1口表2-7 Px口的“读—修改—写”指令助记符 INC DEC ANL ORL XRL DJNZ CPL JBC 增1 减1 逻辑与 逻辑或 逻辑异或 减1,结果不为0转 位求反 测试位为1转并清0 功 能 实 例 INC P0 DEC P1 ANL P2,A ORL P3,A XRL P1,A DJNZ P2,LABEL CPL P3.0 JBC P0.1,LABEL 2.7.2 P2口P2口是一个双功能口,一是通用I/O口,二是以 总线方式访问外存时的高8位地址口。 端口结构:与P1口的结构类似,但比P1口多了 一个多路切换开关MUX和反相器3。读锁存器 1 内部总线 写锁存器 D 地址 控制 Vcc R QP2.x MUX3 T锁存器 CL Q 2读引脚 2.7.2 P2口一、P2口作通用I/O口一般I/O读/写操作指令:如执行“MOV A,P2” 指令、执行“MOV P2,B”指令。 I/O口通道:由内部硬件自动使开关MUX拨向 下边,与锁存器的输出端Q接通,这时P2口为通用 I/O口,与P1口一样。 I/O口读/写操作:可以随时做输出,输入时要 考虑其准双向口,先输出1。 2.7.2 P2口二、P2口输出高8位地址高8位地址输出通道:当进行总线读/写操作 (执行“MOVX”指令)时, MUX开关在硬件控 制下自动拨向上边,P2口输出高8位地址。 总线操作指令: “MOVX A,@Ri”或“MOVX @Ri, A” “MOVX A,@DPTR”、 “MOVX @DPTR,A” “MOVC A,@A+DPTR” P2口始终输出高8位地址。 此时,P2口不能作为一般I/O口使用。 2.7.2 P2口使用片外程序存储器: CPU从片外程序存储器每读一条指令,P2口 就输出一次高8位地址。 由于CPU需要一直读取指令,P2口始终要输 出高8位地址。 在这种情况下P2口不能够作为通用I/O口使用。 2.7.3 P3口P3口是一个多功能口,某位结构如图2-17 P3口的结构:与P1口比较,多了“与非 门”3、缓冲器4。 正是这两个部分,使得P3口具有第2功能 “与非门”3的作用:实际上是一个开关,决 定是输出锁存器Q端数据,还是输出第2功能 (W)的信号。 2.7.3 P3口 第2功能输出 读锁存器 第2功能输出 Vcc R Q W TXD WR RD P3.x1内部总线 写锁存器 D锁存器CL Q&3T读引脚2第2功能输入4第2功能输入RXD INT0 INT1 T0、T1图2-17 P3口某一位的原理结构 2.7.3 P3口一、P3口用作通用I/O口I/O通道:当通过P3口进行I/O读/写操作(执 行MOV等指令)时,“与非门”3的W信号自动 变高,为Q信号输出打开“与非门”,输出信号 经过FET从P3引脚输出,且为输入做准备。 输入:其准双向特性应该先输出1;P3口引脚 的外部信号,经缓冲器4(常开)到缓冲器2,读 引脚时打开缓冲器2,引脚状态进入内部总线。 2.7.3 P3口二、P3口用作第2功能当使用P3口的第2功能时,8个引脚有不同的意 义(见表2-2)。 1)第2功能输出 第2功能输出通道:输出位的锁存器被内部硬 件自动置1,使与非门3对第2功能的输出是打开的。 第2功能输出可以是: TXD、WR、RD。 例如,P3.7第二功能为RD。 2.7.3 P3口2)第2功能输入 第2功能输入通道:某位作第2功能输入时,该 位的锁存器输出端被硬件自动置1,并且W保持为1, 则与非门3输出低,FET截止,该位引脚为高阻输 入。 P3口的第2输入功能可以是: RXD、INT0、INT1、T0、T1。 此时端口不作通用I/O口,三态缓冲器2不导通。 2.7.3 P3口表2-2 P3口各引脚多功能定义引脚P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6第二、第三功能RXD:串行口输入 TXD:串行口输出 INT0/GATE0 :外部中断0请求输入 /定时器/计数器0运行外部控制输入 INT1/GATE1 :外部中断1请求输入 /定时器/计数器1运行外部控制输入 T0:定时器/计数器0外部计数脉冲输入 T1:定时器/计数器1外部计数脉冲输入 WR:外部数据存储器写控制信号输出P3.7RD:外部数据存储器读控制信号输出 2.7.4 P0口P0口是一个即可做总线口、也可以做一般 I/O口使用。 作为总线操作时,分时地输出低8位地址和传 输数据、指令。 作为一部I/O口操作时,是准双向口。 P0口的结构比其它口复杂。 2.7.4 P0口P0口结构:与P1口比较,多了 (1)一路总线输出 (地址/数据)、(2)总线输出控制电路(反相器3和 与门4)、(3)两路输出切换开关MUX及开关控制C。 并且上拉电阻换成了场效应管T1。读锁存器 地址 数据 控制C Vcc T1R P0.x T2&1内部总线 写锁存器34DQ1锁存器CL QMUX0读引脚2 图2-18 P0口某一位的原理结构 2.7.4 P0口一、P0口用作通用I/O口(C=0)I/O通道:当通过P0口进行I/O读/写操作(执行 MOV等指令)时,由硬件自动使控制线C=0,封 锁与门4,使T1截止。MUX拨向Q输出端,把输出 场效应管T2与锁存器的Q端接通。P0口可以作通用I/O口使用,但输出级是开漏 电路,外接上拉电阻,才能输出高电平。 P0口作为通用I/O口时,也是准双向口。 2.7.4 P0口二、P0口作为地址/数据总线使用(C=1)1、总线操作通道当CPU对片外存储器(程序、数据)进行读/写 (执行MOVX指令,或EA=0时执行MOVC指令) 时,使控制线C=1,MUX拨向总线输出端。 P0口的总线操作:分时地输出地址和传输数据、 指令。 具体有两种情况。 2.7.4 P0口2、P0口作为总线输出地址或数据在扩展的程序存储器或数据存储器系统中,对 于P0口分时地输出地址和输出数据,端口的操作 是一样的。 总线输出通道:MUX开关把CPU内部的地址或 数据经反相器3与驱动场效应管T2的栅极接通。 总线输出操作:输出1时,T1导通而T2截止, 从引脚输出高电平;输出0时,T1截止而T2导通, 从引脚输出低电平。 2.7.4 P0口3、P0口作为总线输入数据或指令总线输入通道: 1)控制线C=1,总是将开关MUX拨向反相器3 的输出端,总线输入时也是如此。 2)为了能够正确读入引脚的状态,地址/数据 自动输出1,使T2截止,T1导通。 总线输入操作: “读引脚”信号有效,三态缓冲器2打开,引 脚上的信号进入内部总线。 2.7.5 端口负载能力和接口要求一、P0口1、负载能力(1)一般I/O口的负载能力 每一位输出可以驱动4个LS型TTL负载 (2)用作总线时的负载能力 P0口作总线时,每一位输出可以驱动8个LS型 TTL负载。LS型TTL:L表示低功耗;S表示肖特基技术(超高速) 肖特基(Schottky)二极管是一种快恢复二极管,它属 一种低功耗、超高速半导体器件。 2.7.5 端口负载能力和接口要求2、接口要求(1)一般I/O口的接口要求 P0口的输出级无上拉电阻,当把它用作通用 I/O口时,输出级是开漏电路。 用其输出驱动NMOS电路时,要外接上拉电阻。 (2)用作总线时的接口要求 把P0口用作地址/数据总线时(系统扩展有 ROM或RAM),则无须外接上拉电阻。 作总线输入时,不必先向端口写1。 2.7.5 端口负载能力和接口要求二、P1~P3口1、负载能力 P1~P3口的输出级接有上拉电阻,它们的每一 位输出可以驱动4个LS型TTL负载。 2、接口要求 由于P1~P3口的输出级接有上拉负载电阻,无 论是作为输入口,还是作为输出口,不管外部电路 的类型是什么,均无须外接上拉电阻。 本章小结本章首先认识了单片机的结构、工作原理及引脚 信号。接着详细讨论了存储器的结构,包括片内/片外程 序存储器和数据存储器的结构。然后讨论了单片机的输入/输出端口、时钟和 CPU操作时序。 最后讨论了单片机的工作方式。 本章是单片机的基础内容,对这些内容必须有清 晰的认识,并且要掌握存储器的结构,特别是片内 数据存储器的低128B和特殊功能寄存器。 本章完
单片机原理及应用教程(C语言版)-第2章 MCS-51单片机的结构与原理——为大家提供各种日常写作指导,同时提供范文参考。主要栏目有:范文大全、个人简历、教案下载、课件中心、 优秀作文、考试辅导、试题库、诗词鉴赏。
相关文档:
下载文档:
搜索更多:
All rights reserved Powered by
copyright &copyright 。甜梦文库内容来自网络,如有侵犯请联系客服。|

我要回帖

更多关于 c语言信号量 的文章

 

随机推荐