单片机的硬件结构.ppt
单片机基础知识,2023/3/22,2,第二章 单片机的硬件结构,2.1单片机整体结构,2.2外部引脚功能,2.4定时/计数器,2.3存储器组织,2023/3/22,3,2.1单片机整体结构,第二章 单片机的硬件结构,2023/3/22,4,2.1 MCS-51单片机整体结构,硬件配置基本配置:1.8位CPU2.片内ROM/EPROM、RAM3.片内并行 I/O接口4.片内16位定时器/计数器5.片内中断处理系统6.片内全双工串行I/O口,不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。,2023/3/22,5,MCS-51单片机内部结构,2023/3/22,6,一、中央处理器CPU 主要指运算器、控制器 决定单片机的主要性能指标:字长、运行速度、数据处理能力,中断和实时控制能力。,2023/3/22,7,1、运算器 进行算术和逻辑运算,8位。主要包括算术逻辑单元ALU、累加器ACC、暂存器、程序状态字PSW、B寄存器。主要任务:算术运算逻辑运算位操作数据处理利用程序状态寄存器PSW表述当前运行状态,2023/3/22,8,1)算术逻辑单元ALU 即加法器,是核心部件,进行算术逻辑运算,其中乘(MUL)、除(DIV)运算是执行时间最长的指令。2)累加器ACC 累加器ACC是最常用的专用寄存器。进入ALU作算术操作和逻辑操作的操作数很多来自ACC,操作的结果也常送回ACC。3)B寄存器 是ACC的辅助寄存器,在乘除时,ACC不够用便使用B寄存器。,2023/3/22,9,2、控制器 控制器是CPU的大脑中枢,它以定时控制逻辑为中心,按照人们预先给定的计算步骤,即预先编写好的已经输入到计算机存储器中的程序发出一系列控制信号,控制计算机各个部件的工作,如运算、存储等。包括指令寄存器IR、指令译码器ID、数据指针DPTR、程序计数器(指针)PC、堆栈指针SP、以及控制电路(时序电路、中断控制部件、微操作控制部件)。,2023/3/22,10,1)程序计数器PC(程序指针)16位的地址指针,专门用来控制指令执行顺序的寄存器,其中的内容总是下一条要执行的指令的地址。可以对64K字节的程序存储器直接寻址。复位时,PC=0000H,使程序从0单元开始执行。通常单片机每取一个字节机器码,PC就自动加1,从而保证了指令的顺序执行。转移指令可强行改变PC的内容。,2023/3/22,11,2)时序 指按照指令功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路完成某种操作。CPU需要一个时钟,在XTAL1和XTAL2上接石英晶体和微调电容构成振荡器。频率为412MHz,2023/3/22,12,3)指令寄存器IR ID是8位寄存器,用于存放从ROM中取出的指令码。而且每条指令的第一个字节一定是操作码,其后的指令码可以是操作数或操作码。指令译码器ID ID可以对指令码进行译码,即判断出存放的是操作命令(操作码)还是操作数(操作数可以是操作地址或立即操作数),以进行下面的工作。这些工作是自动完成的。,2023/3/22,13,4)微操作控制部件 逻辑门电路,将ID信号和时序向片内各部件送高低电平。中断控制部件 自动完成“中断申请”、“中断相应”、“恢复断点”等工作。,2023/3/22,14,二、内部RAM单片机内部数据RAM共256字节。分为低128B和高128B地址空间。低128B地址空间的RAM常称为片内RAM;高128B地址空间的RAM 称为特殊功能寄存器SFR。但SFR18个寄存器只占用了21B供用户使用。其他的107B系统保留。,2023/3/22,15,2023/3/22,16,1)片内RAM(007FH)工作寄存器区:(32B)字节地址:00H1FH位寻址区:(16B)字节地址:20H2FH位地址为:00H7FH数据缓冲区:(80B)字节地址:00H7FH一般使用30H7FH,2023/3/22,17,三、片内ROM ROM用于存放程序、原始数据及表格。8051:片内4K掩膜ROM 8031:片内ROM 8751:片内4K EPROM,2023/3/22,18,四、定时器/计数器 MCS-51系列单片机典型产品8051等单片机内部有2个可编程的16位定时器/计数器T0、T1 最大计数脉冲个数:165536,2023/3/22,19,五、并行I/O口 MCS51系列单片机有4个8位并行I/O口:P0、P1、P2、P3共占了32根I/O引脚单片机扩展时,这些I/O引脚又作为扩展总线用。P0口作为地址/数据总线,分时输出低8位地址和传送8位数据;P2口作为高8位地址总线;P3口也具有第二功能。这是由接口的特殊结构所决定的。,2023/3/22,20,六、串行口 完成单片机和其他计算机或通讯设备之间的串行数据通讯。MCS51系列P3口的RXD(P3.0)和TXD(P3.1)构成,2023/3/22,21,中断系统是计算机的重要指标之一。,某人看书 执行主程序 日常事务电话铃响 中断信号如INT=0 中断请求暂停看书 暂停执行主程序 中断响应书中作记号 当前PC入栈 保护断点电话谈话 执行中断程序 中断服务继续看书 返回主程序 中断返回,七、中断系统,日常生活中的中断与计算机中断的比较:,2023/3/22,22,2023/3/22,23,八、布尔处理器 MCS51单片机内含有一个布尔处理器,是单片机CPU中运算器的一个重要组成部分。它实际上是一个完整的1位微处理器,这个1位机有自己的CPU、位寄存器、I/O口和指令集。可提供17条位操作指令,硬件有自己的“累加器”(进位位C)和自己的位寻址RAM和I/O空间,所以是一个独立的位处理机。MCS51单片机把8位机和1位机复合在一起,发挥各自的长处,这是它的一大优点。,2023/3/22,24,2.2外部引脚功能,第二章 单片机的硬件结构,2023/3/22,25,MCS51系列单片机采用40个引脚的双列直插式塑料封装的芯片。共可分为四个部分:1、电源2个2、外接晶体振荡器2个3、控制信号引脚4个4、I/O引脚32个,2023/3/22,26,一、主电源引脚VDD:接5V电源VSS:接地端 一般VDD 和VSS之间应接高频和低频滤波电容。,2023/3/22,27,二、外接晶体振荡器引脚XTAL1:芯片内部振荡电路(单级反相放大器)输入端XTAL2:芯片内部振荡电路(单级反相放大器)输出端 振荡频率为晶振频率(1.212MHz),另外需两个30pF左右的电容以微调频率,2023/3/22,28,1、接石英晶体和微调电容 2、接外部时钟,MCS51单片机的振荡器有内部和外部两种方式。,2023/3/22,29,时序:时间的先后顺序,控制器按照指令功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路,完成某种操作。机器周期12个时钟周期(振荡周期)有6个状态(S1S6),一个状态为2个振荡周期,分为P1和P2节拍,一般算术和逻辑指令发生在P1期间,寄存器之间的传输发生在P2期间。设单片机工作在12M晶振,则时钟周期为1/12微秒,一个机器周期121/121微秒一些指令完成较快用一个机器周期;一些较慢,用2个机器周期;有两个指令(MUL、DIV)用4个机器周期。指令周期:执行一条指令的时间。(单周期指令,双周期指令等),2023/3/22,30,三、控制信号1、RST/VPD:复位/掉电时内部RAM的备用电源输入端复位端RST:启动时,需要复位,使CPU各部件处于确定的初始状态。正常工作状态(振荡器稳定),该引脚上出现持续24个振荡周期(即两个机器周期)以上的高电平,单片机就可完成系统复位操作。,2023/3/22,31,MCS-51复位后内部寄存器状态,2023/3/22,32,备用电源输入端VPD:当无VCC时使用,使内部RAM供电以实现掉电保护。,2023/3/22,33,2、ALE/PROG:地址锁存允许/编程脉冲输入。ALE:地址锁存允许信号 片外存储器作数据存取时,ALE为低8位地址锁存允许输出信号,在其下降沿将从P0口输出的低8位地址锁存到地址锁存器。以1/6振荡频率(即1/2机器周期)周期性输出PROG:在对8751片内EPROM编程时,编程脉冲由此输入。,2023/3/22,34,3、EA/VDD:访外允许/编程电压输入、8031中EA必须接地。8051/8751中 EA1,单片机使用片内ROM/EPROM(由PC值决定);EA0,单片机片内程序存储器失效,而 使用片外程序存储器。、VDD 对8751片内EPROM编程时,此脚接编程电压。(+21V+25V),2023/3/22,35,4、PSEN:外部程序存储器读选通信号 它与ALE配合,使P0口完成地址线和数据线的功能。当访问片内ROM、RAM时无效。,2023/3/22,36,5、四个8位并行I/O口,MCS-51单片机有4个8位并行I/O口,共占了32根I/O引脚,单片机扩展时,这些I/O引脚又作为扩展总线用。其中P0口作为地址/数据总线,分时输出低8位地址和传送8位数据;P2口作为高8位地址总线;P3口也具有第二功能。这是由接口的特殊结构所决定的。每一个口都包含一个锁存器,一个输出驱动器和两个(P3口为3个)输入缓冲器。各口的结构也有些差异,下面分别介绍。,2023/3/22,37,一、并行I/O口的功能结构,(一)P1口,1、接口结构,图2.15,接口结构中锁存器起输出锁存作用,8位锁存器组成特殊功能寄存器P1。,2023/3/22,38,一、并行I/O口的功能结构,(一)P1口,2、接口功能,P1口只有一种功能通用输入输出接口。,2023/3/22,39,一、并行I/O口的功能结构,(二)P2口,P2口一位结构如下图所示,与P1相比,多了一个多路开关MUX,因此P2具有双重功能:通用I/O口和高8位地址总线口。,1、接口结构,2023/3/22,40,(二)P2口,(1)地址总线单片机扩展时,“控制”信号使 MUX 打向右边,内部的地址线经反相器与输出驱动器相连,于是内部“地址”信号可以由P2口引脚输出,此地址信号为高8位地址。,2、接口功能,一、并行I/O口的功能结构,2023/3/22,41,(二)P2口,(2)通用I/O接口 作为通用I/O口时,“控制”信号使 MUX 打向左边,这时P2口电路结构与P1口相同,其功能和用法亦与P1口相同,负载能力也相同。,2、接口功能,一、并行I/O口的功能结构,2023/3/22,42,(三)P3口,P3口一位的结构如下图所示,与P1口相比多了一个与非门和一个输入缓冲器,所以它除了可作为一般I/O口外,还具有第二功能。,1、接口结构,一、并行I/O口的功能结构,2023/3/22,43,(三)P3口,(1)通用I/O接口作为通用I/O接口时,“第二功能输出”线为“1”,接口的电路结构与P1口相同,所以功能和用法均与P1相同。,2、接口功能,一、并行I/O口的功能结构,2023/3/22,44,(三)P3口,(2)第二功能当P3口作为第二功能使用时,各位定义如下,2、接口功能,P3.0 RXD(串行输入通道)P3.1 TXD(串行输出通道)P3.2 INT0(外中断0输入端)P3.3 INT1(外中断1输入端),一、并行I/O口的功能结构,2023/3/22,45,(三)P3口,2、接口功能,P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部数据存贮器写选通)P3.7 RD(外部数据存贮器读选通),可见有些信号为输出,有些信号为输入,为使第二功能信号能顺畅的输入或输出,该口锁存器的状态必须为“1”。,一、并行I/O口的功能结构,2023/3/22,46,(四)P0口,1、接口结构,P0口的一位的结构如下图所示。其中输出驱动电路由一对FET(场效应管)组成,其工作状态由输出控制电路控制。P0口可作为通用I/O接口,也可作为地址/数据总线口。,一、并行I/O口的功能结构,2023/3/22,47,(四)P0口,2、接口功能,(1)地址/数据总线 这时“控制”信号为1,多路开关MUX向上,地址/数据信号反相后经多路开关送到下一个场效应管的栅极。如果地址/数据信号为1,则下一个场效应管截止上一个场效应管导通,引脚为高电平;若地址/数据信号为0,则下一个场效应管导通上一个场效应管截止,引脚为低电平,即地址/数据信号可顺利的到达引脚。,一、并行I/O口的功能结构,2023/3/22,48,(四)P0口,2、接口功能,(2)通用I/O接口 此时“控制”信号为“0”,多路开关MUX向下,输出驱动器处于开漏状态,故需外接上拉电阻,这种情况下,电路结构与P1相同,所以也是一个准双向口,当要作为输入时,必须先向口锁存器写“1”。,一、并行I/O口的功能结构,2023/3/22,49,2023/3/22,50,2023/3/22,51,2.3存储器组织,第二章 单片机的硬件结构,2023/3/22,52,一、存储器空间分类,根据作用分类:程序存储器ROM 数据存储器RAM根据位置分类:片内存储器 片外存储器,构成了4个结构独立的存储器空间,2023/3/22,53,1、片内程序存储器(片内ROM)2、片内数据存储器(片内RAM)3、片外ROM扩展4、片外RAM扩展,8051、8751有4KB的片内ROM(0000H0FFFH),共有256B007FH:128B片内RAM80HFFH:18个特殊功能寄存器(占21B),最多64K片外ROM,地址为0000HFFFFH或者1000HFFFFH,地址:0000HFFFFH,注:8051、8751芯片根据EA状态,2023/3/22,54,2023/3/22,55,MCS-51(8051)存储结构如图所示,2023/3/22,56,片内外统一编址的64KB的程序存储器地址空间 片内片外的程序存贮器在同一逻辑空间中,地址从0000HFFFFH,共有64K字节范围片内256B数据存储地址空间 片内数据存贮器为00HFFH 片外64KB的数据存储器地址空间 片外为0000HFFFFH,从用户使用的角度,即从逻辑上划分3个存储器地址空间:,2023/3/22,57,0000H,FFFFH,0000H,FFFFH,ROM,内RAM,外RAM,00H,FFH,寄存器区,位寻址区,数据缓冲区,SFR,20H,30H,80H,E0H,A,2023/3/22,58,二、区分四个独立空间的方法,1、使用MOV、MOVX、MOVC三个不同的指令分别 区分片内RAM、片外RAM和ROM2、片外ROM使用控制信号PSEN 片外RAM使用控制信号RD、WR3、EA引脚接地,从片外ROM开始 0000H0FFFH 位于片外ROM EA引脚接高电平,从片内ROM开始 0000H 0FFFH位于片内ROM4、ROM和片外RAM一定要用16位地址 片内RAM 和SFR,只能使用8位地址,2023/3/22,59,三、程序存储器ROM,最多为64K,用于存放程序和表格使用PC作为程序地址指针编址方式:片内、片外ROM统一编址(0000HFFFFH)片内(如有,4K)为低地址(0000H0FFFH),片外为高地址加电复位后,PC0000H,当PC超出片内,则会自动转向片外ROMEA引脚控制PC值(8031和8051不同)MOVC用来读取ROM中存放的表格常数分为两个部分:1、系统使用区:其中0000H0002H为系统复位入口,其中必有一条存放PC的跳转指令(转至主程序);0003H002AH为各个中断源处理程序使用2、用户使用区:其余地址空间,2023/3/22,60,四、片内RAM,单片机的数据存储器分为片内RAM和片外RAM,两者单独编址(片内为00FFH,片外为0000FFFFH)。一般需要外部扩展时才使用最多64K的片外RAM。通常将单片机256B的内部数据存储器RAM分为两个部分,一个是片内RAM(占128B),一个是特殊功能寄存器SFR(占另外128B的21B)。片内RAM的128B地址为007FH,可分为四个大区:工作寄存器区、位寻址区、数据缓冲区、堆栈区,2023/3/22,61,2023/3/22,62,片内RAM工作寄存器区:字节地址:00H1FH位寻址区:字节地址:20H2FH位地址为:00H7FH数据缓冲区/堆栈区:字节地址:00H7FH一般使用30H7FH,2023/3/22,63,RAM空间分配示意图,2023/3/22,64,2023/3/22,65,1、工作寄存器区,001FH单元,共32B,常用来存放操作数和中间结果,可以使用指令系统中有工作寄存器的专用指令,多为单字节指令,执行速度快,方便。分为4个寄存器区:0区:0007H 1区:080FH 2区:10H17H 3区:181FH每个区有8个单元,都用R0R7编号。在任何时刻CPU只能使用其中一个区(当前寄存器组),即将这个区的8个单元作为工作寄存器,其他区仍是一般的RAM。具体使用哪个区,由程序状态寄存器PSW中的RS1、RS0两位的状态来决定。,2023/3/22,66,2、位寻址区,20H2FH,共16个单元,128位。为布尔处理区各有自己的位地址,统一编址为00H7FH(1个地址代表1位)既可以字节寻址,也可以位寻址。有17条位操作指令,常进行置位(SETB)、清零(CLR)、取反(CPL),2023/3/22,67,3、数据缓冲区,30H7FH用户RAM区,用于存放运算数据和结果。,2023/3/22,68,4、堆栈区,用户可以指定内部RAM的最高若干字节作为堆栈区(至7FH),指针为SP例:MOV SP,#5FH 则从607FH单元为堆栈区,2023/3/22,69,堆栈,堆栈是在片内RAM中临时开辟的暂存区;作用:保护现场、保护断点针对:子程序调用、中断操作在响应中断或子程序调用时,发生入栈操作,入栈的是16位的PC值,PSW值并不自动入栈。特点:先进后出,后进先出指令:入栈PUSH,出栈POP堆栈区每个单元不能按字节任意访问,PUSH和POP都是对堆栈的栈顶单元进行的。为了指示栈顶的地址,必须使用堆栈指针SP。SP始终指向堆栈最后压入或即将弹出的数据单元,即指向栈顶。SP实际为一个8位寄存器,它的内容是栈顶存储单元的地址。,2023/3/22,70,进栈PUSH:先SP+1再写入数据例:PUSH ACC 初始SP=2FH SP+1即现在SP30H,然后将ACC的内容写入30H单元出栈POP:先读数据再SP1进栈、出栈有两种方式:1、自动方式:执行子程序、中断响应时。2、指令方式:PUSH、POP,关于进栈和出栈,2023/3/22,71,关于堆栈区的划定,为保护足够的寄存器内容,需要堆栈有一定的深度,即有足够的容量。原则上堆栈区可以是片内RAM任意区域,只要SP赋予不同的初值,则SP7FH都是堆栈区。但具体应用时栈区设置应和RAM的分配统一考虑,工作寄存器和位寻址区域分配好后再指定堆栈区域。系统复位后,SP07H,则实际堆栈从08H开始。通常SP设在30H以后,即在用户RAM(30H7FH)之间开辟。例 MOV SP,3FH 即40H7FH为堆栈区,2023/3/22,72,5、特殊功能寄存器SFR,反映单片机的状态,存储对定时器、中断、串行口、I/O口等的控制设定,使这些控制具有可编程性。共18个,其中3个16位的寄存器,故占用21B,分布于80HFFH,可读可写,可视为专用RAM。均可以进行字节寻址,其中有11个可以位寻址(字节地址能被8整除),2023/3/22,73,特殊功能寄存器位地址,2023/3/22,74,1、ACC地址为0E0H,8位累加器,在指令中用A表示,可以位寻址2、B寄存器地址为0F0H,8位,可位寻址,主要用于乘除法,也可以作为一个通用的8位数据缓冲单元。3、SP地址为81H,8位堆栈指针,只能字节寻址,复位值为07H。4、数据指针DPTR16位寄存器,包括两个8位寄存器DPL和DPH,地址分别为82H和83H。只能字节寻址。也可以作为两个8位寄存器来处理。用于访问外部RAM时作为地址指针,也可访问ROM中的表格常数。5、I/O端口P0P3为引脚P0P3引脚的锁存器。可位寻址。,2023/3/22,75,6、其他:串行口数据缓冲器SBUF;串行口控制寄存器SCON;定时/计数器T0、T1;定时/计数器方式控制TMOD;中断允许寄存器IE;定时器控制TCON;电源方式控制PCON。7、程序状态寄存器PSW(下面具体研究),2023/3/22,76,注:,SFR中的寄存器都有复位值,用到的寄存器在复位后应考虑到是否重新赋值;SFR可视为专用RAM,有11个可以位寻址(可以由布尔处理器控制),共21单元,其余107单元用户不能使用;8052另有3个SFR,占据5个单元。,2023/3/22,77,五、程序状态寄存器PSW,地址0D0H,PSW是一个8位寄存器,可位寻址,它包含了许多程序状态信息。其各位的含义如图所示:其中PSW.1位系统保留,用户不能使用。PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0,2023/3/22,78,进位标志Cy:算术逻辑指令时,最高位D7有进(借)位,则Cy=1,否则Cy=0;在布尔处理器中,它起着“位累加器”的作用。17条布尔处理指令多数是针对CY来完成的。程序中写成C。,2023/3/22,79,辅助进位标志AC:加(减)法运算时,如果低半字节的最高位D3有进(借)位,则AC=1,否则AC=0;AC在作BCD码运算而进行二十进制调整时有用。,2023/3/22,80,用户标志FO:是用户定义的一个状态标志。可通过软件对它置位、清零;在编程时,也常测试其状态进行程序分支。,2023/3/22,81,工作寄存器区选择位RS1、RS0:可借软件置位或清零,以选定4个工作寄存器区中的一个区投入工作。,2023/3/22,82,溢出标志OV:作有符号数加法、减法时由硬件置位或清除,以指示运算结果是否溢出。,2023/3/22,83,奇偶标志P:每执行一条指令,单片机都能根据A中1的个数的奇偶自动令P置位或清零:奇为1,偶为0。此标志对串行通信的数据传输非常有用,通过奇偶校验可检验数据传输的正确与否。,第二章 单片机的硬件结构,2.4定时/计数器,2023/3/22,85,在测控技术中,往往需要定时检测某个参数,或按一定的时间间隔来进行某种控制。还有一些控制是按对某种事件的计数结果进行的。因此几乎所有单片机内部都设置了定时/计数器,以简化微机测控系统的设计。MCS-51系列单片机典型产品8051等有两个16位定时器/计数器T0,T1;8052等单片机有三个16位定时器/计数器T0、T1和T2。它们都可以用作定时器或外部事件计数器。,2023/3/22,86,一、工作原理,定时器/计数器实际上是加1计数器当它对外部事件进行计数时,由于频率不固定,此时称之为计数器;当它对内部固定频率的机器周期进行计数时称之为定时器。,2023/3/22,87,计数原理每输入一个脉冲,计数器加1,当加到计数器各位都为1时,再输入一个脉冲,计数器各位全变为0,溢出,中断标志置1(SFR中TCON的TF0、TF1),从而向CPU申请中断。由预置计数值就可以算出从加1计数器启动到计满溢出所需的时间,即定时时间。8位256;13位8192;16位65536,2023/3/22,88,对外部脉冲计数时,当脉冲有一个高电平到低电平“1”“0”跳变时,计数器加1,且在每个机器周期的S5P2采样外部输入,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。由于识别一个从1到0的负跳变信号需要两个机器周期(24个振荡周期),所以最高的计数频率为系统时钟频率的1/24;两个输入脉冲的最小间隔应不小于两个机器周期。又因为一个机器周期对信号采样一次,因此输入信号的电平宽度至少应持续一个机器周期。,2023/3/22,89,定时原理输入脉冲不是外部脉冲源,而是一个晶体振荡器的脉冲源。,2023/3/22,90,对于16位计数器,最大定时时间是216个脉冲的时间。则定时时间T=(216X)*TT:输入脉冲周期,T=12/f s(f为晶振频率1.212MHz)如为12MHz,则T1sX:计数器初值(有程序输入)对于12MHz晶体,T1s,最大定时T=65.536ms;对于6MHz晶体,T2s,最大定时T=131ms常使用:X=216T/T,2023/3/22,91,例:系统时钟频率为12MHz,要产生1ms定时,求初值XT=12/12=1s若为16位计数器X=X=2161000/1=64536=0FC18H若为13位计数器X=X=2131000/1=81921000=7192=1C18H不能采用8位计数器,2023/3/22,92,二、与定时/计数器有关的SFR,它是由6个专用寄存器构成的:其中TH0、TL0构成16位计数器T0,TH1、TL1构成16位计数器T1,而TMOD、TCON为两个定时器共用,用来选择工作方式和控制启停。,2023/3/22,93,1、计数器T0、T1,各有2个8位计数器,构成2个16位计数器 T0:TH0、TL0 T1:TH1、TL1不可以位寻址,只能按字节分两条指令读写16位码,而不能用一条指令读写双字节。例:X初值为645360FC18HMOV TH0,#0FCHMOV TH1,#18H,2023/3/22,94,T0与T1有两种功能:(由C/T决定)计数:T0对P3.4/T0管脚送入的脉冲计数;T1对P3.5/T1管脚送入的脉冲计数。C/T=1 定时:每个机器周期使之加1,初值的大小决定定时时间的长短C/T=0复位值均是00HT0有4种工作方式:方式0、方式1、方式2、方式3T1有3种工作方式:方式0、方式1、方式2前3种工作方式完全相同其功能及工作方式由TMOD和TCON来决定,2023/3/22,95,2、方式寄存器TMOD,8位SFR,地址为89H不可位寻址低4位用于控制T0,高4位用于控制T1,含义相同。,2023/3/22,96,M1、M0:工作方式选择位C/T:定时或计数功能选择位=1:外部计数工作方式,对P3.4、P3.5脉冲计数=0:定时方式,每一个机器周期加1,2023/3/22,97,GTAE:门控位=1:借用P3.2、P3.3参与启动和停止T0、T1 只有该引脚与TCON中TCON.4(TR0)、TCON.6(TR1)都为高电平,才启动T0、T1=0:T0、T1的运行与否只取决于TCON中 TCON.4(TR0)、TCON.6(TR1),2023/3/22,98,3、定时/计数器控制寄存器TCON,8位寄存器,可位寻址低4位用于外部中断INT0、INT1控制高4位用于T0、T1控制,2023/3/22,99,TR0(TCON.4):T0的运行控制位当GATE=0时,TR0=0则T0停止运行;TR0=1时T0允许运行TF0(TCON.5):T0溢出兼中断申请标志T0溢出时,TF0=1并提出中断申请,CPU响应中断申请后,TF0自动清零TR1、TF1同TR0、TF0,2023/3/22,100,三、定时/计数器工作方式,定时器T0有四种工作方式:方式0、方式1、方式2和方式3。定时器T1有三种工作方式:方式0、方式1、方式2。两者前3种工作方式相同以T0为例讲解,2023/3/22,101,方式0:13位定时/计数器TMOD的M1、M0都写入0TH08位和TL0低5位组成13位加1计数器,TL0的低5位向TH0进位溢出值:213=8192=1FFFH 溢出后:TF0=1,中断申请 控制T0的启动和停止:GATE=0时,定时器的启停仅由TRX控制 GATE=1时,定时器的启停还受到INTX引脚电平的控制。,2023/3/22,102,例:f=12MHz,要产生1ms定时,求计数初值。T=12/f=1s X=213-1000/1=7192=1C18H 取13位,低5位送TL0:18H;高8位送TH0:0EOHMOV TH0,#0E0HMOV TL0,#18H,2023/3/22,103,注:此种方式与MCS48系列兼容,如果不是为了兼容的目的,一般不用方式0.方式0的全部功能,方式1都可以代替。如果要重复定时或计数,则须重新设置时间常数初值,2023/3/22,104,方式1:16 位定时/计数器 TH0的8位和TL0的8位组成16位加1计数器最大计数脉冲个数:165536(216)最长定时时间(晶振12MHz T=1s):1s 65536T=65.54ms溢出值:216655360FFFFH方式1和方式0唯一不同的就是位数,其他控制方式和用法均相同。,2023/3/22,105,例:f=12MHz,要产生1ms定时,求计数初值。T=12/f=1sX=216-1000/1=64536=0FC18H低8位送TL0:18H;高8位送TH0:0FCHMOV TH0,#0FCHMOV TL0,#18H,2023/3/22,106,方式2:可自动重装初值的8位定时/计数器与方式0和方式1不同处:只使用TL0做8位计数器,最大计数值255;最大定时时间(晶振12MHz时):256sTH0为初值寄存器。当TL0计满溢出时,置位TF0,并将TH0的内容(即时间常数初值)重新装入TL0中。TH0中自身初值不变。用于需要重复定时和计数的场合。,2023/3/22,107,方式3:只适用于T0M0=M1=1,TL0、TH0各自是一个8位计数器。TL0:定时或计数,使用T0的控制位TF0、TR0TH0:只能定时,借用T1的控制位TF1、TR1如果企图将T1置为方式3(M1=M0=1),则将使T1停止计数,与清“0”TR1的效果相同。但此时T1仍可工作于方式0、1或2定时或计数,但TR1、TF1被TH0占用,一般T1作为串口的波特率发生器,或不需要中断的场合。,2023/3/22,108,例:由P1.0输出方波信号,周期为2ms,设fosc=12MHz。,解:每隔1ms改变一次P1.0的输出状态,即形成方波,用T0非门控方式1定时。计算时间常数:X=216-t/T=216(1/1000)/10-6=65536-1000=64536=0FC18H,ORG0000HAJMPMAINORG000BH;T0中断硬件入口地址AJMPPT0INT;跳到中断服务程序ORG0030HMAIN:MOVTMOD,#01H;中断方式MOVTL0,#18H;计数初值MOVTH0,#0FCHSETBEA;开放总中断SETBET0;开放T0中断SETBTR0;启动定时器 HERE:SJMPHERE;等待中断,相当于执行其它任务 PT0INT:MOVTL0,#18H;中断服务程序;置初值MOVTH0,#0FCHCPLP1.0;取反,产生方波RETI;中断返回,