《单片机原理及应用第四章80C51单片机的功能.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用第四章80C51单片机的功能.ppt(177页珍藏版)》请在三一办公上搜索。
1、第四章(第 1页),河南科技大学电子信息工程学院自动化系主讲:张松灿,单 片 机 原 理 与 应 用,第四章 80C51单片机的功能单元,第四章(第 2页),第四章 80C51单片机的功能单元,4.1并行I/O接口4.1.1 P1口4.1.2 P3口4.1.3 P2口4.1.4 P0口4.2定时器/计数器4.2.1概述4.2.2定时器/计数器T0、T1,第四章(第 3页),4.2.3定时器/计数器T24.2.4看门狗4.2.5定时器/计数器的编程和使用4.3串行接口4.4中断系统4.4.1中断、中断源及中断优先级4.4.2中断的控制和操作4.4.3中断的响应过程和中断矢量地址,第四章(第 4页
2、),80C51有四个8位的并行双向口,共有32根输入/输出(I/O)口线。口组成:锁存器、输出驱动器和输入缓冲器。各并口在结构上有差异,故各口的性质和功能也有所不同。,4.1 并行I/O接口,第四章(第 5页),80C51并行I/O接口的比较,第四章(第 6页),第四章(第 7页),4.1.1 P1口 8位口,可以字节访问,地址:90H;也可位访问,地址:90H-97H。位结构与工作过程:结构:输出锁存器、输入缓冲器BUF1(读引脚)、BUF2(读锁存器)以及由FET晶体管Q0与上拉电阻组成的输出/输入驱动器。,D,CL,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P1.0引脚,锁
3、存器,内部总线,A,BUF2,BUF1,内部上拉电阻,作用:P1口只能作为输入口或输出口使用。,第四章(第 8页),返回,D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P1.0,锁存器,P1口直接做输出口时,输出信息的过程:(将1送到P1.0的过程),1,0,0,1,注意:P1口做输出口时,内部数据经过锁存器送到P10-P17上。由于内部有上拉电阻,所以P1口作输出口使用时,不用外接上拉电阻。,内部总线,第四章(第 9页),D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P1.0,锁存器,P1口直接做输入口时,输入信息的过程:(将P1.0处的0送入DB0.
4、0的过程),0,0,注意:1、P1口作输入口时,P10P17上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。2、CPU对P1口的读操作有2种:读引脚和读改写锁存器。,当CPU执行 MOV A,P1或 JB/JNB P1.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。,当CPU执行读改写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。,返回,内部总线,第四章(第 10页),2、P1口的特点 输出锁存,输出时没有条件;输入缓冲,输入时有条件,
5、即需要先将该口设为输入状态,先输出1;工作过程中无高阻悬浮状态,即:该口不是输入态就是输出态。具有这种特性的口不属于“真正”的双向口,而被称为“准”双向口。,第四章(第 11页),3、P1口的操作 对于P1口不仅可以字节操作,也可以按位操作。字节操作指令:输出 MOV P1,A;(P1)(A)MOV P1,#data;(P1)#data MOV P1,direct;(P1)(direct)输入 MOV A,P1;(A)(P1)MOV direct,P1;(direct)(P1),第四章(第 12页),位操作指令:置位、清除 SETB P1.i;P1.i1 CLR P1.i;P1.i0输入、输出
6、 MOV P1.i,C;P1.iCY MOV C,P1.i;CY P1.I判跳 JB P1.i,rel;P1.i=1,跳转 JBC P1.i,rel;P1.i=1,跳转且P1.i0 逻辑运算 ANL C,P1.i;CY(P1.iCY)ORL C,P1.i;CY(P1.i+CY)其中:P1.i中的i=0,7。,第四章(第 13页),4、口操作时序 在执行改变端口锁存器内容的指令时,新的内容在指令执行的最后一个周期的S6P2时传送到口的锁存器内。然而口锁存器仅在任何周期的P1时才采样端口锁存器(缓冲器),在P2时输出锁存器的值并保持P1时所采样到的内容。因此,S6P2时写入端口锁存器的新数值直到下
7、一个周期的P1时被采样到,即只有在下一个机器周期的S1P1时,才真正出现在引脚上。,第四章(第 14页),5、P1口的多功能线 80C52中,P1.0和P1.1是多功能线,除作一般I/O外,还具有下列功能:P1.0定时器/计数器2的外部输入端T2;P1.1定时器/计数器2的外部控制端T2EX。此时,该两位的结构与P3口的位结构相当。,第四章(第 15页),4.1.2 P3口 多功能的8位口,可以字节访问,地址:B0H;也可位访问,地址:B0H-B7H。1 位结构与工作过程分析 P3口的位结构 如图4-2所示。P3口能驱动4个TTL负载。,第四章(第 16页),D,CLK,Q,Q,读引脚,读锁存
8、器,写锁存器,DB0.0,+5V,P3.0,锁存器,替代输出功能,替代输入功能,内部总线,A,B,C,Q0,图42 P3口的位结构,与P1口的区别:(1)增加一个与非门。与非门有两个输入:一个为Q端,另一个为替代功能的控制输出。与非门的输出端控制FET管Q0。(2)输出锁存器从Q端引出。(3)有两个输入缓冲器,替代输入功能取自第一个缓冲器的输出端;I/O口的通用输入信号取自第二个缓冲器的输出端。,第四章(第 17页),D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P3.0,锁存器,替代输出功能,替代输入功能,P3口直接做输出口时,输出信息的过程:(将1送到P3.0的过程),
9、1,0,0,1,注意:P3口做输出口时,内部数据经过锁存器送到P30-P37上。由于内部有上拉电阻,P3口作输出口使用时,不用外接上拉电阻。,内部总线,B,C,A,第四章(第 18页),D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P3.0,锁存器,替代输出功能,替代输入功能,0,P3口直接做输入口时,输入信息的过程:(将P3.0处的0送入DB0.0的过程),0,注意:1、P3口作输入口时,P30P37上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。2、CPU对P3口的读操作有2种:读引脚和读改写锁存器。,当CPU执行 MOV A,P3
10、或 JB/JNB P3.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。,当CPU执行读改写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。,内部总线,A,B,C,第四章(第 19页),C,内部总线,B,Q0,A,上拉电阻,D,CL,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,+5V,P3.0,锁存器,替代输出功能,替代输入功能,作用:1、P3口可以直接作为输入口或输出口使用。2、P3口的引脚又具有第二功能。,1 当使用单片机内部串行口时,若CPU执行MOV A,SBUF指
11、令,则P3.0(RXD)作为接收信号线,接收由外界串行输入的数据;若CPU执行MOV SBUF,A指令,则P3.1(TXD)作为发送信号线,串行发送数据至外界。2当单片机使用外中断时,P3.2(INT0)作为外中断0的中断请求输入线,3.3(INT1)作为外中断1的中断请求输入线。3当单片机使用定时器,且定时器工作于计数方式时,P3.4(T0)作为定时器0的计数脉冲输入线,P3.5(T1)作为定时器1的计数脉冲输入线。4当单片机外扩RAM或I/O接口芯片时,P3.6(WR)作为RAM或I/O接口芯片的写控制信号,P3.7(RD)作为RAM或I/O接口芯片的读控制信号。当P3口的一些引脚没有作为
12、第二功能使用时,这些引脚就被释放,直接作为I/O口线使用。,第四章(第 20页),(2)输出过程分析 B点置1时,锁存器输出可以顺利通到引脚P3.i。此时为准双向口。当输出锁存器输出(C点)置1,替代输出功能可以顺利通到引脚P3.i。若替代输出为0时,因C点已置1,现B点为0,故与非门输出为1,使Q0导通,从而使A点为0。若替代输出为1时,与非门输出为1,Q0截止,从而使A点为高电平。P3口处于替代输出功能状态。,总之。不论是替代输出还是替代输入功能时,输出锁存器的输出置1是必需。因此,P3口不论作替代功能输入,还是作替代功能输出,甚至作一般I/O的输入功能时,都需要向该口位输出1。,第四章(
13、第 21页),2、P3口的功能和特点 P3口-多功能口。(1)可作I/O口使用,为准双向口。既可以字节操作,也可以位操作;既可以8位口操作,也可以逐位定义口线为输入线或输出线;既可以读引脚,也可以读锁存器,实现“读修改输出”操作。,第四章(第 22页),(2)替代功能。替代输入功能:P3.0RXD,串行输入口。P3.2INT0,外部中断0的请求。P3.3INT1,外部中断1的请求。P3.4T0,定时器/计数器0外部计数脉冲输入。P3.5T1,定时器/计数器1外部计数脉冲输入。替代输出功能:P3.1TXD,串行输出口。P3.6WR,外部数据存储器写选通,输出,低有效。P3.7RD,外部数据存储器
14、读选通,输出,低有效。,第四章(第 23页),D,CL,Q,Q,DB0.0,控制线,+5V,P2.0,多路开关,锁存器,作用:1、外扩芯片时,P2口不再做I/O口使用,而是传送高8位地址。2、没有外扩芯片时,P2口可以直接作为输入口或输出口使用。,读引脚,读锁存器,写锁存器,内部总线,地址,4.1.3 P2口 P2口,多功能的8位口,可以字节访问也可位访问,字节访问地址:A0H,位访问地址:A0H-A7H。1 位结构与工作过程分析,A,Q0,B,C,第四章(第 24页),与P1口的区别:P2口增加一个多路开关。多路开关的输入有两个:一个是口输出锁存器的输出端Q;一个是地址寄存器(PC或DPTR
15、)的高位输出端。多路开关的输出经反相器反相后去控制输出FET Q0。多路开关的切换由内部控制信号控制。输出锁存器的输出端是Q而不是/Q。,第四章(第 25页),返回,D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,控制线,+5V,P2.0,多路开关,锁存器,P2口直接做输出口时,输出信息的过程:(将0送到P2.0的过程),0,0,0,1,0,注意:P2口做输出口时,内部数据经过锁存器送到P20-P27上。由于内部有上拉电阻,所以P2口作输出口使用时,不用外接上拉电阻。,A,Q0,B,C,地址,内部总线,第四章(第 26页),D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,控
16、制线,+5V,P2.0,转换开关,锁存器,P2口直接做输入口时,输入信息的过程:(将P2.0处的0送入DB0.0的过程),0,0,0,注意:1、P2口作输入口时,P20P27上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。2、CPU对P2口的读操作有2种:读引脚和读改写锁存器。,当CPU执行 MOV A,P2或 JB/JNB P2.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。,当CPU执行读改写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC、SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器
17、保存。,返回,A,Q0,B,C,地址,内部总线,第四章(第 27页),(2)工作过程分析 多路开关投向输出锁存器的输出(C点),接通输出锁存器。P2口的工作状态是I/O口状态。多路开关的输入投向地址输出(B点),多路开关将接通地址寄存器输出。同样可以知道,A点的电平将随地址输出的0、1而相应地变化。P2口的工作状态是输出高8位地址。,第四章(第 28页),2、P2口的功能和特点 P2口是一个双功能的口:(1)作I/O口时,P2口为一准双向口,功能与P1口一样。(2)作地址输出时,P2口可以输出程序存储器或片外数据存储器的高8位地址,与P0口输出的低地址一起构成16位地址线,从而可分别寻址64
18、KB的程序存储器或片外数据存储器。8位地址线是一起自动输出。(3)P2口能驱动4个TTL负载。,第四章(第 29页),3、P2口使用中注意的问题(1)由于P2口具有输出锁存功能,在取指周期或外部RAM读、写期间,输出的高8位地址是锁存的,故无需外加地址锁存器。(2)如果外接程序存储器,访问片外程序存储器时需要不断进行取指操作,P2口需要不断送出高位地址,这时P2口线均不宜再作I/O口使用。(3)仅有片外数据存储器的系统中,P2口使用可分为两种情况:,第四章(第 30页),若片外RAM容量256 B:可使用“MOVX A,Ri”及“MOVX Ri,A”访问片外RAM,此时P2口不输出地址,P2口
19、仍可作为I/O口使用;若片外数据存储器的容量256 B,使用“MOVX A,DPTR”及“MOVX DPTR,A”指令访问片外数据存储器,P2口需输出高8位地址。在片外RAM容量不太大时,也可只利用P1、P3甚至P2口中的某几根口线送高位地址,从而保留P2口的全部或部分口线作I/O口用。注意,这时使用的是“MOVX A,Ri”及“MOVX Ri,A”类访问指令,高位地址不再是自动送出的,而要通过程序设定。,第四章(第 31页),D,CL,Q,Q,DB0.0,地址/数据线,+5V,P0.0,多路开关,锁存器,作用:1、外扩芯片时,P0口不再做I/O口使用,而是先传送地址,后传送数据。2、没有外扩
20、芯片时,P0口可以直接作为输入口或输出口使用。,控制,读引脚,读锁存器,写锁存器,内部总线,A,Q0,4.1.4 P0口 多功能8位口,可以字节访问,地址为80H;也可位访问,地址为80H-87H。1 位结构与工作过程分析,1,0,第四章(第 32页),与P1口有明显区别:P0口中增加一个多路开关:其输入有两个,地址/数据输出;输出锁存器的输出。其输出用于控制输出FET Q0的导通和截止。多路开关的切换由内部控制信号控制。P0口的上拉电路与P1口完全不同:P0口的上拉电路导通和截止受内部控制信号和地址/数据信号共同(相“与”)来控制。,第四章(第 33页),(2)工作过程分析 控制信号置1时,
21、接通地址/数据输出端。当地址/数据线置1时,“与”门输出为1,上拉FET导通;同时反相器输出0,控制下拉FET截止,A点电位上拉,地址/数据输出线为1。当地址/数据线置0时,“与”门输出为0,上拉FET截止,同时反相器输出1,控制下拉FET导通,A点电位下拉,地址/数据输出线为0。此时的输出状态随地址/数据线而变。因此,P0口可以作为地址/数据复用总线使用。上下两个FET处于反相,构成推拉式输出电路,负载能力大大增加。此时的P0口相当一个双向口。,第四章(第 34页),控制信号置0时,接输出锁存器的/Q端。与门关闭,上拉FET截止,P0口为漏极开路输出。P0口作输出口,若P0.i输出1,输出锁
22、存器的端为0,下拉FET截止,P0.i为漏极开路输出;若P0.i输出0,输出锁存器的端为1,下拉FET导通,P0.i输出低电平。P0口作输入口,必须先使P0.i锁存器置1。下拉FET也截止,P0.i处于悬浮状态。A点的电平由外设的电平而定,通过输入缓冲器读入CPU。P0口相当于一个高阻抗的输入口。具体见下图说明:,第四章(第 35页),P0口直接做输出口时,输出信息的过程:(将0送到P0.0的过程),返回,D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,地址/数据线,+5V,P0.0,多路开关,锁存器,0,0,0,1,0,注意:P0口做输出口时,内部数据经过锁存器送到P00-P07上
23、。由于上管始终截止,而当下管也截止时,P00P07被架空,没有标准的高电平,所以P0口作输出口使用时,必须外接上拉电阻。,控制,内部总线,A,Q0,0,第四章(第 36页),P0口直接做输入口时,输入信息的过程:(将P0.0处的1送入DB0.0的过程),D,CP,Q,Q,读引脚,读锁存器,写锁存器,DB0.0,地址/数据控制线,+5V,P0.0,转换开关,锁存器,0,0,1,注意:1、P0口作输入口时,P00P07上的信号经过缓冲器送到内部数据总线上。在读引脚之前,要先将锁存器置1,否则总是读到0。2、CPU对P0口的读操作有2种:读引脚和读改写锁存器。,1,当CPU执行 MOV A,P0或
24、JB/JNB P0.x,标号 时,产生读引脚控制信号,此时读的是引脚的状态。,当CPU执行读改写指令(以端口为目的操作数的ANL、ORL、XRL、DEC、INC SETB、CLR等)时,产生读锁存信号,此时是先读锁存器的状态,在修改之后,送回锁存器保存。,返回,内部总线,A,Q0,0,第四章(第 37页),2、P0口的功能和特点(1)作I/O口使用。相当于一个真正的双向口,输出锁存、输入缓冲,输入时需先将口置1;每根口线可以独立定义为输入或输出。它具有双向口的一切特点。特点:输出为漏极开路输出,与NMOS的电路接口时要用电阻上拉;输入时为悬浮状态,为一个高阻抗的输入口。,第四章(第 38页),
25、(2)作地址/数据复用总线用。P0口为一个准双向口。但是没有上拉电阻,作数据输入时,口也不是悬浮状态。作地址/数据复用总线时,口不能逐位定义为输入/输出。作数据总线用,输入/输出8位数据;作地址总线用,输出低8位地址。也不能作I/O口使用。(3)P0口能驱动8个TTL负载。,第四章(第 39页),例1,例2,例1,例2,MCS-51 单片机并行口应用,在没有外扩任何芯片时,单片机内部并行口 可以作为输出口,直接与输出外设连接,常用的输出外设是发光二极管;可以作为输入口,直接与输入外设连接,常用的输入外设是开关。,直接做输出口 直接做输入口,第四章(第 40页),直接做输出口,P1.0,P1.1
26、,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,89C51,+5V,电阻的作用是当流过发光二极管的电流过大时,它就会被烧坏。电阻可以限制流过发光二极管的电流,因此这个电阻叫作限流电阻。限流电阻阻值的计算方法如下:R=(5-1.75)/Id;Id 是流过发光二极管的电流,一般从8mA到20mA,其值越大,发光二极管越亮,但不能太大,当流过发光二极管的电流超过20mA时,容易烧坏发光二极管。,例1:用89C51的P1口驱动8个发光二极管,使8个发光二极管由上向下轮流点亮。试画出连接图,编制驱动程序。,解:,1、画电路图,2、编程,mov a,#0feh up:mov p1,a lca
27、ll delay rl a sjmp upDelay:mov r7,#2delay11:mov r6,#250 djnz r6,$djnz r7,delay11 ret,第四章(第 41页),直接做输出口,P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,89C51,+5V,例2:用80c51的P1口驱动1个数码管,制成1位秒表.试画出连接图,编制驱动程序。,解:,1、画电路图,2、编程,思考,a,b,c,d,e,f,g,Dp,a,b,c,d,e,f,g,Dp,UP0:MOV R7,#10 MOV R2,#00H MOV DPTR,#TAB UP:MOV A,R2
28、 MOVC A,A+DPTR MOV P1,A LCALL D1S INC R2 DJNZ R7,UP SJMP UP0TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,第四章(第 42页),例2:用8051的P1口驱动1个数码管,制成1位秒表.试画出连接图,编制驱动程序。思考:如果用P2口驱动发光二极管,公共端接P3.0,则如何修改?如果制成0.1S的表,则如何修改?,P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7,89C51,P3.0,a,b,c,d,e,f,g,Dp,CLR P3.0UP0:MOV R7
29、,#10 MOV R2,#00H MOV DPTR,#TAB UP:MOV A,R2 MOVC A,A+DPTR MOV P2,A LCALL D1S INC R2 DJNZ R7,UP SJMP UP0TAB:DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H,80H,98H,第四章(第 43页),P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,89C51,+5V,例1:用89C51的P1口传送8个开关状态,用P2口显示8个开关状态,若开关合则对应灯亮,试画出连接图,编制驱动程序。,解:,1、画电路图,MOV P1,#0FFH
30、UP:MOV A,P1 MOV P2,A SJMP UP,P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7,+5V,开关处的电阻称为上拉电阻,它的作用是当开关断开时,使P1口的电压上拉为准确的高电平,避免悬空状态。,2、编程,强调:8051内部并行口直接作为输入口时,必须先将口锁存器置1。,思考,直接做输入口,第四章(第 44页),P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,89C51,MOV P1,#0FFHUP:MOV A,P1 CPL A MOV P2,A SJMP UP,P2.0,P2.1,P2.2,P2.3,P2.4,
31、P2.5,P2.6,P2.7,+5V,思考:如果将发光二极管反接,则如何修改程序?,第四章(第 45页),直接做输入口,89C51,+5V,例2:用8051的P1口驱动8个发光二极管,P3.4接一个开关K1,当开关按下时,8个发光二极管由左向右轮流点亮;开关断开时,8个发光二极管不亮。试画出连接图,编制驱动程序。,解:,1、画电路图,P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,2、编程,+5V,P3.4,mov p3,#0ffh up0:mov a,#0feh up1:jb p3.4,up1 mov p1,a lcall delay1 rl a sjmp u
32、p1delay1:mov r7,#2delay11:mov r6,#250 djnz r6,$djnz r7,delay11 ret,思考,第四章(第 46页),基本概念1、定时的定义:定时:对周期固定、已知的脉冲计数。2、计数的定义:计数:对外界产生的周期不固定的未知脉冲计数。计数器的计数方式可以是加1计数,也可以是减1计数。3、定时/计数的实现方法:硬件数字电路:用555构成的定时器和计数器等。软件编程可编程定时/计数器,4.2 定时器/计数器,第四章(第 47页),例:编制一个延时2mS的子程序。D2MS:MOV R7,#2 D2MS0:MOV R6,#250 DJNZ R6,$DJNZ
33、 R7,D2MS0 RET例:统计开关按动次数,并存于30H单元。MOV 30H,#0 UP:JB P1.0,$JNB P1.0,$INC 30H SJMP UP,软件编程,第四章(第 48页),控制系统有按时间间隔来进行控制,如定时的温度检测等。可用延迟程序来实现,但会降低CPU工作效率。假如用可编程的实时时钟,实现定时或延时,则CPU不必通过等待来实现延时,可提高CPU的效率。也有控制系统是按计数的结果来进行的。因此在微机控制系统中常使用可编程的硬件定时计数器。现在有很多定时计数器的接口芯片。单片机内有硬件定时计数器,可以简化系统设计。不论是独立的定时器芯片还是单片机内定时器,都有以下特点
34、:1有多种工作方式,可以是计数方式也可以是定时方式等等。2计数器模值是可变的,计数的最大值也就限制了定时的最大值。3当定时时间到或者计数终止时,发出中断申请,以便实现定时或计数控制。除了上述共同特点外,各种定时器还会有各自的特点,各自的工作方式和控制方式。,第四章(第 49页),4.2.1概述 单片机控制系统中常常遇到定时与计数问题。定时器/计数器(timer/counter)是单片机中重要部件,其工作方式灵活、编程简单,使用它可减轻CPU的负担和简化外围电路。80C51有两个16位的定时器/计数器:T0和T1;80C52有三个16位的定时器/计数器:T0、T1和T2;在80C51系列的部分产
35、品(80C552)中,还包含有一个用做看门狗的8位定时器(T3)。,第四章(第 50页),定时器/计数器的核心是一个加一计数器,其基本功能是加1功能。T0、T1或T2引脚上施加一个1到0的跳变,计数器增1,即是计数功能;在单片机内部对机器周期或其分频进行计数,从而得到定时,即定时功能。在单片机中,定时功能和计数功能的设定和控制都是通过软件来进行。,第四章(第 51页),4.2.2定时器/计数器T0、T11 MCS51单片机内有2个独立的16位的可编程定时/计数器T0和T1。它们结构相似,内部结构简图如图4-5。定时器/计数器T0、T1组成:计数器TH0、TL0和TH1、TL1;特殊功能寄存器T
36、MOD、TCON;时钟分频器;输入引脚T0、T1、INT0、INT1。,第四章(第 52页),图4-5 定时器/计数器T0、T1的内部结构简图,第四章(第 53页),振荡器,12,C/T=0,C/T=1,+,加1计数器,TF0,合/断,T0,TR0,GATE0,INT0,TCON,TMOD,TH0,TL0,TH1,TL1,T0的结构:,第四章(第 54页),2、T0、T1的特殊功能寄存器(1)方式寄存器TMOD,地址:89H 逐位定义的8位寄存器,只能字节寻址的寄存器。其格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,低4位设置定时器/计数器T0;高4位设置定时器/计数器T1。,第
37、四章(第 55页),GATE:门控标志。控制定时/计数器的启动。当GATE=1时,定时计数器的启动除了受TR控制外,还受INT引脚的控制。当TR=1且INT引脚上出现高电平时才能启动定时计数器。CT:用来确定T0(T1)是工作在计数方式还是工作在定时方式。CT=0为定时方式,CT=1为计数方式。,M1和M0:确定T0(T1)的具体工作模式。M1、M0的四种组合确定四种工作模式,分别是方式0、方式1、方式2、方式3。,第四章(第 56页),第四章(第 57页),(2)T0、T1控制寄存器TCON 逐位定义的8位寄存器,既可字节寻址也可位寻址,字节地址为88H,位寻址的地址为88H-8FH。其格式
38、如下:,第四章(第 58页),各位意义:TF1(TCON.7)T1的溢出标志。T1溢出,该位由内部硬件自动置位。若中断开放,即申请中断,CPU若响应中断,进入中断服务程序后,由硬件自动清0;该标志位也可由软件查询,可用于判跳,可用软件清0或置1。TR1(TCON.6)T1的启动控制位。用软件进行控制,置1时,启动T1;清0时,停止T1。TF0(TCON.5)T0的溢出标志。其意义与TF1相同。TR0(TCON.4)T0的启动控制位。用软件进行控制,置1时,启动T0;清0时,停止T0。,第四章(第 59页),IE1(TCON.3)外部中断1请求标志位。IT1(TCON.2)外部中断1触发类型选择
39、位。IE0(TCON.1)外部中断0请求标志位。IT0(TCON.0)外部中断0触发类型选择位。TCON的低4位与中断有关,将在“中断系统”一节中详细讨论。复位后,TCON的所有位均清0。,第四章(第 60页),表4-4控制寄存器TCON各位的功能,第四章(第 61页),(3)T0、T1的数据寄存器TH1、TL1和TH0、TL0,51单片机内部有两个16位的定时/计数器T0和T1,每个定时/计数器占用两个特殊功能寄存器:(1)T0由TH0(高)和TL0(低)两个8位计数器组成,字节地址分别是8CH和8AH。(2)T1由TH1(高)和TL1(低)两个8位计数器组成,字节地址分别是8DH和8BH。
40、用于存放定时或计数的初值。当计数器工作时,其值随计数脉冲做加1变化。复位后,四个寄存器全部清零。它们都只能字节寻址。,第四章(第 62页),表4-5定时器/计数器T0、T1的数据寄存器的字节地址,第四章(第 63页),3、T0、T1的功能选择(1)由TMOD中的C/T来选择的。C/T=0,定时器。输入信号是内部时钟脉冲,每个机器周期使寄存器的值增1。每个机器周期等于12个振荡周期,故计数速率为振荡周期的1/12。当采用12 MHz的晶体时,计数速率为1MHz 定时时间,与系统的振荡频率有关、计数器的长度和初值有关。,第四章(第 64页),C/T=1,计数器。对引脚T0(P3.4)和T1(P3.
41、5)的外部输入脉冲计数。每一个脉冲的负跳变使计数值加1,由于外输入脉冲的每个高、低电平持续时间各应大于一个机器周期,因此最小的计数周期为两个机器周期。例如,若单片机晶振频率为12MHZ,则外部计数脉冲的最高频率只能为500KHZ。检测一个1到0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。,第四章(第 65页),4、定时器/计数器T0、T1的工作方式 T0由TL0(低8位)和TH0(高8位)组成;T1由TH和THl组成,所以T0、T1都是16位计数器。若将它们设置成不同的工作方式,其计数长度(最大值)和计数方式都可变化。定时计数器一共有四种工作方式,由TMOD的相关位设置。,第四
42、章(第 66页),(1)方式0-M1=0、M0=0 计数寄存器为13位,由TH0的8位和TL0的低5位组成,TL0的高3位未用,满计数值为213。T0启动后立即加1计数,TL0的低5位计数溢出时向TH0进位,TH0计数溢出则对相应的溢出标志位TF0置位,作为定时器溢出中断标志。进入中断服务程序,内部硬件自动清除该标志。,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,TH0,D5,D4,D3,D2,D1,D0,TL0,计数器,第四章(第 67页),当确定工作方式后,只有当控制开关合上时,定时/计数脉冲才能到达计数器输入端,开始加1计数。控制开关闭合
43、条件如下:GATE=0时,开关的打开、合上取决于TR0,TR0置1,开关合上,计数脉冲得以畅通无阻;TR0为0,开关打开,计数脉冲无法通过。因此定时/计数是否工作,只取决于TR0的值。GATE=1时,控制开关由TR0和INT0引脚的控制,只有TR0为1,且INT0引脚也是高电平,开关才合上,计数脉冲才得以通过。,第四章(第 68页),(2)方式1,16位计数器,由THX和TLX组成,满计数值为216。T0和T1的方式1都是相同的。仅以T0为例介绍。T0启动后立即加1计数,当TL0计数溢出时向TH0进位,TH0计数溢出则溢出标志位TF0置位,并作为定时器溢出中断标志。当单片机进入中断服务程序时,
44、由内部硬件自动清除该标志。,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,TH0,TL0,计数器,第四章(第 69页),(3)方式2 在方式2下,T0和T1的方式2都是相同的。以下以T0为例。TH0和TL0被当作两个8位计数器,计数过程中,TH0寄存8位初值并保持不变,由TL0进行8位计数。当低8位计数溢出时,除了可产生中断申请外,还将TH0中保存的内容向TL0重新装人,以便于重新计数,而TH0中的初值仍然保留,以便下次再行对TL0进行重装。,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,TH0,T
45、L0,计数器,第四章(第 70页),方式2的作用:用于连续计数。不需要在溢出后用软件重新装入计数初值,而是可以自动装入,但此时计数的长度将受到很大的限制,只有28=256次。此外:对定时控制也特别有用,可实现每隔预定时间发出控制信号,特别适合于串行口波特率发生器的使用。,第四章(第 71页),振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,(4)方式3,只适用于定时/计数器T0。定时/计数器T0被拆成2个独立的定时/计数器来用。,TL0,计数器,振荡器,12,TF1,TH0,计数器,TR1,合/断,在方式3下,T0和T1的工作有很大的不同。若T1置
46、于方式3,则Tl停止计数,定时器T1保持其内容不变。一般不会把T1置于方式3。若把T0置于方式3,则16位计数器拆开为两个独立工作的8位计数器TL0和 TH0。但其工作有差别:。工作方式的不同:TL0既可以按计数方式工作,也可以按定时方式工作,TH0只能按定时方式工作。控制方式的不同。,一般情况下,当定时/计数器T0处于工作方式3时,定时/计数器T1可工作为方式0、1、2,但由于此时其已没有控制通断和溢出中断的功能,T1只能作为串行口的波特率发生器使用,或不需要中断的场合。,第四章(第 72页),MCS-51的定时计数器是可编程的,因此,在使用前应进行初始化。初始化一般应包括以下几个步骤:1、
47、TMOD寄存器赋值,确定定时器的工作方式。2置定时计数器初值,直接将初值写入寄存器的TH0,TL0或TH1,TLl。3根据需要,对寄存器IE置初值,开放定时器中断。4对TCON寄存器中的TRl或TR0置位,启动定时计数器。启动以后,计数器即按规定的工作方式和初值进行计数或开始定时。,定时/计数器的应用,例 1,例 2,第四章(第 73页),初始化时,要先置入定时值或计数值的初值,计算方法:设计数器的最大值为M(不同的工作方式中,M可以为213,216或28),则置入的初值X可这样来计算:计数方式:X=M计数模值 定时方式:(MX)T=定时值,所以X=M定时值T。其中T为计数周期,是单片机时钟周
48、期的12倍。当时钟周期为112MHZ时,计数周期为 1us。在这种情况下,若定时器工作在方式0,则最大定时值为 213X 112MHZs=8.192ms;若工作在方式1,则最大定时值为216X 112MHZs=65.536ms例 若单片机的频率为12MHz,请计算2ms所需要的定时器初值。解:计数脉冲个数为2/0.001=2000若方式0,则计数初值为:213-2000=6192=1830H TH0=18H,TL0=30H若方式1,则计数初值为:216-2000=63536=F830H TH0=F8H,TL0=30H,定时计数器初值,第四章(第 74页),方法1:用延时程序实现1mS的延时。U
49、P:SETB P1.0 LCALL D2MS CLR P1.0 LCALL D2MS SJMP UP方法2:用T0定时2mS,查询TF0 确定工作方式 方式0 计算初值 E018H 编程 MOV TMOD,#00H SETB TR0LOOP:MOV TH0,#0E0H MOV TL0,#18H JNB TF0,$CPL P1.0 CLR TF0 SJMP LOOP,例1 使P1.0输出一个周期为2mS的方波。,方法3:用T0定时2mS,中断。ORG 0000H LJMP MAIN ORG 000BH LJMP AT0 MAIN:MOV TMOD,#00H MOV TH0,#0E0H MOV T
50、L0,#18H SETB EA SETB ET0 SETB TR0 SJMP$AT0:MOV TMOD,#00H MOV TH0,#0E0H CPL P1.0 RETI,第四章(第 75页),欲产生周期为2秒的方波,定时器应能定时1秒,已超过定时器的最大定时时间。为此,只有采用定时器定时和软件计数相结合的方法解决问题。,例2 使P1.1输出一个周期为2S的方波。,ORG 0000H LJMP MAIN ORG 000BH LJMP AT0 MAIN:MOV TMOD,#01H MOV TH0,#0B1H MOV TL0,#0E0H MOV IE,#82H SETB TR0 MOV R7,#50