使用定时器计数器计数原理/计数器设置串行通信的波特率时,应把定时器计数器计数原理/计数器设定工作方式(),即()方式

解:①TMOD=DH; ②TMOD=B=E8H ③TMOD=B=D6H ④TMOD=H 2、已知TMOD值,试分析TO、T1工作状态。 ①TMOD=93H;
②TMOD=68H;
③TMOD=CBH;
④TMOD=52H 解:①TMOD=93H=B,T1定时器,方式1,运行与INT1有关;
T0定时器,方式3,运行与INT0无关。
②TMOD=68H=B,T1计数器,方式2,运行与INT1无关;
T0定时器,方式0,运行与INT0有关。
③TMOD=CBH=B;T1计数器,方式0,运行与INT1有关;
T0定时器,方式3,运行与INT0有关。
④TMOD=52H=B;T1定时器,方式1,运行与INT1无关;
T0定时器,方式2,运行与INT0无关。 3、试归纳小结80C51定时/计数器4种工作方式的特点。 13答:①方式0是13位计数器,最大计数值2=8192,计数范围比方式1小,计算定时初值比较麻烦,容易出错,与方 式1比较无任何优点。 16②方式1是16位计数器,最大计数值为2=65536,计数范围大,适用于定时范围较大的应用场合。 8③方式2是8位计数器,最大计数值是2=256,缺点是计数范围小,优点是定时初值可自动恢复,适用于需要重复定时, 而定时范围还不大的应用场合。 ④方式3是8位计数器,仅适用于T0,T1无方式3。T0方式3时,被拆成两个独立的8位计数器TH0、TL0:TL0使用T0原有的控制寄存 器组成一个8位的定时/计数器;TH0借用T1的TF1、TR1,只能对机内机周脉冲计数,组成另一个8位定时器。T0方式3时T1方式2作串行口波特率 发生器。
4、如何判断T0、T1定时/计数溢出? 答:判断T0、T1定时/计数溢出的方法有两种: ①
查询方式。不断查询T0、T1溢出标志TF0、TF1:TF0或TF1=0时,未溢出;TF0或TF1=1时,溢出。 ②
中断方式。T0、T1定时/计数溢出时,在CPU、T0、T1中断开放前提下能自动产生中断。
第七章 习题参考答案
一、填空题 1、在串行通信中,有数据传送方向为
三种方式。 2、要串口为10位UART,工作方式应选为
。 3、用串口扩并口时,串行接口工作方式应选为方式
。 4、计算机的数据传送有两种方式,即
并行数据传送
串行数据传 送
方式,其中具有成本低特点的是
串行数据传送
方式。 5、串行通信按同步方式可分为
通 信。 6、异步串行数据通信的帧格式由
位组成。 7、串行接口电路的主要功能是
化,把 帧中格式信息滤除而保留数据位的操作是
16 8、专用寄存器“串行数据缓冲寄存器”,实际上是
寄存器的总称。 9、MCS-51的串行口在工作方式0下,是把串行口作为
寄存器来使用。这样,在串入 并出移位寄存器的配合下,就可以把串行口作为
口使用,在并入串出移位寄存器的配合下,就可以把串行 口作为
口使用。 10、在串行通信中,收发双方对波特率的设定应该是
的。 11、使用定时器/计数器设置串行通信的波特率时,应把定时器/计数器1设定作方式
自动重新加载
方式。 12、某8031串行口,传送数据的帧格式为1个起始位(0),7个数据位,1个偶校验位和1个停止位(1)组成。当该串行口每分钟传送 1800个字符时,则波特率应为
。 解答:串口每秒钟传送的字符为:个字符/秒
所以波特率为:30个字符/秒×10位/个字符=300b/s 13、8051单片机的串行接口由发送缓冲积存器SBUF、
接收缓冲寄存器SBUF
串行接口控制寄存器SCON、定时器T1构成的
波特率发生器
等部件组成。 14、当向SBUF发“写”命令时,即执行
指令,即向发送缓冲寄存器 SBUF装载并开始由
引脚向外发送一帧数据,发送完后便使发送中断标志位
置 “1”。 15、在满足串行接口接收中断标志位
的条件下,置允许接收位
就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1,当发读SBUF命令时,即指令
指令,便由接收缓冲寄存器SBUF取出信息同过8051内部总线送CPU。 16、若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率为
。 17、 8051中SCON的SM2是多机通信控制位,主要用于方式
,若置 SM2=1,则允许多机通信。 18、TB8是发送数据的第
位,在方式2或方式3中,根据发送数据的需要由软件置位或复位。它在许多通信协议中可用作
奇偶校验位
,在多机通信中作为发送
地址帧或数据帧
的标志位。 19、 RB8是接收数据的第
位,在方式2或方式3中,它或是约定的
奇偶校验位
,或 是约定的地址/数据标识位。 20、串行口方式0是
同步移位寄存器
方式,方式1、2、3是异步通信方式。 二、选择题 1、串行通信的传送速率单位波特,而波特的单位是(
A、 字符/秒
D、 帧/分 2、帧格式为1个起始位、8个数据位和1个停止位的异步串行通信方式是(
D、 方式3 3、通过串行口发送或接收数据时,在程序中应使用(
A、 MOV指令
B、 MOVX指令
C、 MOVC指令
D、 SWAP指令 4、在下列所列特点中,不属于串行工作方式2的是(
A、 11位帧格式
B、 有第9数据位
C、 使用一种固定的波特率
D、 使用两种固定的波特率 5、以下有关第9数据位的说明中,错误的是(
A、 第9数据位的功能可由用户定义
B、 发送数据的第9数据位内容在SCON寄存器的TB8位中预先准备好
C、 帧发送时使用指令把TB8位的状态送入发送SBUF
D、 接收到的第9数据位送SCON寄存器的RB8中 6、串行工作方式1的波特率是(
A、 固定的,为时钟频率的1/12
B、 固定的,为时钟频率的1/32
C、 固定的,为时钟频率的1/64
D、 可变的,通过定时器/计数器的溢出率设定 7、当MCS-51进行多机通信时,串行接口的工作方式应选择(
D、 方式0或方式2 8、用MCS-51串行接口扩展并行I/O口时,串行接口工作方式应选择(
D、 方式3 9、MCS―51单片机串行口发送/接收中断源的工作过程是:当串行口接收或发送完一帧数据时,将SCON中的(
),向CPU申请中断。
A、RI或TI置1
B、RI或TI置 0
C、RI置1或TI置0
D、RI置0或TI置1 10、MCS―51单片机串行口接收数据的次序是下述的顺序(
(1)接收完一帧数据后,硬件自动将SCON的RI置1
(2)用软件将RI清零
(3)接收到的数据由SBUF读出
(4)置SCON的REN为1,外部数据由RXD(P3.0)输入 A、(1)(2)(3)(4)
B、(4)(1)(2)(3) C、(4)(3)(1)(2)
D、(3)(4)(1)(2) 11、MCS―51单片机串行口发送数据的次序是下述的顺序(
(1)待发送数据送SBUF
(2)硬件自动将SCON的TI置1
(3)经TXD(P3.1)串行发送一帧数据完毕
(4)用软件将TI清0 A、(1)(3)(2)(4)
B、(1)(2)(3)(4) C、(4)(3)(1)(2)
D、(3)(4)(1)(2) 12、8051单片机串行口用工作方式0时,(
)。 A、数据从RXD串行输入,从TXD串行输出
B、数据从RXD串行输出,从TXD串行输入
C、数据从RXD串行输入或输出,同步信号从TXD输出 D、数据从TXD串行输入或输出,同步信号从RXD输出 13、MCS―51的串行数据缓冲器SBUF用于(
)。 A、存放运算中间结果
B、存放待发送或已接收到的数据
C、暂存数据和地址
D、存放待调试的程序
三、多项选择题 1、下列哪些属于8031单片机串行通讯时接收数据的过程(
)。 A、SCON初始化
B、从RXD串行输入数据
D、软件RI清零 E、从SBUF读数据 2、下列哪些属于8031单片机串行通讯时发送数据的过程(
)。 A、SCON初始化
B、数据送SBUF
C、从TXD发送数据
D、置TI为1
E、软件TI清零 四、判断题 1、串行口通信的第9数据位的功能可由用户定义。(
18 2、发送数据的第9数据位的内容在SCON寄存器的TB8位预先准备好的。(
√ ) 3、串行通讯发送时,指令把TB8位的状态送入发送SBUF。(
× ) 4、串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(
√ ) 5、串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出设定。(
√ ) 6、 要进行多机通信,MCS-51串行接口的工作方式应选为方式1。(
× )方式2和方式3 7、 MCS-51的串行接口是全双工的。(
√ ) 8、串行口的中断,CPU响应中断后,必须在中断服务程序中,用软件清除相应的中断标志位,以撤消中断请求。( √
) 9、串行口数据缓冲器SBUF是可以直接寻址的专用寄存器。( √
) 五、问答题 1、
已知fosc、SMOD和波特率,试求串行方式1和T1定时初值。 ①fosc=12MHz,SMOD=0,bit/s=2400; ②fosc=6MHz,SMOD=1,bit/s=1200; ③fosc=11.0592MHz,SMOD=1,bit/s=9600; ④fosc=11.0592MHz,SMOD=0,bit/s=2400; 解:①fosc=12MHz,SMOD=0,bit/s=2400; SMODT1初值=256-(2/32)*fosc/(12*波特 率)≈256-13.02=243=F3H ②fosc=6MHz,SMOD=1,bit/s=1200; SMODT1初值=256-(2/32)*fosc/(12*波特 率)≈256-26.04=230=E6H
③fosc=11.0592MHz,SMOD=1,bit/s=9600; SMOD T1初值=256-(2/32)*fosc/(12*波特 率)≈256-3=250=FAH ④fosc=11.0592MHz,SMOD=0,bit/s=2400; SMODT1初值=256-(2/32)*fosc/(12*波特 率)≈256-12=244=F4H 2、
串行缓冲寄存器SBUF有什么作用?简述串行口接收和发送数据的过程。 答:串行缓冲寄存器SBUF有两个:一个是串行发送缓冲寄存器,另一个是串行接收缓冲寄存器,用同一个特殊功能寄存器名SBUF和同一单元地址 99H。接收缓冲寄存器还具有双缓冲结构,以避免在数据接收过程中出现帧重叠错误。
在完成串行初始化后,发送时只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送;接收时CPU将自动把接收到的数据存入SBUF,用户只 需从SBUF中读取接收数据。 第八章 习题参考答案
一、填空题 1、MCS-51外扩ROM、RAM或I/O时,它的地址总线是
口。 2、12根地址线可寻址
KB存储单元。 3、微机与外设间传送数据有
三种传送方式。 4、 74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中
块芯片。 5、74LS273通常用来作简单
接口扩展;而74LS244则常用来作简单
接口扩展。 6、并行扩展存储器,产生片选信号的方式有
法两种。 7、在存储器扩展中,无论是线选法还是译码法,最终都是为了扩展芯片的
端提供 信号。
19 8、起止范围为0000H-3FFFH的存储器的容量是
KB。 9、11根地址线可选
个存储单元,16KB存储单元需要
根地址线。 10、32KB RAM存储器的首地址若为2000H,则末地址为
H。 11、假定一个存储器有4096个存储单元,其首地址为0,则末地址为
。 12、除地线公用外,6根地址线可选
个地址,11根地址线可选
个地址。 13、单片机扩展的内容有
程序存储器扩展
数据存储器扩展
I/O口的扩展
等。 二、选择题 1、 当8031外扩程序存储器8KB时,需使用EPROM2716(
) A、 2片
D、 5片 2、 某种存储器芯片是8KB*4/片,那么它的地址线根数是(
D、 14根 3、 74LS138芯片是(
A、 驱动器
B、 译码器
C、 锁存器
D、 编码器 4、 MCS-51外扩ROM、RAM和I/O口时,它的数据总线是(
D、 P3 5、6264芯片是(
C、 Flash ROM
D、 EPROM 6、一个EPROM的地址有A0----A11引脚,它的容量为(
)。 A、2KB
D、12KB 7、单片机要扩展一片EPROM2764需占用(
)条P2口线。 A、3
D、6 8、在存储器扩展电路中74LS373的主要功能是(
A、存储数据
B、存储地址
C、锁存数据
D、锁存地址 9、下列芯片中其功能为可编程控制的接口芯片是(
)。 A、373
D、31的外部程序存储器常采用的芯片是(
)。 A、2716
D、2114 三、判断题 1、MCS―51单片机程序存储器操作时序中,在不执行MOVX指令时,P0口作为地址线,专用于输出程序存储器的低8位地址PCL;P2口专 用于输出程序存储器的高8位地址PCH。( ×
) 2、线选法是把单根的低位地址线直接接到存储器芯片的片选端。( √
) 3、在接口芯片中,通常都有一个片选端CS,作用是当CS为低电平时该芯片才能进行读写操作。( √
) 4、EPROM27128有14根地址线,可寻址空间为16KB。( √
) 四、多项选择题 1、区分MCS-51单片机片外程序存储器和片外数据存储器的最可靠的方法是:(
) A、看其位于地址范围的低端还是高段 B、看其离MCS-51芯片的远近 C、看其芯片的型号是ROM还是RAM D、看其是与RD信号连接还是与PSEN信号连接 五、问答题 1、在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线, 20关于单片机定时器工作模式3的讨论 - 电子狂飙的博客 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
关于单片机定时器工作模式3的讨论
热度 17已有 1295 次阅读 22:24
工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。&&当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。&&通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。当作为串口定时器使用时,把计数溢出直接送给串行口,这时只需设置好工作方式,即可自动运行。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。&&
刚表态过的朋友 ()
作者的其他最新博客
评论 ( 个评论)
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司第十四章-简答 - 简书
第十四章-简答
串行口工作的方式1,方式2,方式3,三者特点的对比?方式1:波特率可变、无奇偶校验、最简单、最常用 方式2:波特率仅两种选择、有奇偶校验、较少用方式3:波特率可变、有奇偶校验、常用于多机通信
MCS-51单片机串口四种工作方式的波特率是如何计算? 【解析】 波特率是串行口每秒钟发送或接受的位数。波特率和串行口的工作方式有关。其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。方式0时,串行口为同步移位寄存器,波特率是...
在有串行通信时,定时器/计数器T1的作用是什么,怎样确定串行口的波特率? 【答案】定时器T1产生串行通信所需的波特率。 方式1和方式3: 方式1和方式3的波特率≌2^SMOD/32×∫osc/12(2^k-初值) 定时器T1用作波特率发生器时,通常选用工作模式2(自动重装初...
单片机的串行通信接口设计时,需要考虑哪些问题? 【解析】 需要考虑如下问题:1、首先确定通信双方的数据传输速率。2、根据数据传输速率确定采用的串行通信接口标准。3、在通信接口标准允许的范围内确定通信的波特率。为减少波特率的误差,通常选用11.0592MHz的晶振频率。4、根...
1、串行通信和并行通信联系与区别? 串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。 终端与其他设备(例如其他终端、计算机和外部设备)...
串行通信按信号格式可分为哪两种,这两种格式有何不同? 【解析】 答:可以分为同步通信和异步通信,其中同步通信是以字符块(帧)为单位传送的,异步通信是以字符为单位传送的。 同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和...
今年暑假,我成功的成为了一名光荣的梅格妮(吴亦凡的粉丝),其实对于吴亦凡,我很久以前就认识,在他还是EXO中的一员时,我就认识,在他第一次上快本的时候,我就认识,当时我觉得他特别帅,大家都说他是童话里走出来的。可是除了帅,我不知道他还有什么优点。可是在那时,张艺兴进入了我的...
最近很喜欢《全世界失眠》这首歌,就像在体验自己是否还活着。 我也不知道是不是生活改变了自己,很多话不再能说出口,如果你不曾看出我的话的话...只是一切都按着自己的方式,也许也会不错~ 自己是一个没什么心事的人,大概是因为没有可以这样说话的人吧,总不能由着自己的性子让人家跟着...
用最真切的行动去互动存款,相处的模式不在于产生的距离,而是在日常中相互信任相互帮助的需求。 一个只会透支的账户,终究会与你别离,在情感中的充值不是你得到关注越多就储值,而是需要你回应对方同等的帮助。维持关系的根本就是关注与支持。 与员工之间要多一分耐心少一分指责,多一分关注...
总有人浑浑噩噩,在要点燃一切的炎夏,我希望有一滴雨爬上后背的清爽!生在阶梯社会里要清楚的辨别真假,真是不容易的事!受过野蛮的教育,学的东西不知所云,庆幸的是,我有一颗怀疑的心,一颗想要追求真相的心。从此星星之火的读书,在这个没有共产党就没有新中国的国度,我只能读国外的书,去...
诸子百家之墨家 墨家是中国东周时期的哲学派别,诸子百家之一,与孔子所代表的儒家、老子所代表的道家共同构成了中国古代三大哲学体系。 墨家约产生于战国时期。创始人为墨翟(墨子)。墨家是一个纪律严密的学术团体,其首领称“巨子”,其成员到各国为官必须推行墨家主张,所得俸禄亦须向团体...当前位置: >>
第7章 定时器计数器
第7章定时器/计数器的工 作原理及应用1 7.1 定时器/计数器的结构AT89S51定时器/计数器结构见图 7-1,定时器/计数器T0由特殊功能寄存器 TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。图7-1 定时器/计数器结构框图2 T0、T1都有定时器和计数器两种工作模式,两种模式实质都是对脉冲信号进行计数,只不过计数信号来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数(见图7-1);定时器模式是对系统时钟信号经12分频后的内部脉冲信号(机器周期) 计数。由于系统时钟频率是定值,可根据计数值计算出定时时间。两个定时器/计数器属于增1计数器,即每计一个脉冲,计数器增1。T0、T1具有4种工作方式(方式0、1、2和3)。 图 7-1特殊功能寄存器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数, 同时包含了T0、T1状态。计数器起始计数从初值开始。单片机复位时计数器初值为0,也可给计数器装入1个新的初值。7.1.1 工作方式控制寄存器TMODTMOD用于选择定时器/计数器的工作模式和工作方式,字节地址为89H ,不能位寻址,格式见图7-2。 图7-2 寄存器TMOD格式8位分两组,高4位控制T1,低4位控制T0。 TMOD各位说明如下。(1)GATE―门控位GATE=0,定时器是否计数,由控制位TRx(x = 0,1)来控制。5 GATE=1,定时器是否计数,由外中断引脚INTx* 上的电平与运行控制位TRx共同控制。 (2)M1、M0―工作方式选择位M1、M0 4种编码,对应于4种工作方式的选择,见表7-1。表7-1M1、M0工作方式选择6 (3)C/T* ―计数器模式和定时器模式选择位C/T*=0,定时器模式,对系统时钟12分频后的脉冲进行计数。 C/T*=1,计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5 )的外部脉冲(负跳变)计数。 7.1.2 定时器/计数器控制寄存器TCON TCON字节地址88H,位地址为88H~8FH。格式见图7-3。图7-3 TCON格式7 第6章已介绍与外中断有关的低4位。这里仅介绍高4位功能。(1)TF1、TF0―计数溢出标志位 当计数器计数溢出时,该位置“1”。使用查询方式时,此位可供CPU查询,但应注意查询后,用软件及时将该位清“0”。使用中断方式时,作为中断请求标志位,进入中断服务程序后由硬件自动清“0”。 (2)TR1、TR0―计数运行控制位TR1位(或TR0)=1,启动计数器计数的必要条件。TR1位(或TR0)=0,停止计数器计数。 该位可由软件置“1”或清“0”。7.2 定时器/计数器的4种工作方式4种工作方式,分别介绍如下。8 7.2.1 方式0当M1、M0=00,设置为方式0,定时器/计数器等效逻辑结构见图7-4( 以T1为例,TMOD.5、TMOD.4 = 00)。图7-4 定时器/计数器方式0的逻辑结构框图9 方式0为13位计数器,由TLx(x = 0,1)的低5位和THx的高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中的溢出标志位 TFx置“1”。图7-2中,C/T*位控制电子开关决定2种工作模式。(1)C/T*=0,电子开关打在上面,T1(或T0)为定时器工作模式,系 统时钟12分频后的脉冲作为计数信号。(2)C/T*=1,电子开关打在下面,T1(或T0)为计数器工作模式,对P3.5(或P3.4)引脚上的外部输入脉冲计数,当引脚上发生负跳变时,计 数器加1。GATE位状态决定定时器/计数器运行控制取决于TRx一个条件,还是取决于TRx和INTx*引脚状态两个条件。10 (1) GATE=0时,A点(见图7-4)电位恒为1,B点电位仅取决于TRx状 态。TRx=1,B点为高电平,控制端控制电子开关闭合,允许T1(或T0) 对脉冲计数。TRx=0,B点为低电平,电子开关断开,禁止T1(或T0)计 数。 (2) GATE=1时,B点电位由INTx*(x = 0,1)的电平和TRx的状态两 个条件来确定。当TRx=1,且INTx* =1时,B点才为1,电子开关闭合,允 许T1(或T0)计数。故这种情况下计数器是否计数是由TRx和INTx*两个 条件来共同控制的。7.2.2 方式1 当M1、M0=01时,工作于方式1,等效电路逻辑结构见图7-5。 图7-5方式1的逻辑结构框图方式1和方式0差别仅仅在于计数器的位数不同,方式1为16位计数器,由 THx高8位和TLx低8位构成(x = 0,1),方式0则为13位计数器,有关控制 状态位含义(GATE、C/T* 、TFx、TRx)与方式0相同。12 7.2.3 方式2方式0和方式1最大特点是计数溢出后,计数器为全0。因此在循环定 时或循环计数应用时就存在用指令反复装入计数初值的问题,这会影响定时精度,方式2就是为解决此问题而设置的。当M1、M0=10时,工作方式2,等效逻辑结构见图7-6(以T1为例, x=1)。工作方式2为自动恢复初值(初值自动装入)的8位定时器/计数器,TLx(x=0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志TFx置 “1”的同时,还自动将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器方式2工作过程见图7-7。13 图7-6方式2逻辑结构框图14 图7-7 方式2工作过程方式2可省去用户软件中重装初值的指令执行时间,简化定时初值的计 算方法,可相当精确地定时。15 7.2.4 方式3 方式3是为增加一个附加的8位定时器/计数器而设置的,从而使 AT89S51具有3个定时器/计数器。方式3只适用于T0,T1不能工作在方 式3。T1方式3时相当于TR1 = 0,停止计数(此时T1可作为串口波特率 产生器)。 1.工作方式3下的T0 当TMOD的低2位为11时,T0被选为方式3,各引脚与T0的逻辑关系 见图7-8。 T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位 C/T* 、GATE、TR0 ,而TH0被固定为一个8位定时器(不能作为外部 计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的 中断请求源TF1。16 2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串口波特率发生器时,T0才工作在方式3。T0 方式3时,T1可为方式0、1、2,作为串口波特率发生器,或不需要中断的 场合。17 图7-8T0方式3的逻辑结构框图 (1)T1工作在方式0T1的控制字中M1、M0 = 00时,T1工作在方式0,工作示意图如图79所示。图7-9 (2)T1工作在方式1T0方式3时T1为方式0工作示意图当T1的控制字中M1、M0 = 01时,T1工作在方式1,工作示意见图710。19 图7-10 T0方式3时T1为方式1工作示意图 (3)T1工作在方式2 当T1控制字中M1、M0 = 10时,T1为方式2,工作示意如图7-11所示。图7-11T0方式3时T1为方式2工作示意图20 (4)T1设置在方式3T0方式3时,再把T1也设置成方式3,此时T1停止计数。 7.3 对外部输入的计数信号的要求 计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生 负跳变时,计数值增1。每个机器周期S5P2期间,都对外部输入引脚T0或 T1进行采样。如在第1个机器周期中采得值为1,而在下一个机器周期中采 得的值为0,则在紧跟着的再下一个机器周期S3P1期间,计数器加1。由于 确认一次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数 脉冲的最高频率为系统振荡器频率1/24。21 如选用6MHz晶体,允许输入脉冲频率最高为250kHz。如选用12MHz频率晶体,则可输入最高频率500kHz外部脉冲。对外输入信号占空比没有限 制,但为确保某一给定电平在变化前能被采样1次,则该电平至少保持1个 机器周期。故对外部输入信号要求见图7-12,图中Tcy为机器周期。图7-12 对外部计数输入信号的要求 7.4 定时器/计数器的编程和应用4种工作方式中,方式0与方式1基本相同,只是计数位数不同。方式0 为13位,方式1为16位。由于方式0是为兼容MCS-48而设,计数初值计 算复杂,所以在实际应用中,一般不用方式0,常采用方式1。 7.4.1 P1口控制8只LED每0.5s闪亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理电路见图7-13。 采用T0方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮一次。23 图7-13 方式1定时中断控制LED闪亮24 (1)设置TMOD寄存器T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T*=0,为定 时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时 器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。 (2)计算定时器T0的计数初值 设定时时间5ms(即5 000?s),设T0计数初值为X,假设晶振的频率为 11.059 2MHz,则定时时间为:25 定时时间=(216?X)×12/晶振频率则 5 000=(216 ?X) ×12/11.059 2 得 X = 60 928 转换成十六进制:0xee00,其中0xee装入TH0,0x00装入TL0。 (3)设置IE寄存器本例由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置1。 (4)启动和停止定时器T0将定时器控制寄存器TCON中的TR0=1,则启动定时器T0;TR0=0,则 停止定时器T0定时。参考程序:#include&reg51.h& char i=100;void main (){ TMOD=0x01; TH0=0 TL0=0x00; //定时器T0为方式1 //设置定时器初值27 P1=0x00;EA=1; ET0=1; TR0=1; while(1); { ;//P1口8个LED点亮//总中断开 //开T0中断 //启动T0 //循环等待}} void timer0() interrupt 1 { TH0=0 TL0=0x00; //重新赋初值 //T0中断程序 i--;if(i&=0) { P1=~P1; i=100; } }//循环次数减1//P1口按位取反 //重置循环次数7.4.2 计数器的应用 【例7-2】如图7-14,T1采用计数模式,方式1中断,计数输入引脚T1(P3.5)上外接按钮开关,作为计数信号输入。按4次按钮开关后,P1口的8只LED闪烁不停。 (1)设置TMOD寄存器29 T1工作在方式1,应使TMOD的M1、M0=01;设置C/T*=1,为计数器模式;对T0运行控制仅由TR0来控制,应使GATE0=0。定时器T0不使用, 各相关位均设为0。所以,TMOD寄存器应初始化为0x50。 (2)计算定时器T1的计数初值 由于每按1次按钮开关,计数1次,按4次后,P1口的8只LED闪烁不停 。因此计数器初值为65 536?4=65 532,将其转换成十六进制后为0xfffc, 所以,TH0=0xff,TL0=0xfc。30 图7-14 由外部计数输入信号控制LED的闪烁 (3)设置IE寄存器本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。 (4)启动和停止定时器T1 将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。 参考程序如下:#include &reg51.h& void Delay(unsigned int i) //定义延时函数Delay( ),i是形 //式参数,不能赋初值 { for(;i&0;i--) //变量i由实际参数传入一个值 //因此i不能赋初值 //空函数 //主函数 //设置定时器T1为方式1计数 //向TH1写入初值的高8位for(j=0;j&125;j++){;} } void main( ) { TMOD=0x50; TH1=0TL1=0EA=1;//向TL1写入初值的低8位//总中断允许33 ET1=1; TR1=1; while(1) ; }//定时器T1中断允许 //启动定时器T1 //无穷循环,等待计数中断void T1_int(void) interrupt 3 //T1中断函数 { for(;;) //无限循环 { P1=0 //8位LED全灭 Delay(500) ; //延时500ms P1=0; //8位LED全亮 Delay(500); //延时500ms } }34 7.4.3 控制P1.0产生周期为2ms的方波【例7-3】假设系统时钟为12MHz,设计电路并编写程序实现从P1.0引 脚上输出一个周期为2ms的方波,见图7-15。 要在P1.0上产生周期为2ms的方波,定时器应产生1ms的定时中断,定 时时间到则在中断服务程序中对P1.0求反。使用定时器T0,方式1定时中 断,GATE不起作用。 本例的原理电路见图7-16。其中在P1.0引脚接有虚拟示波器,用来观 察产生的周期2ms的方波。35 图7-15 定时器控制P1.0输出一个周期2ms方波 图7-16 定时器控制P1.0输出周期2ms的方波的原理电路37 下面来计算T0初值X :设T0的初值为X,有 (216?X )×1×10?6=1×10?3 即 65 536?X=1 000 得X=64 536,化为16进制数就是0xfc18。将高8位0xfc装入TH0,低8位 0x18装入TL0。 参考程序如下:#include &reg51.h& sbit P1_0=P1^0; void main(void) { TMOD=0x01; TR0=1; while(1) { //头文件reg51.h //定义特殊功能寄存器P1的位变量P1_0 //主程序 //设置T0为方式1 //接通T0 //无限循环38 TH0=0TL0=0x18; do{}while(!TF0); P1_0=!P1_0; TF0=0; } }//置T0高8位初值//置T0低8位初值 //TF0为0原地循环,为1则T0溢出,往下执行 // P1.0状态求反 //TF0标志清零仿真时,右键单击虚拟数字示波器,出现下拉菜单,点击“Digital oscilloscope”选项,就会在数字示波器上显示P1.0引脚输出周期为2ms方 波,如图7-17所示。39 图7-17 虚拟数字示波器显示的2ms的方波波形40 7.4.4 利用T1控制发出1kHz的音频信号【例7-4】利用T1的中断控制P1.7引脚输出频率为1kHz方波音频信号,驱 动蜂鸣器发声。系统时钟为12MHz。方波音频信号周期1ms,因此T1的定时中断时间为0.5 ms,进入中断服务程序后,对P1.7求反。电路见图7-18。 先计算T1初值,系统时钟为12MHz,则机器周期为1?s。1kHz音频信号周期为1ms,要定时计数的脉冲数为a。则T1初值:TH1=(65 536 ?a) /256; TL1=(65 536 ?a) %25641 图7-18控制蜂鸣器发出1kHz的音频信号42 参考程序如下:#include&reg51.h& sbit sound=P1^7; #define f1(a) (65536-a)/256 //包含头文件 //将sound位定义为P1.7脚 //定义装入定时器高8位时间常数#define f2(a) (65536-a)%256unsigned int i=500; unsigned int j=0; void main(void)//定义装入定时器低8位时间常数{EA=1; ET1=1; TMOD=0x10; TH1=f1(i); TL1=f2(i); TR1=1; while(1) //开总中断. //允许定时器T1中断 . //TMOD=B,使用T1的方式1定时 //给T1高8位赋初值. //给T1低8位赋初值. //启动T1 { i=460; while(j&2000); j=0; i=360; while(j&2000); j=0;//循环等待}} void T1(void) interrupt 3 using 0 { TR1= 0; sound=~ TH1=f1(i); TL1=f2(i); //定时器T1中断函数 //关闭T1 //P1.7输出求反 //T1的高8位重新赋初值. //T1的低8位重新赋初值.44 j++;TR1=1; } //启动定时器T17.4.5 LED数码管秒表的制作【例7-5】用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时 范围0.1~9.9s。当第1次按一下计时功能键时,秒表开始计时并显示;第2次 按一下计时功能键时,停止计时,将计时的时间值送到数码管显示;如果计 时到9.9s,将重新开始从0计时;第3次按一下计时功能键,秒表清0。再次按 一下计时功能键,则重复上述计时过程。 本秒表应用定时器模式,计时范围0.1~9.9s。此外还涉及如何编写控制 LED数码管显示的程序。 原理电路见图7-19。45 图7-19 LED数码管显示的秒表原理电路及仿真46 参考程序如下:#include&reg51.h& unsigned char code discode1[]= {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //数码管显示0~9的段码表, 带小数点 unsigned char code discode2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //头文件//数码管显示0~9的段码表,不带小数点unsigned char timer=0;
unsigned char key=0; main() { TMOD=0x01; //定时器T0方式1定时 //timer记录中断次数 //second储存秒 //key记录按键次数 //主函数ET0=1;//允许定时器T0中断47 EA=1; second=0; P0=discode1[second/10]; P2=discode2[second%10]; while(1) {//总中断允许 //设初始值 //显示秒位0 //显示0.1s位0 //循环if((P3&0x80)==0x00){ key++; switch(key) { case 1: TH0=0//当按键被按下时//按键次数加1 //根据按键次数分三种情况 //第一次按下为启动秒表计时 //向TH0写入初值的高8位48 TL0=0x00; TR0=1; case 2: TR0=0; case 3: key=0; second=0; P0=discode1[second/10]; P2=discode2[second%10]; } while((P3&0x80)==0x00); }//向TL0写入初值的低8位,定时5ms //启动定时器T0//按下两次暂定秒表 //关闭定时器T0//按下3次秒表清0 //按键次数清 //秒表清0 //显示秒位0 //显示0.1s位0//如果按键时间过长在此循环49 }} void int_T0() interrupt 1 { TR0=0; TH0=0 TL0=0x00; //停止计时,执行以下操作(会带来计时误差) //向TH0写入初值的高8位 //向TL0写入初值的低8位,定时5ms using 0 //定时器T0中断函数timer++;if (timer==20) { timer=0; second++;//记录中断次数//中断20次,共计时20*5ms=100ms=0.1s //中断次数清0 //加0.1s //根据计时,即时显示秒位 //根据计时,即时显示0.1s位P0=discode1[second/10]; P2=discode2[second%10];}50 if(second==99) { TR0=0; second=0; key=2; } else { TR0=1; } }//当计时到9.9s时 //停止计时 //秒数清0 //按键数置2,当再次按下按键时, //key++,即key=3,秒表清0复原 //计时不到9.9s时 //启动定时器继续计时51 7.4.6 测量脉冲宽度―门控位GATEx的应用介绍门控位GATE应用。利用GATE测量INT1*脚上正脉冲宽度。 【例7-6】门控位GATE1可使T1启动计数受INT1*控制,当 GATE1=1,TR1=1时,只有INT1*引脚输入高电平时,T1才被允许计数。利用该 功能,可测量INT1*脚正脉冲宽度,方法见图7-20。 原理电路见图7-21,图中省略复位电路和时钟电路。利用门控位GATE1 来测量INT1*脚上正脉冲宽度,并在6位数码管上以机器周期数显示。对被测量 脉冲信号宽度,要求能通过旋转信号源旋钮可调。52 图7-20 利用GATE位测量正脉冲的宽度 图7-21 利用GATE位测量 INT1*引脚上正脉冲的宽度的原理电路54 参考程序如下:#include&reg51.h& #define uint unsigned int #define uchar unsigned char sbit P3_3=P3^3; uchar count_ uchar count_ //位变量定义 //定义计数变量,用来读取TH0 //定义计数变量,用来读取TL0uchar shiwan, wan, qian, bai, shi, uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管段码表 void delay(uint z) //延时函数55 {uint x,y; for(x=z;x&0;x--) for(y=110;y&0;y--);}void display(uint a,uint b,uint c,uint d,uint e,uint f) //数码管显示函数 {P2=0P0=table[f]; delay(2); P2=0 P0=table[e]; delay(2); P2=0 P0=table[d];56 delay(2);P2=0xf7; P0=table[c]; delay(2); P2=0 P0=table[b]; delay(2);P2=0P0=table[a]; delay(2); } void read_count() //读取计数寄存器的内容57 { do{ count_high=TH1; //读高字节 count_low=TL1; //读低字节 }while (count_high!=TH1); num=count_high*256+count_ /*可将两字节的机器周期数进行显示处理*/ } void main( ) { while(1) { flag=0; TMOD=0x90; //设置定时器T1为方式1定时58 TH1=0; TL1=0;//向定时器T1写入计数初值while(P3_3==1); //等待INT1*变低TR1=1;//如果INT1*为低,启动T1(未真正开始计数)while(P3_3==0); //等待INT1* 变高,变高后T1真正开始计数 while(P3_3==1); //等待INT1*变低,变低后T1停止计数 TR1=0; read_count(); shiwan=num/100000; wan=num%00; //读计数寄存器内容的函数qian=num%;bai=num%; shi=num%100/10;59 ge=num%10;while(flag!=100) { //减小刷新频率flag++;display(ge,shi,bai,qian,wan,shiwan); }}} 执行上述程序仿真,把INT1*引脚上出现的正脉冲宽度显示在LED数码管显示器上。晶振频率为12MHz,如果默认信号源输出频率为1kHz的方波,则数码管显示为500。 注意:在仿真时,偶尔显示501是因为信号源的问题,若将信号源换 成频率固定的激励源则不会出现此问题。60 7.4.7 LCD时钟的设计 【例7-7】使用定时器实现一个LCD显示时钟。采用LCD 1602,具体见第5 章的绍。LCD时钟的原理电路见图7-22。 最小计时单位是秒,如何获得1s的定时?可将T0定时时间定为50ms, 采用中断方式进行溢出次数累计,满20次,则秒计数变量second加1;若秒 计满60,则分计数变量minute加1,同时将秒计数变量second清0;若分钟 计满60,则小时计数变量hour加1;若小时计数变量满24,则将小时计数变 量hour清0。61 图7-22 LCD时钟的原理电路 先将定时器以及各计数变量设定完毕,然后调用时间显示子程序。秒计时由T0中断服务子程序来实现。 参考程序如下:#include&reg51.h&#include&lcd1602.h& #define uchar unsigned char #define uint unsigned int uchar int_ //定义中断次数计数变量 //秒计数变量63
uchar code date[]=& H.I.T. CHINA &;//分钟计数变量 //小时计数变量 //LCD第1行显示的内容uchar code time[]=& TIME 23:59:55 &;uchar second=55,minute=59,hour=23; void clock_init() { uchar i,j; for(i=0;i&16;i++) {//LCD第2行显示的内容write_data(date[i]);} write_com(0x80+0x40); for(j=0;j&16;j++) { write_data(time[j]); } } void clock_write( uint s, uint m, uint h) { write_sfm(0x47,h); write_sfm(0x4a,m); write_sfm(0x4d,s); } void main() { init1602(); //LCD初始化 clock_init(); //时钟初始化 TMOD=0x01; EA=1; ET0=1; TL0=()%256; TR0=1; int_time=0;//设置定时器T0为方式1定时 // 总中断开 // 允许T0中断TH0=()/256; //给T0装初值//中断次数、秒、分、时单元清0second=55;minute=59; hour=23; while(1){clock_write(second ,minute, hour); } } void T0_interserve(void) interrupt 1 using 1 //T0中断服务子程序 { int_time++; //中断次数加1 if(int_time==20) //若中断次数计满20次 { int_time=0; //中断次数变量清0 second++; //秒计数变量加 1 } if(second==60) //若计满60s { second=0; //秒计数变量清0 minute ++; //分计数变量加 1 } if(minute==60) { minute=0;//若计满60分 //分计数变量清0hour ++;} if(hour==24) { hour=0; }//小时计数变量加1//小时计数计满24,将小时计数变量清0TH0=()/256; //定时器T0重新赋值TL0=()%256;}执行上述程序仿真运行,就会在LCD上显示实时时间。 7.5 AT89S52新增定时器/计数器T2简介 AT89S52与AT89S51单片机相比,新增加了一个16位定时器/计数器T2 (可简写为T2)。 与T2相关的特殊功能寄存器共有2个:T2CON和T2MOD。 7.5.1 T2的特殊功能寄存器T2CON和T2MOD1. 特殊功能寄存器T2CONT2有3种工作方式:自动重装载(递增或递减计数)、捕捉和波特率发 生器,由特殊功能寄存器中的控制寄存器T2CON 中的相关位来进行选择。 T2CON的字节地址为C8H,可位寻址,位地址为C8H~CFH,格式见图723。 图7-23 TCON格式 T2CON寄存器各位的定义如下: TF2(D7):T2计数溢出中断请求标志位。当T2计数溢出时,由内部硬件置位TF2,向CPU发出中断请求。但是当RCLK位或TCLK位为1时将不予置位。本标志位必须由软件清0。 EXF2(D6):T2外部中断请求标志位。当由引脚T2EX上的负跳变引起“捕捉”或“自动重装载”且EXEN2位为1,则置位EXF2标志位,并向CPU发出中断请求。该标志位必须由软件清0。 RCLK(D5):串行口接收时钟标志位。当RCLK位为1时,串行通信端使用T2的溢出信号作为串行通信方式1和方式3的接收时钟;当RCLK位为0时,使用T1的溢出信号作为串行通信方式1和方式3的接收时钟。 TCLK(D4):串行发送时钟标志位。当TCLK位为1时,串行通信端使 用T2的溢出信号作为串行通信方式1和方式3的发送时钟;当TCLK位为0时, 串行通信端使用T1的溢出信号作为串行通信方式1和方式3的发送时钟; EXEN2(D3):T2外部采样允许标志位。当EXEN2位=1时,如果T2不是正工作在串行口的时钟,则在T2EX引脚(P1.1)上的负跳变将触发“捕捉”或“自动重装载”操作;当EXEN2位=0时,在T2EX引脚(P1.1)上的 负跳变对T2不起作用。TR2(D2):T2启动/停止控制位。当软件置位TR2时,即TR2=1,则启动T2开始计数,当软件清TR2位时,即TR2=0,则T2停止计数。 C/(D1):T2的计数或定时方式选择位,当设置C/=1时,为对外部事件 计数方式;C/=0时,为定时方式。 CP/RL2(D0):T2捕捉/自动重装载选择位。当设置CP/RL2=1时,如果 EXEN2为1,则在T2EX引脚(P1.1)上的负跳变将触发“捕捉”操作;当 设置CP/RL2=0时,如果EXEN2为1,则T2计数溢出或T2EX引脚上的负跳变 都将引起自动重装载操作;当RCLK位为1或TCLK位为1,CP/RL2标志位不 起作用。T2计数溢出时,将迫使T2进行自动重装载操作。 通过软件编程对T2CON 中的相关位进行设置来选择T2 的3种工作方式:16位自动重装载(递增或递减计数)、捕捉和波特率发生器,如表7-2所 示。 2. 特殊功能寄存器T2MOD与T2相关的另一个特殊功能寄存器为T2MOD。T2MOD寄存器的格式见 图7-24。T2MOD寄存器各位的定义如下:T2OE(D1):T2输出的启动位。 DCEN(D0):置位为1时允许T2增1/减1计数,并由T2EX引脚(P1.1)上的逻辑电平决定是增1还是减1计数。― :保留位。 当单片机复位时,DCEN为0,默认T2为增1计数方式;当把DCEN置1时,将由T2EX引脚(P1.1)上的逻辑电平决定T2是增1还是减1计数。图7-24 T2MOD的格式 7.5.2 T2的16位自动重装载方式 T2的16位自动重装载工作方式见图7-25。图中RCAP2L为陷阱寄存器低字节,字节地址为CAH;RCAP2H为陷阱寄存器高字节,字节地址为CBH。T2引脚为P1.0,T2EX引脚为P1.1,因 此当使用T2时,P1.0和P1.1就不能作I/O口用了。另外有两个中断请求,通过一个“或”门输出。因此当单片机响应中断后,在中断服务程序中应该用软件识别是哪一个中断请求,分别进行处理,该中断请求标志位必须用 软件清“0”。(1)当设置T2MOD寄存器的DCEN 位为0(或上电复位为0)时,T2为增1型自动重新装载方式,此时根据T2CON寄存器中的EXEN2位的状态, 可选择两种操作方式: 图7-25 T2的自动重装载方式的工作示意图 ① 当EXEN2标志位清0,T2计满溢出回0,一方面使中断请求标志位TF2 置1,同时又将陷阱寄存器RCAP2L、RCAP2H中预置的16位计数初值自动重装入计数器TL2、TH2中,自动进行下一轮的计数操作,其功能与T0、T1的方式2(自动装载)相同,只是本计数方式为16位,计数范 围大。RCAP2L、RCAP2H寄存器的计数初值由软件预置。 ② 当设置EXEN2标志位为1,T2仍具有上述①的功能,并增加了新的特性 。当外部输入引脚T2EX(P1.1)产生负跳变时,能触发三态门将 RCAP2L、RCAP2H陷阱寄存器中的计数初值自动装载到TH2和TL2中 ,重新开始计数,并置位EXF2为1,发出中断请求。 (2)当T2MOD寄存器的DCEN 位置为1时,可以使T2既可以增1计数,也 可实现减1计数,增1还是减1取决于T2EX引脚上的逻辑电平。图7-26为 T2增1/减1计数方式的结构示意图。 图7-26 T2的增1/减1计数的工作示意图 由图7-26可见,当设置DCEN 位为1时,可以使T2具有增1/减1计数功能。 当T2EX(P1.1)引脚为“1”时,T2执行增1计数功能。当不断加1计满溢 出回0时,一方面置位TF2为1,发出中断请求,另一方面,溢出信号触 发三态门,将存放在陷阱寄存器RCAP2L、RCAP2H中的计数初值自动 装载到TL2和TH2计数器中继续进行加1计数。 当T2EX(P1.1)引脚为“0”时,T2执行减1计数功能。当TL2和TH2计数 器中的值等于陷阱寄存器RCAP2L、RCAP2H中的值时,产生向下溢出 ,一方面置位TF2为1,发出中断请求,另一方面,下溢信号触发三态 门,将0FFFFH装入TL2和TH2计数器中,继续进行减1计数。 中断请求标志位TF2和EXF2位必须用软件清0。 【例7-8】利用T2实现1秒定时并控制P1.0引脚上的LED 1秒闪灭1次,晶 振频率为12MHz。编程思想:将T2设置为1/16秒的定时,定时中断16次,即为1秒,1秒时间到后,把P1.0的状态求反。 定时初值x计算:每秒中断16次,则每次溢出为=62500个机器 周期。 因此: 65536-x=62500, 初值x=3036=0BDCH。
说明:在中断函数中用到了静态变量“static uint i”。 静态变量的特点是语句执行后,其占用的的存储单元不释放,在下一次执行该语句时,该变量仍为上一次的值,它只需赋一次初值。也就是说,只有在第一次进中断 时“uint i=0”,才对i赋值,以后再进入中断时,不会再对i赋值。 7.5.3 T2的捕捉方式捕捉方式就是及时 “捕捉”住输入信号发生的跳变及有关信息。常用于 精确测量输入信号的变化如脉宽等等。捕捉方式的工作示意结构见图7-27。根据T2CON寄存器中EXEN2位的不同设置,“捕捉”方式有两种选择。(1)当EXEN2位=0时,T2是一个16位的定时器/计数器。当设置C/位为 1时,选择外部计数方式,即对T2引脚(P1.0)上的负跳变信号进行计数。计数器计满溢出时置1中断请求标志TF2,发出中断请求信号。CPU响应中断进入该中断服务程序后,必须用软件将标志位TF2清0。其他操作均与T0 和T1的工作方式1相同。(2)当EXEN2位=1时,T2除上述功能外,还可增加“捕捉”功能。当外部T2EX引脚(P1.1)上的信号发生负跳变,将选通三态门控制端(见图 7-27“捕捉”处),把计数器TH2和TL2中的当前计数值分别“捕捉”进RCAP2L和RCAP2H中,同时T2EX引脚(P1.1)上的信号负跳变将置位T2CON的的EXF2标志位,向CPU请求中断。 图7-27 T2的捕捉方式结构示意图 7.5.4 T2的波特率发生器方式及可编程时钟输出T2可工作于波特率发生器方式,还可作为可编程时钟输出。 1. 波特率发生器方式T2具有专用的“波特率发生器”(波特率发生器就是控制串行口接收/发送数字信号的时钟发生器)的工作方式。通过软件置位T2CON寄存器中的 RCLK和/或TCLK,可将T2设置为波特率发生器。需要注意的是,如果T2用 于波特率发生器和T1用于别的功能,则这个接收/发送波特率可能是不同的。 当置位RCLK和/或TCLK,T2进入波特率发生器模式,如图7-28所示。 由图7-28,当设置T2CON寄存器中的C/为0,设置RCLK和/或TCLK为1时, 输出16分频的接收/发送波特率。 图7-28T2作为串行通信波特率发生器示意图 另外通过对T2EX引脚(P1.1)跳变信号的检测,并置位EXF2中断请求标志位,向CPU请求中断。需要注意的是,图7-28中的主振频率fosc是经过 2分频,而不是12分频。T2工作在波特率发生器方式,属于16位自动重装载的定时模式。串行通信方式1和方式3(见第8章的介绍)的波特率计算公式为: 串行通信方式1和方式3的波特率 = 定时器T2的溢出率/16 T2的波特率发生器可选择定时模式或计数模式,一般都选择定时模式。 注意,在选择定时器使用时,是主振频率fosc经12分频为一个机器周期作为 加1计数信号,而作为波特率发生器使用时是以每个时钟状态S(2分频主振 频率)作为加1计数信号。因此串行通信方式1和方式3的波特率计算公式为: 方式1和方式3的波特率(b/s)=(fosc/32)×[65536-(RCAP2H RCAP2L)] (7-1) 式(7-1)中“RCAP2H RCAP2L”为T2的初值。例如“RCAP2HRCAP2L”初值为FFFFH,则=1,则式(7-1)的波特率 =(fosc/32)b/s。设主振频率fosc=12MHz, 则上述波特率=375kb/s。从式(7-1)可见,采用T2用作波特率发生器,其波特率设置范围极广。 从图7-28可见,当T2用作波特率发生器时,具有以下特点:① 必须设置T2CON寄存器中的RCLK和/或TCLK为1(有效);② 计数器溢出再装载,但不会置位TF2向CPU请求中断; ③ 如果T2EX引脚上发生负跳变将置位EXF2为1,向CPU请求中断处理,但不会将陷阱寄存器“RCAP2H RCAP2L”中预置的计数初值装入TH2和TL2中。因此,可将T2EX引脚用作额外的输入引脚或外部中断源; ④ 采用定时模式作波特率发生器时,是对fosc经2分频(时钟状态S)作为计数单位,而不是fosc经12分频的机器周期信号。 ⑤ 波特率设置范围广,精确度高。另外要注意的是,T2在波特率工作方式下作为定时器模式时(TR2为 1),不能对TH2、TL2进行读写。这时的T2是以每个时钟状态(S)进行加1计数,这时进行读写可能出错。对陷阱寄存器RCAP2可以读,但不能写,因为写RCAP2可能会覆盖重装的数据并使装入出错。处理T2或RCAP2寄存器 前不能关闭T2(即清0 TR2位)。2. 可编程时钟信号输出T2可通过软件编程在P1.0引脚输出时钟信号。P1.0除用作通用I/O引脚 外还有两个功能可供选用:用于T2的外部计数输入和频率为61Hz~4MHz的 时钟信号输出。图7-29为时钟输出和外部事件计数方式示意图。 图7-29 T2时钟输出和外部事件计数方式示意图 通过软件对T2CON.1位C/复位为0,对T2MOD.1位T2OE置1就可将T2选定为时钟信号发生器,而T2CON.2位TR2控制时钟信号输出开始或结束 (TR2为启动/停止控制位)。由主振频率fosc和T2定时、自动重装载方式的计数初值决定时钟信号的输出频率,其设置公式如下:时钟信号输出频率=(12×106)/[4×(65536-(RCAP2H RCAP2L)] (7-2) 从式(7-2)可见,在主振频率(fosc)设定后,时钟信号输出频率就取 决于计数初值。 在时钟输出模式下,计数器溢出回0不会产生中断请求。这种功能相当 于T2用作波特率发生器,同时又可用作时钟发生器。但必须注意,无论如何 波特率发生器和时钟发生器都不能单独确定各自不同的频率。原因是两者都用同一个陷阱寄存器RCAP2H、RCAP2L,不可能出现两个计数初值。
第7章一、填空 思考题及习题 7 参考答案 1.如果采用晶振的频率为 3MHz,定时器/计数器 Tx(x=0,1)工作在方式 0、1、2 下,其方 式 0 的最大定时时间为...第6章 定时器与计数器作业 - 第6章 1. MCS-51 的定时器/计数器 如果晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各 为多少?...?7 设系统时钟频率为 6MHz,请试用定时器 T0 作外部计数器,编程实现每计到 ...第11章 可编程定时器计数...
2页 5下载券 定时器计数器的定时实验 暂无评价...七、思考题 1. 8253 初始化编程时需要遵循的原则是什么? (1)对计数器设置...第6章单片微机的定时器计... 暂无评价 92页 免费
微机原理 第11章 可...信息工程学院实验报告课程名称:单片机原理及接口 成 实验项目名称:实验 7 计数器/定时器 班级: 姓名: 实验时间: 指导教师(签名) : 学号: 绩: 实验...课题 名称 内容 分析 教学 目标 及要 求 重点 及措 施 难点 及措 施 教学 方式 第七章 第一节定时器/计数器的应用 计划 学时 2 课时 知识点:定时/计数...0章​节​(​M​C​S​-1​单​片​机...1、单片机内部定时器/计数器共有( ) 种工作方式。 A、1 B、3 C、4 2、...(7)IT1;外部中断 1 触发方式选择位。 (8)IT0:外部中断 0 触发方式选择位...第6章 定时器计数器 暂无评价 60页 2下载券
6. 定时器计数器_V1 暂无...LTE学习总结―定时器计数器_计算机硬件及网络_IT/计算机_专业资料。LTE 定时器...进入RRC_CONNECTED , 并且进行小区重选 通知上层关于5.3.3.7中描述 的限制...7. MCS-51 单片机中断系统选用外部中断 1 和定时器/计数器 T1 中断为高优先...第6章 定时器计数器习题 暂无评价 41页 免费
第6章89C51的定时器与计.....
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 8253定时器计数器实验 的文章

 

随机推荐