1、12022-12-72022年12月7日15时28分1 51子系列有子系列有2个个可编程的定时器计数器:可编程的定时器计数器:定时器计数定时器计数器器0与定时器计数器与定时器计数器1,可由程序选择作为,可由程序选择作为定时器定时器用或作为用或作为计数器计数器用,定时时间或计数值也可由程序设定。用,定时时间或计数值也可由程序设定。每个定时器计数器都具有每个定时器计数器都具有4种种工作方式,可用程序选择。工作方式,可用程序选择。任一定时器计数器在定时时间到或计数值到时,可由任一定时器计数器在定时时间到或计数值到时,可由程序安排产生中断请求信号或不产生中断请求信号。程序安排产生中断请求信号或不产生中
2、断请求信号。52子系列有子系列有3个个可编程定时器计数器,增加了定时器可编程定时器计数器,增加了定时器计数器计数器2。定时器计数器。定时器计数器2有有3种种工作方式,可用程序选择工作方式,可用程序选择。定时器定时器/计数器的主要特性计数器的主要特性22022-12-72022年12月7日15时28分22.4.1 定时器计数器的结构定时器计数器的结构定时器计数器定时器计数器0 0、1 1的结构框图的结构框图32022-12-72022年12月7日15时28分32.4.1 定时器计数器定时器计数器0、1的结构的结构定时器计数器定时器计数器0 0、1 1的结构框图的结构框图42022-12-7202
3、2年12月7日15时28分41.16位加法计数器位加法计数器工作方法:工作方法:作计数器用时,作计数器用时,加法计数器对芯片引脚加法计数器对芯片引脚T0(P3.4)或或T1(P3.5)上输入的上输入的脉冲计数。每输入一个脉冲,脉冲计数。每输入一个脉冲,加法计数器增加加法计数器增加1。加法计数。加法计数溢出时可向溢出时可向CPU发出中断请发出中断请求信号求信号 作定时器用时,加法计数作定时器用时,加法计数器对内部机器周期脉冲器对内部机器周期脉冲 Tcy 计数。计数。定时器计数器定时器计数器0 0、1 1的结构框图的结构框图T1T0TcyTH1TL1TH0TL0TMODTCON启启动动工工作作方方
4、式式工工作作方方式式4 44 4启启动动溢溢出出溢溢出出中中断断请请求求(P3.5)(P3.4)52022-12-72022年12月7日15时28分52工作方式控制寄存器工作方式控制寄存器TMOD TMOD用来选择定时器用来选择定时器计数器计数器0、1的工作方式,低的工作方式,低4位用于定时器计数器位用于定时器计数器0,高,高4位用于定时器计数器位用于定时器计数器1。定时器计数器定时器计数器0 0、1 1的结构框图的结构框图T1T0TcyTH1TL1TH0TL0TMODTCON启启动动工工作作方方式式工工作作方方式式4 44 4启启动动溢溢出出溢溢出出中中断断请请求求62022-12-7202
5、2年12月7日15时28分62工作方式控制寄存器工作方式控制寄存器TMOD (1)定时器计数器功能选择位定时器计数器功能选择位 C/T:C/T=1为计数器方式,为计数器方式,C/T=0为定时器方式。为定时器方式。(2)定时器计数器工作方式选择位定时器计数器工作方式选择位M1、M0 :定时器计数定时器计数器器4种工作方式的选择由种工作方式的选择由M1、M0的值决定。的值决定。GATEC/TM1M0GATEC/TM1M0T1T0TMOD 89H 72022-12-72022年12月7日15时28分7 (2)定时器计数器工作方式选择位定时器计数器工作方式选择位M1、M0 :定时器计数定时器计数器器4
6、种工作方式的选择由种工作方式的选择由M1、M0的值决定。的值决定。82022-12-72022年12月7日15时28分8 (3)门控制位门控制位GATE:如果如果GATE1,定时器计数器,定时器计数器0的的工作受芯片引脚工作受芯片引脚INT0(P3.2)控制,定时器计数器)控制,定时器计数器1的工作的工作受芯片引脚受芯片引脚INT1(P3.3)控制;如果控制;如果GATE0,定时器计数器,定时器计数器的工作与的工作与INT0、INT1引脚无关。一般情况下引脚无关。一般情况下GATE=0。GATEC/TM1M0GATEC/TM1M0T1T0TMOD 89H 例:定时器例:定时器T1为定时器方式,
7、工作在方式为定时器方式,工作在方式0,非门控方式,非门控方式,定时器定时器T0为计数器方式,工作在方式为计数器方式,工作在方式1,非门控方式,非门控方式,TMOD的的值应该设置为多少?值应该设置为多少?TMOD=00000101B=05H92022-12-72022年12月7日15时28分93.定时器计数器控制寄存器定时器计数器控制寄存器TCON 作用:作用:TCON高高4位用于控制位用于控制定时器定时器0、1的运行,低的运行,低4位用位用于控制外部中断于控制外部中断,与定时器,与定时器计数器无关。计数器无关。定时器计数器定时器计数器0 0、1 1的结构框图的结构框图T1T0TcyTH1TL1
8、TH0TL0TMODTCON启动启动工作工作方式方式工作工作方式方式4 44 4启动启动溢出溢出溢出溢出中断请求中断请求102022-12-72022年12月7日15时28分103.定时器计数器控制寄存器定时器计数器控制寄存器TCON (1)定时器计数器定时器计数器1运行控制位运行控制位TR1(TCON.6):TR1=1时定时器计数器时定时器计数器1工作,工作,TR10则停止工作。则停止工作。TRl由软件置由软件置1或清零。或清零。(2)定时器计数器定时器计数器1溢出中断标志溢出中断标志TF1(TCON.7)定时器计数器定时器计数器1计数溢出时由硬件自动置计数溢出时由硬件自动置TF1=1,在中
9、,在中断允许的条件下,便向断允许的条件下,便向CPU发出定时器计数器发出定时器计数器1的中断的中断请求信号,请求信号,CPU响应后响应后TFl由硬件自动清零。在中断屏蔽由硬件自动清零。在中断屏蔽条件下,条件下,TF1可作查询测试用。可作查询测试用。TF1TR1TF0TR0IE1IT1IE0IT0D7 D6 D5 D4 D3 D2 D1 D0 TCON 88H 112022-12-72022年12月7日15时28分113.定时器计数器控制寄存器定时器计数器控制寄存器TCON (3)定时器计数器定时器计数器0运行控制位运行控制位TR0(TCON.4):TR0=1时定时器计数器时定时器计数器0工作,
10、工作,TR00则停止工作。则停止工作。TR0由软件置由软件置1或清零。或清零。(4)定时器计数器定时器计数器0溢出中断标志溢出中断标志TF0(TCON.5)定时器计数器定时器计数器0计数溢出时由硬件自动置计数溢出时由硬件自动置TF0=1,在中,在中断允许的条件下,便向断允许的条件下,便向CPU发出定时器计数器发出定时器计数器0的中断的中断请求信号,请求信号,CPU响应后响应后TF0由硬件自动清零。在中断屏蔽由硬件自动清零。在中断屏蔽条件下,条件下,TF0可作查询测试用。可作查询测试用。TF1TR1TF0TR0IE1IT1IE0IT0D7 D6 D5 D4 D3 D2 D1 D0 TCON 88
11、H 122022-12-72022年12月7日15时28分12运行控制:是否为门控方式运行控制:是否为门控方式工作方式选择:工作方式选择:方式方式0方式方式3 工作状态选择:定时器或计数器状态工作状态选择:定时器或计数器状态振荡器1212S S1 1A AS S2 2TLTL1 15位5位THTH1 18位8位TF1TF1GATET1引脚引脚TRTR1 1&INT1INT10TC/1TC/引脚引脚 定时器计数器1工作方式0结构图 Tcy2.4.2 定时器计数器的四种工作方式定时器计数器的四种工作方式132022-12-72022年12月7日15时28分13一、定时器计数器一、定时器计数器0、1
12、 的工作状态选择的工作状态选择(C/T)定时器定时器/计数器工作状态选择计数器工作状态选择振荡器1212S S1 1S S2 2加 1 寄加 1 寄存器对存器对T0(P3.4)0TC/1TC/或或T1(P3.5)Tcy 1.计数器工作状态计数器工作状态(C/T=1):计数脉冲来自相应的外部计数脉冲来自相应的外部输入引脚,定时器输入引脚,定时器T0的计数脉冲来自的计数脉冲来自P3的第四个引脚的第四个引脚(P3.4),定时器定时器T1的计数脉冲来自的计数脉冲来自P3的第五个引脚的第五个引脚(P3.5)。当定时器)。当定时器/计数器运行时,引脚上的输入计数脉计数器运行时,引脚上的输入计数脉冲由冲由1
13、到到0的跳变,可以使对应的定时器的加的跳变,可以使对应的定时器的加1寄存器对增寄存器对增1。2.4.3定时器计数器的四种工作方式定时器计数器的四种工作方式142022-12-72022年12月7日15时28分14定时器定时器/计数器工作状态选择计数器工作状态选择振荡器1 12 2S S1 1S S2 2加加 1 1 寄寄存存器器对对T0(P3.4)0TC/1TC/或或T1(P3.5)Tcy 2.定时器工作状态定时器工作状态(C/T=0):本质上仍是定时器的加本质上仍是定时器的加1寄寄存器对进行加存器对进行加1运算。运算。振荡器产生的内部时钟脉冲经振荡器产生的内部时钟脉冲经12分频后作为计数脉冲
14、,分频后作为计数脉冲,所以计数频率为振荡频率的所以计数频率为振荡频率的1/12。当采用当采用12MHz的晶体时,计数频率为的晶体时,计数频率为1MHz。由于内部时钟周期是相当精确的频率固定的脉冲,所以由于内部时钟周期是相当精确的频率固定的脉冲,所以通过设定寄存器对的初值,在定时器方式时,可以获得相通过设定寄存器对的初值,在定时器方式时,可以获得相当精确的定时。当精确的定时。152022-12-72022年12月7日15时28分15二、定时器计数器二、定时器计数器0、1 的运行控制的运行控制 方法:方法:定时器定时器/计数器的运行控制(启动和停止)是由计数器的运行控制(启动和停止)是由TMOD中
15、的中的GATE位,位,TCON中的中的TRi(i=0或或1)位以及从芯片位以及从芯片引脚引脚INTi(i=0或或1)上引入的外部信号通过上图的逻辑电路实)上引入的外部信号通过上图的逻辑电路实现的。现的。定时器定时器/计数器计数器1 1运行控制运行控制GATETMOD.7TR1TCON.6&INT1INT1引脚引脚加 1 寄加 1 寄存器对存器对P3.3控制控制S2162022-12-72022年12月7日15时28分16 原理:原理:(1)当定时器当定时器1的的GATE=0时,定时器时,定时器1运行控制由运行控制由TR1的一个条件确定,而的一个条件确定,而TR1可用软件置位或清零,从而可以可用
16、软件置位或清零,从而可以利用程序控制定时器的启动和停止运行。利用程序控制定时器的启动和停止运行。定时器定时器/计数器计数器1运行控制运行控制GATETMOD.7TR1TCON.6&INT1INT1引脚引脚加 1 寄加 1 寄存器对存器对P3.3控制控制二、定时器计数器二、定时器计数器0、1 的运行控制的运行控制172022-12-72022年12月7日15时28分17二、定时器计数器二、定时器计数器0 0、1 1 的运行控制的运行控制 原理:原理:(2)当定时器当定时器1的的GATE=1时,时,“或或”门的输出电平取门的输出电平取决于决于INT1引脚的信号电平,所以引脚的信号电平,所以“与与”
17、门输出的电平决定于门输出的电平决定于TR1和和INT1两个条件。两个条件。G GA AT TE ET TM MO OD D.7 7T TR R1 1T TC CO ON N.6 6&I IN NT T1 1引引脚脚加加 1 1 寄寄存存器器对对P P3 3.3 3控控制制 定时器或计数器运行定时器或计数器运行控制控制182022-12-72022年12月7日15时28分18三、定时器计数器三、定时器计数器0 0、1 1的的4 4种工作方式种工作方式192022-12-72022年12月7日15时28分19三、定时器计数器三、定时器计数器0、1的的4种工作方式种工作方式 设置条件:设置条件:M1
18、0、M00 方式方式0为:为:13位定时器计数器,位定时器计数器,TH1是高是高8位加法计数器,位加法计数器,TLl是低是低5位加法计数器位加法计数器(只用只用5位,其高位,其高3位未用位未用)。1.工作方式工作方式0振荡器1212S S1 1A AS S2 2TLTL1 15位5位THTH1 18位8位TF1TF1GATET1引脚引脚TRTR1 1&INT1INT10TC/1TC/引脚引脚 定时器计数器1工作方式0结构图 202022-12-72022年12月7日15时28分201.工作方式工作方式0计数范围:计数范围:18192 THl、TLl从初值开始加法计数,直至溢出从初值开始加法计数
19、,直至溢出,所以设置的,所以设置的初值不同,定时时间或计数值也不同。初值不同,定时时间或计数值也不同。注意:注意:加法计数器加法计数器TH1溢出后,必须用程序重新对溢出后,必须用程序重新对THl、TLl设置初值,否则下一次设置初值,否则下一次TH1、TLl将从将从0开始加法计数。开始加法计数。初值设置范围:初值设置范围:08191(0213-1)定时范围:定时范围:(18192)Tcy例例 已知振荡器振荡频率已知振荡器振荡频率fosc为为12MHz,要求定时器计数器,要求定时器计数器0产生产生1ms定时,试编写初始化程序。定时,试编写初始化程序。计数值:计数值:8192-X 定时时间:定时时间
20、:(8192-X)Tcy212022-12-72022年12月7日15时28分21(2)初始化程序的编写初始化程序的编写:在在C51中加入中加入头文件,然后在主函数头文件,然后在主函数 中写如下语句:中写如下语句:TH0=0 xE0 ;定时器;定时器/计数器计数器0写入初值写入初值 TL0=0 x18 ;同上;同上 TMOD=0 x00 ;T0设为定时器、工作方式设为定时器、工作方式0 TR0=1;启动定时器;启动定时器/计数器计数器0TH0=E0H TL0=18H解:解:(1)TH0 TL0初值的计算与初值的计算与TMOD方式字的确定:方式字的确定:由于由于Tcy1us,故有,故有 T=(8
21、192-X)Tcy(8192-X)1us=1000us 得得 X=71921C18H=0001 1100 0001 1000BTMOD=00H222022-12-72022年12月7日15时28分222.工作方式工作方式1 设置条件:设置条件:M10、M01 方式方式1为:为:16位定时器计数器,位定时器计数器,TH1是高是高8位加法计数器,位加法计数器,TLl是低是低8位加法计数器。位加法计数器。定时器计数器定时器计数器1工作方式工作方式1结构图结构图 振荡器1212S S1 1A AS S2 2TLTL1 18位8位THTH1 18位8位TF1TF1GATET1引脚引脚TRTR1 1&IN
22、T1INT10TC/1TC/引脚引脚232022-12-72022年12月7日15时28分232.工作方式工作方式1计数范围:计数范围:165536 THl、TLl从初值开始加法计数,直至溢出,所以设置的从初值开始加法计数,直至溢出,所以设置的初值不同,定时时间或计数值也不同。初值不同,定时时间或计数值也不同。注意:注意:加法计数器加法计数器TH1溢出后,必须用程序重新对溢出后,必须用程序重新对THl、TLl设置初值,否则下一次设置初值,否则下一次TH1、TLl将从将从0开始加法计数。开始加法计数。初值设置范围:初值设置范围:065535(0216-1)定时范围:定时范围:(165536)Tc
23、y例例 已知振荡器振荡频率已知振荡器振荡频率fosc为为12MHz,要求定时器计数器,要求定时器计数器0产生产生50ms定时,试编写初始化程序。定时,试编写初始化程序。计数值:计数值:65536-X 定时时间:定时时间:(65536-X)Tcy242022-12-72022年12月7日15时28分24(2)初始化程序的编写初始化程序的编写:在在C51中加入中加入头文件,然后在主函数头文件,然后在主函数 中写如下语句:中写如下语句:TH0=0 x3C ;定时器;定时器/计数器计数器0写入初值写入初值 TL0=0 xB0 ;同上;同上 TMOD=0 x01 ;T0设为定时器工作方式设为定时器工作方
24、式1 TR0=1,启动定时器,启动定时器/计数器计数器0TH0=3CH TL0=B0H 解:解:(1)TH0 TL0初值的计算与初值的计算与TMOD方式字的确定:方式字的确定:由于由于Tcy1us,故有,故有 T=(65536-x)Tcy(65536-x)1us=50000us 得得 X=155363CB0HTMOD=01H252022-12-72022年12月7日15时28分25解:方波的周期用定时器解:方波的周期用定时器T1产生,根据产生,根据(2n-x)Tcy(216-x)1s=50ms,所以所以x=65536-50000=15536=3CB0H即即TH1=3CH,TL1=B0H 或者通
25、过计算得出或者通过计算得出TH1=15536/256,TL1=15536%256 已知晶振频率已知晶振频率fosc=12MHz,要求定时器,要求定时器1产生产生100ms的的方波信号,定时器方波信号,定时器1工作于方式工作于方式1,编写在,编写在P2.0引脚上产生引脚上产生100ms的方波程序。的方波程序。在在T1中设置初值为中设置初值为15536,在初值的基础上进行加,在初值的基础上进行加1计数,计数,每隔每隔50ms计数溢出计数溢出1次,次,CPU响应中断后,在中断服务响应中断后,在中断服务程序中对程序中对P2.0引脚信号取反。引脚信号取反。262022-12-72022年12月7日15时
26、28分26#include#define uint unsigned intsbit fangbo=P20;void delay(uint z);/延时子程序延时子程序void main()TMOD=0 x10;/设置设置T1为定时器模式为定时器模式 /,工作在方式,工作在方式1 TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;/开总中断开总中断 ET1=1;/允许允许T1中断中断 TR1=1;/启动启动T1 while(1);void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);v
27、oid timer1()interrupt 3 TH1=(65536-50000)/256;TL1=(65536-50000)%256;fangbo=fangbo;272022-12-72022年12月7日15时28分273.工作方式工作方式2 设置条件:设置条件:M11、M00 方式方式2为:自动重新装入初值(自动重装载)的为:自动重新装入初值(自动重装载)的8位定时器位定时器计数器计数器。TL1作为作为8位加法计数器使用,位加法计数器使用,TH1作为初值寄存作为初值寄存器用。器用。TH1、TL1的初值都由软件预置。的初值都由软件预置。定时器计数器定时器计数器1工作方式工作方式2结构图结构图
28、 振荡器1212S S1 1A AS S2 2TLTL1 18位8位TF1TF1GATEGATET T1 1引脚引脚TRTR1 1&INT1INT10TC/1TC/引脚引脚THTH1 18位8位重装载信号重装载信号282022-12-72022年12月7日15时28分283.3.工作方式工作方式2 2计数范围:计数范围:1256 TLl从初值开始加法计数,溢出时从初值开始加法计数,溢出时:(1)置位置位TF1;(2)发出重装载信号,将发出重装载信号,将THl中初值自动送入中初值自动送入TLl,使,使TL1从初值从初值开始重新计数。开始重新计数。注意:注意:重新装入初值后,重新装入初值后,TH1
29、TH1的内容保持不变。的内容保持不变。初值设置范围:初值设置范围:0255(028-1)定时范围:定时范围:(1256)Tcy 工作方式工作方式2特别适用于定时控制。特别适用于定时控制。例已知振荡器振荡频率例已知振荡器振荡频率fosc为为12MHz,要求定时器计数器,要求定时器计数器0要求每隔要求每隔200us产生一定时控制信号。产生一定时控制信号。计数值:计数值:256-X 定时时间:定时时间:(256-X)Tcy292022-12-72022年12月7日15时28分29(2)初始化程序初始化程序:在在C51中加入中加入头文件,然后在主函数头文件,然后在主函数 中写如下语句:中写如下语句:T
30、L0=0 x38 ;定时器;定时器/计数器计数器0写入初值写入初值TH0=0 x38 ;同上;同上TMOD=0 x02 ;T0设为定时器工作方式设为定时器工作方式2TR0=1;启动定时器;启动定时器/计数器计数器0TH0=38H TL0=38H 解:解:(1)TH0 TL0初值的计算与初值的计算与TMOD方式字的确定:方式字的确定:由于由于Tcy1us,故有,故有 T=(256-x)Tcy(256-x)1us=200us得得 X=5638HTMOD=02H302022-12-72022年12月7日15时28分304.4.工作方式工作方式3 3 设置条件:设置条件:M11、M01 方式方式3 3
31、:工作方式工作方式3 3仅对定时器计数器仅对定时器计数器0 0有意义。有意义。TL0TL0、TH0TH0成为两个独立的成为两个独立的8 8位加法计数器。位加法计数器。如把定时器计数器如把定时器计数器1 1设置为工作方式设置为工作方式3 3,相当于,相当于TR1=0TR1=0,即定时器计数器即定时器计数器1 1实际将停止工作。实际将停止工作。定时器计数器定时器计数器0 0工作方式工作方式3 3结构图结构图 振荡器1212S S1 1A AS S2 2TL0TL08位8位TF0TF0GATEGATET0T0引脚引脚TR0TR0&INT0INT00TC/1TC/引脚引脚TH0TH08位8位TF1TF
32、1TRTR1 1TcyTcyTcyTcy中断中断中断中断312022-12-72022年12月7日15时28分314.4.工作方式工作方式3 3 说明:说明:定时器计数器定时器计数器0采用工作方式采用工作方式3后,后,51子系列子系列就具有就具有3个定时器个定时器/计数器,即计数器,即8位定时器计数器位定时器计数器TL0,8位定时器位定时器TH0和和16位定时器计数器位定时器计数器1(TH1、TL1)。)。定时器计数器定时器计数器1虽然还可以选择为方式虽然还可以选择为方式0、方式、方式1或方或方式式2,但由于,但由于TR1和和TF1被被TH0借用,不能产生溢出中断借用,不能产生溢出中断请求,所
33、以只用作串行口的波特率发生器。请求,所以只用作串行口的波特率发生器。322022-12-72022年12月7日15时28分32定时器定时器/计数器计数器0已预置初值为已预置初值为156,且选定用方式,且选定用方式 2的计数的计数器方式,现在器方式,现在T0引脚上输入周期为引脚上输入周期为1ms脉冲,问:脉冲,问:(1)此时定时器此时定时器/计数器计数器0的实际用途是什么?的实际用途是什么?(2)在什么情况下,定时器在什么情况下,定时器/计数器计数器0溢出?溢出?解:解:(1)实际用作定时器,但采用外部时钟脉冲实际用作定时器,但采用外部时钟脉冲 (2)满满100ms定时器定时器/计数器计数器0将
34、溢出。将溢出。332022-12-72022年12月7日15时28分33 设计一个秒表,使它从设计一个秒表,使它从059s计数,并使计数,并使LED数码管左数码管左边两个显示数字边两个显示数字059,假设晶振频率,假设晶振频率fosc=12MHz,定时,定时器器/计数器选用计数器选用T0。解:利用解:利用51单片机的定时器单片机的定时器0,使其,使其50ms中断一次,中断中断一次,中断20次时,秒加次时,秒加1。初值与中断服务程序中,初值与中断服务程序中,TH0、TL0的值设置为:的值设置为:TH0=0 x3C ;定时器;定时器/计数器计数器0写入初值写入初值 TL0=0 xB0 ;同上;同上
35、;模式寄存器的值为:模式寄存器的值为:TMOD=0 x01 ;T0设为定时器工作方式设为定时器工作方式1 342022-12-72022年12月7日15时28分34程序如下:程序如下:#include#define uint unsigned int#define uchar unsigned charuchar temp,aa,shi,ge;uchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;/共阳极共阳极数码管码表数码
36、管码表 void display(uchar shi,uchar ge);/显示子程序显示子程序void delay(uint z);/延时子程序延时子程序void init();352022-12-72022年12月7日15时28分35void main()init();/初始化子程序初始化子程序while(1)if(aa=20)aa=0;temp+;if(temp=60)temp=0;shi=temp/10;ge=temp%10;display(shi,ge);362022-12-72022年12月7日15时28分36void delay(uint z)uint x,y;for(x=z;x
37、0;x-)for(y=110;y0;y-);void display(uchar shi,uchar ge)P2=0 x01;/送入十位数码管位选信号,显示数字送入十位数码管位选信号,显示数字P1=tableshi;/送入十位数码管的段选信号送入十位数码管的段选信号delay(5);P2=0 x02;/送入个位数码管位选信号,显示数字送入个位数码管位选信号,显示数字P1=tablege;/送入个位数码管的段选信号送入个位数码管的段选信号delay(5);372022-12-72022年12月7日15时28分37void init()temp=0;TMOD=0 x01;/设置设置T0为定时器模式
38、,工作在方式为定时器模式,工作在方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;/开总中断开总中断ET0=1;/允许允许T0中断中断TR0=1;/启动启动T0void timer0()interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;382022-12-72022年12月7日15时28分382.5 并行并行I/O端口端口8051单片机共有单片机共有4个个8位双向位双向I/O口,共口,共32口线。每位均有自口线。每位均有自己的锁存器己的锁存器(SFR),输出驱动器和输入缓冲
39、器。,输出驱动器和输入缓冲器。392022-12-72022年12月7日15时28分39u多路开关多路开关1)功能:用于控制选通功能:用于控制选通I/O方式方式还是还是地址地址/数据输出方式数据输出方式2)方式控制:由内部控制信号方式控制:由内部控制信号产生产生数据输出锁存器,用于数据数据输出锁存器,用于数据位的锁存位的锁存两个三态的数据输入缓冲器两个三态的数据输入缓冲器(BUF1和和BUF2)。推拉式推拉式I/OI/O驱动器:由两只驱动器:由两只场效应管(场效应管(FETFET)组成,上面)组成,上面的场效应管构成上拉电路。的场效应管构成上拉电路。2.5.1 P0端口端口BUF2BUF1QQ
40、DCVcc控制控制AD0P0R1 P0R2D0P0WP0口口1位的内部结构位的内部结构读锁存器读锁存器读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器地址地址/数据数据P00多路开关多路开关10字节地址字节地址80H,位地址,位地址80H87H。402022-12-72022年12月7日15时28分402.5.1 P0端口端口BUF2BUF1QQDCVcc控制控制AD0P0R1 P0R2D0P0WP0口内部结构口内部结构读锁存器读锁存器读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器地址地址/数据数据P00多路开关多路开关10说明:说明:1、当、当CPU发出的发出的控制信号控制
41、信号为为0时,时,P0口做双向口做双向I/O口,口,为漏极开路(三态)为漏极开路(三态)2、当、当CPU发出的发出的控制信号控制信号为为1时,时,P0口为地址口为地址/数据数据复用总线(用于口扩展)复用总线(用于口扩展)412022-12-72022年12月7日15时28分412.5.1 P0端口端口BUF2BUF1QQDCVcc控制控制AD0P0R1 P0R2D0P0WP0口内部结构口内部结构读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器地址地址/数据数据P00多路开关多路开关103、P0作输入作输入/输出口的使用输出口的使用(1)P0作输出口使用作输出口使用 来自来自CPU的的“
42、写入写入”脉冲加在脉冲加在D锁存器的锁存器的C端,内部总线上的数端,内部总线上的数据写入据写入D锁存器,并向端口引脚锁存器,并向端口引脚P0.x输出。输出。注意:注意:由于输出电路是漏极开路由于输出电路是漏极开路(因为这时上拉场效(因为这时上拉场效应管截止),应管截止),必须外接上拉电阻才能有高电平必须外接上拉电阻才能有高电平输出。输出。读锁存器读锁存器422022-12-72022年12月7日15时28分422.5.1 P0端口端口BUF2BUF1QQDCVcc控制控制AD0P0R1 P0R2D0P0WP0口内部结构口内部结构读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器地址地址/
43、数据数据P00多路开关多路开关103、P0作输入作输入/输出口的使用输出口的使用(1)P0作输出口使用作输出口使用 来自来自CPU的的“写入写入”脉冲加在脉冲加在D锁存器的锁存器的C端,内部总线上的数端,内部总线上的数据写入据写入D锁存器,并向端口引脚锁存器,并向端口引脚P0.x输出。输出。注意:注意:由于输出电路是漏极开路由于输出电路是漏极开路(因为这时上拉场效(因为这时上拉场效应管截止),应管截止),必须外接上拉电阻才能有高电平必须外接上拉电阻才能有高电平输出。输出。(2 2)P0P0作输入口使用作输入口使用 区分区分“读引脚读引脚”和和“读锁存器读锁存器”。“读引脚读引脚”信号把下方缓冲
44、器打信号把下方缓冲器打开,引脚上的状态经缓冲器读入开,引脚上的状态经缓冲器读入内部总线;内部总线;读锁存器读锁存器432022-12-72022年12月7日15时28分432.5.1 P0端口端口BUF2BUF1QQDCVcc控制控制AD0P0R1 P0R2D0P0WP0口内部结构口内部结构读引脚读引脚锁存器锁存器内部总线内部总线写锁存器写锁存器地址地址/数据数据P00多路开关多路开关103、P0作输入作输入/输出口的使用输出口的使用(1)P0作输出口使用作输出口使用 来自来自CPU的的“写入写入”脉冲加在脉冲加在D锁存器的锁存器的C端,内部总线上的数端,内部总线上的数据写入据写入D锁存器,并
45、向端口引脚锁存器,并向端口引脚P0.x输出。输出。注意:注意:由于输出电路是漏极开路由于输出电路是漏极开路(因为这时上拉场效(因为这时上拉场效应管截止),应管截止),必须外接上拉电阻才能有高电平必须外接上拉电阻才能有高电平输出。输出。(2 2)P0P0作输入口使用作输入口使用 区分区分“读引脚读引脚”和和“读锁存器读锁存器”。“读引脚读引脚”信号把下方缓冲器打信号把下方缓冲器打开,引脚上的状态经缓冲器读入开,引脚上的状态经缓冲器读入内部总线;内部总线;“读锁存器读锁存器”信号打开上面的缓信号打开上面的缓冲器把锁存器冲器把锁存器Q Q端的状态读入内端的状态读入内部总线。部总线。读锁存器读锁存器4
46、42022-12-72022年12月7日15时28分44执行执行“MOV A,P0”时时读引脚读引脚信号有效。信号有效。说明:说明:执行执行“ANL P0,#0FH”时时读锁存器读锁存器信号有效。信号有效。452022-12-72022年12月7日15时28分452.5.2 P1端口端口Vcc P10 Q Q D C P1R1 P1R2 D0 P1W R*图2、P1口内部结构 P1口内部结构如下图所示。口内部结构如下图所示。输出部分有内部上拉电阻输出部分有内部上拉电阻R*约为约为20K。其他部分与其他部分与P0端口使用相类似(读引脚时先写入端口使用相类似(读引脚时先写入1)。)。写数据读端口
47、P10 Vcc P11 8051 K1 D1 R1 图2.1、P1口应用 字节地址字节地址90H,位地址,位地址90H97H。462022-12-72022年12月7日15时28分46P1口只作通用的口只作通用的I/O口使用口使用,在电路结构上与,在电路结构上与P0口有口有两点区别:两点区别:(1)因为只传送数据,不再需要多路转接开关)因为只传送数据,不再需要多路转接开关MUX。(2)由于)由于P1口用来传送数据,因此口用来传送数据,因此输出电路中有上拉电阻,这输出电路中有上拉电阻,这样电路的输出不是三态的。样电路的输出不是三态的。因此:因此:(1)P1口作为输出口使用时口作为输出口使用时,外
48、电路无需再接上拉电阻。,外电路无需再接上拉电阻。(2)P1口作为输入口使用时,应先向其锁存器先写入口作为输入口使用时,应先向其锁存器先写入“1”,使使输出驱动电路的输出驱动电路的FET截止,所以截止,所以P1口是准双向口。口是准双向口。472022-12-72022年12月7日15时28分47字节地址为字节地址为A0H,位地址位地址A0HA7H。2.5.3 P2端口端口P2口的位结构的电路原理图口的位结构的电路原理图说明:说明:1 1、P2P2可以作为通用的可以作为通用的I/OI/O,也可以作也可以作为高为高8 8位地址输出输出。位地址输出输出。2 2、当控制信号为、当控制信号为1 1时时FP
49、2P2口输出地址信息,口输出地址信息,F此时单片机完成外部的此时单片机完成外部的取指操作或对外部数据取指操作或对外部数据存储器存储器1616位地址的读写位地址的读写操作。操作。3 3、当控制信号为、当控制信号为0 0时时,作为作为普通普通I/OI/O口使用时口使用时F用法和用法和P1P1口类似。口类似。10482022-12-72022年12月7日15时28分48P3口的字节地址为口的字节地址为B0H,位地址位地址为为B0HB7H。P3口的口的第二功能第二功能定义,应熟记。定义,应熟记。表表2-5 P3口的第二功能定义口的第二功能定义 口引脚口引脚 第二功能第二功能 P3.0 RXD(串行输入
50、口)串行输入口)P3.1 TXD(串行输出口)串行输出口)P3.2 INT0*(外部中断外部中断0)P3.3 INT1*(外部中断外部中断1)P3.4 T0(定时器定时器0外部计数输入)外部计数输入)P3.5 T1(定时器定时器1外部计数输入)外部计数输入)P3.6 WR*(外部数据存储器写选通)外部数据存储器写选通)P3.7 RD*(外部数据存储器读选通)外部数据存储器读选通)2.5.4 P3端口端口492022-12-72022年12月7日15时28分49图图2-10 P2口的位结构的电路原理口的位结构的电路原理502022-12-72022年12月7日15时28分50第二功能信号第二功能