




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在线教务辅导网: :/教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:第3章 MCS-51单片机的硬件资源3.1 MCS-51单片机并行I/O口3.2 MCS-51单片机中断系统3.3 MCS-51单片机定时器/计数器3.4 MCS-51单片机串行通信 3.1 MCS-51单片机并行I/O口3.1.1 I/O接口的作用3.1.2 MCS-51内部并行I/O口3.1.3 MCS-51内部并行I/O口的应用3.1.1 I/O接口的作用I/O接口是CPU与外设进行信息交换的主要通道,其作用主要有:实现和不同外设的速度匹配改变数据传送方式改变信号的性质和电平C
2、PU和外设之间交换的信息有两类,一类是数据型的,例如程序代码、地址和数据;另一类是状态和命令型的,状态信息包含了外设的工作状态信息,命令信息用于控制外设的工作模式。因此,I/O接口必须能将外设传送过来的状态信息归一化后传递给CPU,又能自动根据要求给外设发送控制命令。 3.1.2 MCS-51内部并行I/O口MCS-51内部提供了4个并行I/O口,分别为P0、P1、P2和P3端口,其中,P0端口为三态双向端口,负载能力为8个LS型TTL门电路;P1P3为准双向端口,用作输入时,端口锁存器必须先写“1, 负载能力为4个LS型TTL门电路。1、P0口P0口是一个漏极开路型双向I/O口,每位能驱动8
3、个LS型TTL负载。在访问外存储器时,P0分时提供低8位地址和8位数据的复用总线;当不接片外存储器或不扩展I/O接口时,P0可作为一个通用输入/输出口。当P0作为输入口使用时,应先向口锁存器写“1,此时P0口的全部引脚浮空,可作为高阻抗输入;当P0口作为输出口使用时,由于输出电路为漏极开路电路,必须外接上拉电阻。P0口的字节地址为80H,位地址为80H87H,该口的各位口线具有完全相同但又相互独立的逻辑电路,P0口的位结构电路原理如图3-1 所示。图3-1 P0口位结构 1在实际应用中,P0口在绝大多数的情况下,都是作为单片机系统的地址/数据线使用。2P0口也可以作为通用的I/O使用。 3当P
4、0口作为输出口使用时,由锁存器和驱动电路构成数据输出通路。 4当P0口作为输入口使用时,应区分读引脚和读端口或称读锁存器两种情况,因此,在端口电路中有两个用于读入的三态缓冲器。 2、P1口 P1口是一个有内部上拉电阻的准双向口, P1口的每一位口线能独立用作输入线或输出线。作输出时,如将“0写入锁存器,场效应管导通,输出线为低电平,即输出为“0。因此在作输入时,必须先将“1写入口锁存器,使场效应管截止。该口线由内部上拉电阻提拉成高电平,同时也能被外部输入源拉成低电平,即当外部输入“1时该口线为高电平,而输入“0时,该口线为低电平。P1口作输入时,可被任何TTL电路和MOS电路驱动,由于具有内部
5、上拉电阻,也可以直接被集电极度开路和漏极开路电路驱动,不必外加上拉电阻。P1口可驱动4个LSTTL门电路。 P1口的字节地址为90H,位地址为90H97H,其位结构电路原理如图3-2所示,P1口只能作为通用的I/O使用,所以在电路结构上与P0口有些不同。图 3-2 P1口位结构3、P2口 P2口是一个带有内部上拉电阻的8为准双向通用I/O口,每一位口线能驱动4个LS型TTL负载;当系统中接有外部存储器时,P2口用于输出高8位地址A15A8。P2口的字节地址为A0H,位地址为A0HA7H。P2口的位结构电路原理如图3-3所示,引脚上拉电阻同P1口。在结构上,P2口比P1口多一个输出控制局部。 图
6、 3-3 P2口位结构 在实际应用中,P2口用于为系统提供高位地址,因此,同P0口一样,在口电路中有一个多路转向开关MUX,但MUX的一个输入端不再是“地址/数据,而是单一的“地址,这是因为P2口只作为地址线使用,而不是作为数据线使用。当P2口作为高位地址线使用时,多路转向开关应倒向“地址端。由于P2只作为地址线使用,端口的输出用不着是三态的,因此,P2口也是一个准双向口。此外,P2口也可以作为通用I/O口使用,这时多路转向开关MUX倒向锁存器Q端。4、P3口P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口。P3口的字节地址为B0H,位地址为B0HB7H。P3口的
7、位结构的电路原理如图3-4所示。 图 3-4 P3口位结构 虽然,P3口可以作为通用I/O使用,但在实际应用中,常常使用其第二功能,如表3-1所示。 口 线第二功能信号名称P3.0RxD串行数据接收P3.1TxD串行数据发送P3.2外部中断0请求P3.3外部中断1请求P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6外部RAM写选通P3.7外部RAM读选通为了适应P3口的需要,在口电路中增加了第二功能控制逻辑。第二功能信号有输入和输出两种情况。1输出的第二功能信号引脚。当作为通用的I/O口使用时,电路中的“第二输出功能线应保持高电平,与非门开通,以维持从锁存器到输
8、出端数据输出通路的畅通。当输出第二功能信号时,该锁存器应预先设置“1,是与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。2第二功能作为输入信号的引脚时,在口线的输入通路上增加了一个缓冲器,输入的信号就从这个缓冲器的输出端取得。而作为通用的I/O口线使用的数据输入,仍取自三态缓冲器的输出端。3P3口无论是作为输入口使用还是作为第二功能信号的输入使用,输出电路中的锁存器输出和“第二功能输出信号线都应保持高电平。3.1.3 MCS-51内部并行I/O口的应用MCS-51内部4个并行I/O口共有三种操作方式,即输出数据方式、读端口数据方式和读端口引脚方式。在数据输出方式下,CPU通过一
9、条数据操作指令就可以将输出数据写入P0P3的端口锁存器,然后通过输出驱动器送到端口引脚。因此,但凡端口操作指令都能到达从端口引脚上输出数据的目的。例如下面指令均可以在P0口输出数据:MOVP0,A;累加器A中的内容送入P0中ANLP0,A;P0口的内容和累加器中的内容进行逻辑与操作后送入P0口读端口数据方式是一种仅对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据并非端口引脚的数据。因此,CPU只要一条传送指令就可以将端口锁存器中的数据读入累加器A或内部RAM中。例如下面指令可以从P1口输入数据:MOVA,P1;P1锁存器中数据送入累加器A中MOV20H,P1;P1锁存器中数据送入内部
10、RAM20H单元中 读引脚方式可以从端口引脚上读入信息。在这种方式下,CPU首先必须使预读端口引脚所对应的锁存器设置“1,以便驱动器中的T2管截止,然后翻开输入三态缓冲器,使相应端口引脚上信号输入CPU内部数据总线。因此,用户在读引脚时必须连续使用两条指令。例如读P1口第四位引脚上的信号的程序为:MOVP1,#0FH;使P1口低四位锁存器置“1MOVA,P1;读P1口第四位引脚信号应当指出,MCS-51内部四个I/O口即可以字节寻址,也可以对它们位寻址,每一位即可以用作输入,也可以用作输出。 3.2 MCS-51单片机中断系统3.2.1 中断的定义3.2.2 中断源3.2.3 中断控制3.2.
11、4 中断优先级结构3.2.5 中断响应3.2.6 中断响应时间3.2.7 中断请求的撤除3.2.8 中断系统的初始化3.2.9 外部中断源的扩展3.2.1 中断的定义中断是指计算机暂停原程序执行转而为外部设备效劳即执行中断效劳程序,并在效劳完成后自动返回原程序继续执行的过程。中断由中断源产生,中断源在需要时可以向CPU提出“中断请求,中断请求通常是一种电信号,CPU一旦对这个信号进行检测和响应,便自动转入该中断源的终端效劳程序执行,并在执行完后自动返回原程序继续执行。中断又可以定义为CPU自动执行终端效劳程序并返回原程序继续执行的过程。引入中断的概念可以提高单片机的工作效率和处理数据的实时性。
12、1提高CPU的工作效率2提高处理数据的实时性3.2.2 中断源中断源是指引起中断原因的设备或部件,或发出中断请求信号的源,不同型号的单片机系统的中断源数量也不同,MCS-51系列单片机中的51单片机提供了5个中断源,均有两级优先级,通过4个中断控制器即IE、IP、TCON和SCON进行中断管理,其结构如图3-5所示。1外部设备中断源 2控制对象中断源3故障中断源4定时脉冲中断源图3-5 MCS-51中断系统结构具体地,MCS-51中断系统如图3-5所示,五个中断源是:1 来自P3.2引脚上的外部中断请求外中断0。2 来自P3.3引脚上的外部中断请求外中断1。3T0 片内定时器/计数器0溢出TF
13、0中断请求。4T1 片内定时器/计数器1溢出TF1中断请求。5串行口 片内串行口完成一帧发送或接收中断请求源TI或RI。每一个中断源都对应有一个中断请求标志位,它们设置在特殊功能存放器TCON和SCON中。当这些中断源请求中断时,分别由TCON和SCON中的相应位来锁存。3.2.3 中断控制MCS-51单片机设置了4个专用存放器用于中断控制,用户通过设置其状态来管理中断系统。1定时器控制存放器TCONTCON是定时器/计数器0和1T0,T1的控制存放器,它同时也用来锁存T0,T1的溢出中断请求源和外部中断请求源。TCON存放器中与中断有关的位如下所示。 TF1TF0IE1IT1IE0IT0 D
14、7 D6 D5 D4 D3 D2 D1 D0 2串行口控制存放器SCON串行口控制存放器SCON中的高6位用于串行口控制,其功能将在后续章节中介绍;低2位RI、TI用作串行口中断标志,如下所示。 SM0SM1SM2RENTB8RB8TIRI D7 D6 D5 D4 D3 D2 D1 D0 3中断允许控制存放器IE在MCS-51中断系统中,中断允许或禁止是由片内的中断允许存放器IEIE为特殊功能存放器控制的,IE中的各位功能如下:EAESET1EX1ET0EX0 D7 D6 D5 D4 D3 D2 D1 D0 4中断优先级控制存放器IPMCS-51中断系统提供两个中断优先级,对于每一个中断请求源
15、都可以编程为高优先级中断源或低优先级中断源,以便实现二级中断嵌套。中断优先级是由片内的中断优先级存放器IP特殊功能存放器控制的。IP存放器中各位的功能说明如下: PSPT1PX1PT0PX0D7 D6 D5 D4 D3 D2 D1 D0 3.2.4 中断优先级结构MCS-51中断系统具有两级优先级由IP存放器把各个中断源的优先级分为高优先级和低优先级,它们遵循以下两条根本规那么:1低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任何中断源所中断;2一种中断源不管是高优先级或低优先级一旦得到响应,与它同级的中断源不能再中断它。 当同时收到几个同一优先级的中断时,响应哪一个中断源取决
16、于内部查询顺序。其优先级排列如下:中断源外部中断0定时器/计数器0溢出外部中断1定时器/计数器1溢出串行口定时器/计数器2溢出同级内的优先权最高最低3.2.5 中断响应CPU在本条指令机器周期的末尾即S5P2状态时刻采样中断标志,并将其锁存在相应中断标志位中,在下一个机器周期即响应中断的第一个机器周期S6对采样到的中断进行查询。如果在前一个机器周期的S5P2有中断标志,那么在查询周期内便会查询到并按优先级上下进行中断处理,中断系统将控制程序转入相应的中断效劳程序。以下三个条件中任何一个都能封锁CPU对中断的响应:1CPU正在处理同级的或高一级的中断;2现行的机器周期不是当前所执行指令的最后一个
17、机器周期;3当前正在执行的指令是返回RETI指令或是对IE或IP存放器进行读/写的指令。 CPU响应中断时,先置相应的优先级激活触发器,封锁同级和低级的中断。然后根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断效劳程序。硬件调用中断效劳程序时,把程序计数器PC的内容压入堆栈但不能自动保存程序状态字PSW的内容,同时把被响应的中断效劳程序的入口地址装入PC中。五个中断源效劳程序的入口地址如表3-2所示: 中 断 源入口地址外部中断00003H定时器0溢出000BH外部中断10013H定时器1溢出001BH串行口中断0023H表3-2 MCS-51中断效劳程序入口地址 中断效
18、劳程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,把响应中断时所置位的优先级激活触发器清0,然后从堆栈中弹出两个字节内容断点地址装入程序计数器PC中,CPU就从原来被中断处重新执行被中断的程序。 3.2.6 中断响应时间外部中断 和 的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被查询电路查询,如果产生了一个中断请求,而且满足响应的条件,CPU响应中断,由硬件生成1条长调用指令转到相应的效劳程序入口。这条指令是双机器周期指令。因此,从中断请求有效到执行中断效劳程序的第1条指令的时间间隔至少需要3个完整的机器
19、周期。 如果中断请求被前面所述的三个条件之一所封锁,将需要更长的响应时间。假设一个同级的或高优先级的中断已经在进行,那么延长的等待时间显然取决于正在处理的中断效劳程序的长度,如果正在执行的一条指令还没有进行到最后一个周期,那么所延长的等待时间不会超过3个机器周期,这是因为MCS-51指令系统中最长的指令(MUL和DIV)也只有4个机器周期;假假设正在执行的是RETI指令或者是访问IE或IP指令,那么延长的等待时间不会超过5个机器周期(为完成正在执行的指令还需要1个周期,加上为完成下一条指令所需要的最长时间4个机器周期,如MUL和DIV指令)。 因此,在系统中只有一个中断源的情况下,响应时间总是
20、在38个机器周期 3.2.7 中断请求的撤除在中断请求被响应前,中断源发出的中断请求是由CPU锁存在特殊功能存放器TCON和SCON的相应中断标志位中的。一旦某个中断请求得到响应,CPU必须把它的相应中断标志位复位成“0状态。否那么,MCS-51就会因为中断标志位未能得到及时撤除而重复响应同一中断请求,这是绝对不能容许的。8031、8051和8751有5个中断源,但实际上分属于三种中断类型。这三种类型是:外部中断、定时器溢出中断和串行口中断。对于这三种中断类型的中断请求,其撤除方法是不相同的。现对它们分述如下: 1定时器溢出中断请求的撤除TF0和TF1是定时器溢出中断标志位见TCON,它们因定
21、时器溢出中断源的中断请求的输入而置位,因定时器溢出中断得到响应而自动复位成“0状态。因此,定时器溢出中断源的中断请求是自动撤除的,用户根本不必专门为它们撤除。 2串行口中断请求的撤除TI和RI是串行口中断的标志位见SCON,中断系统不能自动将它们撤除,这是因为MCS-51进入串行口中断效劳程序后常需要对它们进行检测,以测定串行口发生了接收中断还是发送中断。为防止CPU再次响应这类中断,用户应在中断效劳程序的适当位置处通过如下指令将它们撤除。CLR TI ;撤除发送中断CLR RI ;撤除接收中断假设采用字节型指令,那么也可采用如下指令:ANL SCON,#0FCH;撤除发送和接收中断 3外部中
22、断请求的撤除外部中断请求有二种触发方式;电平触发和负边沿触发。对于这两种不同的中断触发方式,MCS-51撤除它们的中断请求的方法是不相同的。 在负边沿触发方式下; 在电平触发方式下;INSVR:ANLP1,#0FEH ORLP1,#01H CLRIE0 END图3-6电平外部中断的撤除电路3.2.8 中断系统的初始化MCS-51中断系统功能,是可以通过上述特殊功能存放器统一管理的,中断系统初始化是指用户对这些特殊功能存放器中的各控制位进行赋值。 1、中断系统初始化中断系统初始化步骤如下:1开相应中断源的中断;2设定所用中断源的中断优先级;3假设为外部中断,那么应规定低电平还是负边沿的中断触发方
23、式。 采用位操作指令进行中断系统初始化是比较简单的,因为用户不必记住各控制位存放器中确实切位置,而各控制位名称是比较容易记忆的。 2【例3-1】请写出为低电平触发的中断系统初始化程序。解:1采用位操作指令SETBEASETBEX1 ; 开中断SETBPX1;令 为高优先级CLRIT1;令 为电平触发 2采用字节型指令MOVIE,#84H; 开中断ORLIP,#04H ;令 为高优先级ANLTCON,#0FBH;令 为电平触发2、外部中断设定的步骤:ORG03H13H ; 外部中断的起始地址JMPEXT;中断时跳至中断子程序EXTMOVIE, #10000001BH; 中断使能MOVIE, #1
24、0000100BH ; 中断使能MOV IP, #00000001BH; 中断优先MOV IP, #00000100BH ;中断优先MOV TCON,#00000000B;设定 为电平触发MOV TCON,#00000001B;设定 为负边沿触发MOV TCON,#00000000B;设定 为电平触发MOV TCON,#00000100B;设定 为负边沿触发3、TIMER0或TIMER1的中断请求 当计数溢出时会设定TFX=1,而对8051提出中断请求。TIMER0或TIMER1中断请求设定的步骤如下: 1定中断起始地址ORG 0BH ;TIMER0ORG 1BH ;TIMER12 定工作方式
25、MOV TMOD ,#XXXXXXXXB3设定计数值MOV THX,#XXXXMOV TLX,#XXXX4设定中断使能MOV IE,#1000X0X03.2.9 外部中断源的扩展MCS-51单片机只提供了两个外部中断请求输入端,而实际应用中,如果需要使用多个外部中断源时,就必须进行外部中断源的扩展。下面介绍两种常用的外部中断源扩展方法。1、定时器/计数器用于外部中断源的扩展MCS-51单片机有两个定时器/计数器,它们用作计数器使用时,技术输入端T1或T0发生负跳变将计数器加1.利用此特性,适当处理计数器初值,就可以将计数器输入端T1或T0作为外部中断源请求输入端,而定时器/计数器的溢出中断TF
26、1或TF0作为外部中断请求标志。例如,将定时器/计数器0设置为工作方式2,计数模式,计数初值为0FFH,且允许中断,其初始化程序如下: ORG0000HMOVTMOD,#06H;设置定时器0为工作方式2,计数模式MOVTH0,#0FFH;设置计数器初值MOVTL0,#0FFHSETBET0;允许定时器中断SETBEA;CPU开中断SETBTR0;启动定时器0 执行以上程序后,当定时器/计数器0计数输入T0的信号发生负跳变时,TL0加1,产生溢出,标志位TF0置1,向CPU发出中断请求,同时,TH0的值重新送入TL0中,这样,T0端相当于脉冲方式的外部中断请求输入端。注意:用此方法扩展外部中断源
27、是以占用内部定时中断为代价的。2、查询式扩展外部中断源当外部中断源较多时,可以采用查询式扩展外部中断源。将多个中断源通过硬件如或非门引入外部中断源输入端或,同时,又连到某I/O接口。这样,每个中断源都可能引起中断,并在中断效劳程序中通过软件查询的次序便可以确定是哪一个中断源正在进行中断请求,其查询的次序由中断源优先级决定,这样,可实现多个外部中断源的扩展。如图3-7所示,为5个外部中断源的连接电路,其中,设备14经过OC门与连接,并连接到P1.0P1.3上,均采用电平触发方式。设备0为最高级中断源,单独作为外部中断0的输入信号。外部中断1的终端效劳程序如下: INTR:PUSHPSW;程序状态
28、字PSW压入堆栈保护PUSHA;累加器内容压入堆栈保护JNBP1.0,DVT1;P1.0引脚为0,转设备1中断效劳程序JNBP1.1,DVT2;P1.1引脚为0,转设备2中断效劳程序JNBP1.2,DVT3;P1.2引脚为0,转设备3中断效劳程序JNBP1.3,DVT4;P1.3引脚为0,转设备4中断效劳程序INTR1:POPAPOPPSWRETIDVT1:AJMPINTR1;设备1中断效劳程序入口DVT2:;跳转到INTR1AJMPINTR1;设备2中断效劳程序入口DVT3:;跳转到INTR1AJMPINTR1;设备3中断效劳程序入口DVT4:;跳转到INTR1AJMPINTR1;设备4中断
29、效劳程序入口图3-7 查询式扩展外部中断源连接电路图3.3 MCS-51单片机定时器/计数器3.3.1 定时器/计数器的结构及工作原理3.3.2 控制定时器/计数器的存放器3.3.3 定时器/计数器的初始化3.3.3 定时器/计数器的工作方式3.3.1 定时器/计数器的结构及工作原理在实时控制系统中,常常需要有实时时钟以实现定时或延时控制,MCS-51单片机内部提供了两个16位可编程的定时器/计数器,即定时器T0和定时器T1,它们既可用作定时器方式,又可用作计数器方式。它们各由两个独立的8位存放器组成,利用T0和T1可以完成事件计数、测量时间间隔和脉冲宽度以及产生定时中断请求等功能。定时器/计
30、数器的根本部件是两个8位的计数器其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器拼装而成。可通过设置特殊功能存放器TMON中的控制位来选择T0或T1为定时器还是计数器。T0或T1状态字在相应的特殊功能存放器中,通过对控制存放器的设置,来选择定时器/计数器的工作模式。MCS-51单片机定时器/计数器的结构如图3-8所示。 图3-8 MCS-51单片机定时器/计数器结构图在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对计算机机器周期的计数器因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号
31、。故其频率为晶振频率的1/12。如果晶振频率为12MHZ,那么定时器每接收一个输入脉冲的时间为1us。当它用作对外部事件计数时,接相应的外部输入引脚T0P3.4或T1(P3.5)。在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1它在每个机器周期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,那么计数器加1。加1操作发生在检测到这种跳变后的一个机器周期中的S3P1,因此需要两个机器周期来识别一个从“1到“0的跳变,故最高计数频率为晶振频率的1/24。这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采
32、样一次。 3.3.2 控制定时器/计数器的存放器 定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能存放器TMOD和TCON的内容来决定。用指令改变TMOD或TCON的内容后,那么在下一条指令的第一个机器周期的S1P1时起作用。 1、定时器的方式存放器TMOD特殊功能存放器TMOD为定时器的方式控制存放器,存放器中每位的定义如图3-9所示。TMOD的地址为89H,其中高4位用于定时器1,低4位用于定时器0,其中M1,M0用来确定所选的工作方式,如表3-3所示。M1 M0方 式说 明0 0013位定时器/计数器0 1116位定时器/计数器1 02自动装入时间常数的8位定时器/计
33、数器1 13对T0分为两个8位独立计数器;对T1置方式3时停止工作(无中断重装8位计数器)表3-3 工作方式选择表 2、定时器控制存放器TCON 特殊功能存放器TCON用于控制定时器的操作及对定时器中断的控制,包括对定时器的启动、停止以及溢出时设定标志位和外部中断触发方式等。其地址为88H,位地址为88H8FH,控制字各位定义如图3-10所示。 图3-10 TCON存放器各位定义 3.3.3 定时器/计数器的初始化1、初始化步骤:1根据题目要求先给定时器方式存放器TMOD送一个方式控制字,以设定定时器/计数器的相应工作方式。2根据实际需要给定时器/计数器选送定时器初值或计数器初值,以确实需要定
34、时的时间和需要记数的初值。3根据需要给中断允许存放器IE选送中断控制字和给中断优先级存放器IP选送中断优先级字,以开放相应中断和设定中断优先级。4给定时器控制存放器TCON送命令字,以启动或禁止定时器/计数器的运行。一般使用指令SETBTRi来启动定时器/计数器。 2、计数器初值的计算定时器/计数器可用软件随时随地起动和关闭,起动时它就自动加“1记数,一直记到满,即全为“1,假设不停止,计数值从全“1变为全“0,同时将计数溢出位置“1并向CPU发出定时器溢出中断申请。对于各种不同的工作方式最大的定时时间和计数数不同。这里在使用中就会出现两个问题: 1要产生比定时器最大的定时时间还要小的时间和计
35、数器最大计数次数还要小的计数次数怎么办?2要产生比定时器最大的定时时间还要大的时间和计数器最大计数次数还要大的计数次数怎么办? 解决以上第一个问题只要给定时器/计数器一个非零初值,开定时器/计数器时,定时器/计数器不从0开始,而是从初值开始,这样就可得到比定时器/计数器最大的定时时间和计数次数还要小的时间和计数次数;解决第二个问题就要用到循环程序了,循环几次就相当于乘几。例如要产生1秒的定时你可先用定时器产生50MS的定时,再循环20次就行了,因为1S=1000MS,也可用其它的组合。有时也可采用中断来实现。 我们把计数器从初值开始作加1计数到计满为全1所需要的计数值设定为C和计数初值设定为D
36、,由此便可得到如下的计算通式:D=M-C1式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。在定时器模式下,计数器由单片机脉冲经12分频后计数。因此,定时器定时时间T的计算公式为:T=TMTC12/fOSC s2式中,TM为计数器从初值开始作加1计数到计满为全1所需要的时间,TM为模值,和定时器的工作方式有关;fOSC是单片机晶体振荡器的频率,TC为定时器的定时初值。在式2中,假设设TC=0,那么定时器定时时间为最大初值为0,计数从全0到全1,溢出后又为全0。由于M的值和定时器工作方式有关,因此不同工作方式下定时器的最大定时
37、时间也不一样。例如:假设设单片机主脉冲晶体振荡器频率fOSC为12MHz,那么最大定时时间为:方式0时 TMmax=2131S=8.192ms方式1时 TMmax=216 1s=65.536ms方式2和3时 TMmax=28 1s=0.256ms【例3-2】假设单片机时钟频率fOSC为12MHz,请计算定时2ms所需的定时器初值。解:由于定时器工作在方式2和方式3下时的最大定时时间只有0.256ms,因此要想获得2ms的定时时间定时器必须工作在方式0或方式1。1假设采用方式0,那么根据式2可得定时器初值为:TC=213-2MS/1s=6129=1830H注意:这不是定时器工作在方式0时的初值,
38、因定时器工作在方式0时是13位,高字节8位,低字节5位,所以还要进行适当的变换,因为:1830H=0001 1000 0011 0000按13位重新组合成00011000001 10000 这组数就可拼成:1100 0001 0001 0000这样就得到定时器工作在方式0时的初值C110H即:TH0应装C1H;TL0应装10H高3位为02假设采取方式1,那么有:TC=216-2MS/1s=63536=F830H 即:TH0应装F8H;TL0应装30H【例3-3】设T1作定时器,以方式1工作,定时时间为10MS;T0作计数器,以方式2工作,外界发生一次事件即溢出。试给出定时器的初始化程序。解:T
39、1的时间常数为:216-TC2s=10msTC=EC78H参考初始化程序如下:MOV TMOD,#16H ;T1定时方式1,T0计数方式2,即置TMOD存放器 的内容为00010110MOVTL0,#0FFH;T0时间常数送TL0MOVTH0,#0FFH;T0时间常数送TH0MOVTL1,#78H;T1时间常数低8位送TL1MOVTH1,#0ECH;T1时间常数高8位送TH1SETB TR0;置TR0为1允许T0启动计数SETB TR1;置TR1为1允许T1启动计数【例3-4】设定时器T0,以方式1工作,试编写一个延时1秒的子程序。解:假设主频频率为6MHZ可求得T0的最大定时时间为: TMm
40、ax=216 2s=131.072ms用定时器获得100ms的定时时间再加10次循环得到1秒的延时,可算得100ms定时的定时初值:216-TC2s=100ms=100000sTC=216-50000=15536TC=3CB0H 参考程序如下:ORG0000HMOVTMOD,#01HMOVR7, #10TIME:MOVTL0, #0B0HMOVTH0, #3CHSETBTR1LOOP1:JBCTF0, LOOP2JMPLOOP1LOOP2:DJNZ R7, TIMERETEND3.3.3 定时器/计数器的工作方式MCS-51单片机的定时器/计数器共有四种工作模式,即方式0、方式1、方式2和方式
41、3。定时器T0和定时器T1的工作原理根本相同。各种方式的选择是通过TMOD的M1、M0两位进行编码来实现的。 1、方式01逻辑电路图当TMOD中的M1M0位为00时,定时器/计数器就以方式0进行工作。图3-11是方式0的逻辑电路图。方式0是13位计数器结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成,TL0的高3位不用。 图3-11 定时器/计数器方式0的逻辑电路图 计数器的启动和停止主要由门控位GATE和运行控制位TR0来控制,当GATE=0时,计数器运行条件只取决于TR0;当GATE=1时,那么由TR0和 共同决定。 1由TR0控制如图3-11所示,假设要运行控制位TR0能够控
42、制定时器/计数器的运行,那么其或门的输出一定是1,这就意味着要设置GATE=0或 =1,因此,在单片机的定时或计数应用中,要注意定时器方式存放器TMOD的GATE位一定要设置为0。2由 控制 当GATE=0且TR0=1时,定时器/计数器的或门只受 控制,与门也可以间接接受 控制,于是外部中断信号电平通过引脚P3.2直接启动或关闭计数通道,这种控制方法常用来测量外部信号的脉冲宽度。 2定时和计数的应用 在方式0下,当为计数方式工作时,计数值的范围是18192213;当为定时工作方式时,定时时间的计算公式为:T=213-计数初值晶振周期123假设晶振频率为6MHz,那么其最小定时时间为:Tmin=
43、213-213-11/610-612=210-6=2s最大定时间为:Tmax=213-01/610-612=210-6=16384s 【例3-5】设单片机晶振频率fosc=6MHz,使用定时器1以方式0产生500s的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。解:计算计数初值:产生500s的等宽正方波脉冲,那么需要P1.0端口以250s为周期交替输出上下电平,为此,定时时间应为250s。使用晶振频率fosc=6MHz,那么一个机器周期为2s。方式0为13位计数结构。设待求的计数初值为X,根据公式3,那么有:213-X210-6=25010-6解得,这样得到T1的高8位为0FCH,低5
44、位为03H,其中高8位放入TH1,低5位放入TL1。相关控制存放器的设定为:TMOD各位设定:为将T1的工作方式设定为方式0,那么M1M0=00;为实现定时功能,设定;为实现T1的运行控制,设定GATE=0;T0不用,一般来说不需要改变其原始设置,为此,在程序设计时,应加以屏蔽。TCON地址:88H是可以位寻址的,故采用位寻址方式,设置TR1=1来控制启动定时器T1;设置TR1=0来停止定时器T1。IE的设定:此题要求采用查询方式,当定时时间到定时器溢出标志位TF1置1时,不允许产生中断,故应禁止中断,即置IE=00H。 参考程序如下:ANLTMOD,#0FH;设置T1为定时工作方式0ORLT
45、MOD,#00HMOVTH1, #0FCH;设置计数初值MOVTL1, #03HMOVIE, #00H;禁止中断SETB TR1;启动定时器LOOP:JBC TF1,LOOP1;查询计数溢出AJMP LOOPLOOP1:MOVTH1, #0FCH;重新设置计数初值MOVTL1, #03HCPLP1.0;输出取反AJMP LOOP;重复循环END2、方式1 当TMOD中的M1M0=01H时,定时器/计数器以方式1进行工作。方式1是16位计数结构的工作方式,计数器由TH0全部的8位和TL0全部8位构成,其逻辑电路和工作方式与方式0相同,唯一区别的是方式1的计数器长度为16位。图3-12给出了定时器
46、/计数器以方式1工作的逻辑电路图。MCS-51单片机之所以重复设置几乎完全一样的方式0和方式1,主要是出于与MCS-48单片机兼容的考虑。图3-12 定时器/计数器方式1的逻辑电路图 当定时器/计数器在方式1下做计数器使用时,其计数范围:1655360216。当定时器/计数器在方式1下做定时器使用时,其定时时间计算公式为:T=216-计数初值晶振周期124假设晶振频率为6MHz,那么其最小定时时间为:Tmin=216-216-11/610-612=210-6=2s最大定时间为:Tmax=216-01/610-612=13107210-6=131072s【例3-6】设单片机晶振频率fosc=6M
47、Hz,使用定时器0以方式1产生500s的等宽正方波连续脉冲,并由P1.0输出,试编写其相关程序。解:解题步骤与例3.5类似。计算计数初值:216-X1/610-612=25010-6解得:X=65411D=0FF83H,那么有TH0=0FFH,TL0=83H设置相关控制存放器:设置TMOD为XXXX0001BIE和TCON均采用为寻址方式。参考程序如下:ORG0000HAJMP MAINORG 000BHAJMP INTPORG 0100HMAIN:ANLTMOD,#0F0H;设置定时器T0工作方式1ORLTMOD,#01H;不影响定时器T1的工作MOVTH0,#0FFH;设置计数初值MOVT
48、L0,#83HSETBEA;CPU开中断SETBET0;定时器T0开中断SETBTR0;启动定时器T0SJMP$;等待中断INTP:MOVTH0,#0FFH;重新设置计数初值MOVTL0,#83HCPLP1.0;输出取反RETI;中断返回END 3、方式2方式0和方式1的特点是计数溢出后,计数回“0,而不能自动重装初值,因此,循环定时或循环计数应用时就存在反复设置计数初值的问题,不但影响定时精度,同时也增加了程序设计的复杂程度。方式2就是针对这类问题而设置的,它具有自动重装计数初值的功能。当TMOD中的M1M0=10H时,定时器/计数器就以方式2进行工作。方式2中将16位的计数器拆成了2个8位
49、计数器,低8位TL用作计数器;高8位TH用作预置计数器,初始化时将计数初值分别装入TL和TH中。当计数溢出时,由预置计数器自动给计数器TL重新装入初值。方式2的逻辑电路图如图3-13所示。 图3-13 定时器/计数器方式2的逻辑电路图 初始化时,8位计数初值同事装入TL0和TH0中,TL0计数溢出时,置位TF0,同时将保存在预置计数器TH0中的计数初值自动装入TL0,然后,TL0重新计数,如此循环重复工作。这不但省去了用户程序中的重装初值指令,而且也有利于提高定时精度。但这种工作方式是8位计数结构,计数值有限,最大只能到255。方式2的自动重装功能非常适用于循环定时或循环计数应用,如用于固定宽
50、度的脉冲和用作串行数据通信的波特率发生器。【例3-7】设单片机晶振频率fosc=6MHz,使用定时器0以方式2产生100s的定时,在P1.0端口输出周期为200s的连续正方波脉冲,试编写其相关程序。解:解题步骤与例3.5类似。计算计数初值:28-X1/610-612=10010-6解得:X=206D=0CEH。设置相关控制存放器:设置TMOD为:M1M0=10H;为实现定时功能,设定;为允许T0能通过TR0进行运行控制,设置GATE=0;T1不用,一般来说不需要改变其原始设置,为此,在程序设计时,应加以屏蔽。IE和TCON均采用为寻址方式,即分别相应位置“1或清零 参考程序如下以查询方式:AN
51、LTMOD,#0FH;设置T0为定时工作方式2ORLTMOD,#02HMOVTH0, #0CEH;设置计数初值MOVTL0, #0CEHMOVIE, #00H;禁止中断SETB TR0;启动定时器LOOP:JBC TF0,LOOP1;查询计数溢出AJMP LOOPLOOP1:CPL P1.0;输出方波,初值自动装入AJMP LOOP;重复循环END参考程序如下以中断方式:ANLTMOD,#0FH;设置T0为定时工作方式2ORLTMOD,#02HMOVTH0,#0CEH;设置计数初值MOVTL0,#0CEHSETBEA;CPU开中断SETBET0;定时器T0开中断SETBTR0;启动定时器SJM
52、P$;中断效劳程序CPLP1.0;输出取反RETI;中断返回4、方式3方式3是为了增加一个附加的8位定时器/计数器而提供的,使得MCS-51单片机具有3个定时器/计数器。方式3只适用于定时器/计数器T0,定时器/计数器T1处于方式3时,相当于TR1=0,停止计数。与前三种工作方式不同,定时器/计数器在方式3下工作对T1和T0的设置和使用是不同的,现分别介绍。1在工作方式3下工作的定时器/计数器T0当TMOD中的M1M0=11H时,定时器/计数器T0工作在方式3下,此时,定时器/计数器被拆成了两个独立的8位TL0和TH0,其中,TL0即可以用作计数器,又可以用作定时器,T0的各控制位和引脚信号全
53、部归它使用,其功能和运行方式与方式0和方式1完全相同,其逻辑电路结构也极为相似。方式3下的逻辑电路图如图3-14a所示。定时器/计数器T0的高8位TH0只能用作简单的定时器使用。由于定时器/计数器T0的控制位已经被TL0占用,因此,只好借用定时器/计数器T1的控制位TR1和TF1,即以计数溢出置位TF1,而定时的启动和停止那么由TR1的状态来控制,如图3-14b所示。由于TL0既能作为定时器使用,又能作为计数器使用,而TH0只能作为定时器使用,因此,工作方式3下,定时器/计数器T0构成两个定时器或一个定时器一个计数器。 图3-14 定时器/计数器方式3的逻辑电路图 2在定时器/计数器T0设置为
54、工作方式3时的定时器/计数器T1这里,我们只讨论定时器/计数器T0设置为工作方式3时,定时器/计数器T1的使用情况。因为,T0工作在方式3时,已经借用了T1的运行控制位TR1和计数溢出标志位TF1,所以,T1不能工作于方式3,只能工作在方式0、方式1或方式2,且在T0已工作在方式3下时,T1通常用作串行口的波特率发生器,以确定串行通信的速率。因为已经没有计数溢出标志位TF1可供使用,因此,只能将计数溢出直接送给串行口,如图3-15所示。当T0作为波特率发生器使用时,只需要设置好工作方式,便可以自动运行,如要停止工作,只需要送入一个将其设置为方式3的方式控制字就可以了。 图3-15 定时器/计数
55、器T0在方式3时的T1使用 3.4 MCS-51单片机串行通信串行通信是一种能将二进制数据按位传送的通信,故它所需要传输线条数极少,特别适用于分级、分层和分布式控制系统以及远程通信。按照串行数据的同步方式,串行通信可以分为同步通信和异步通信两类,同步通信是按照软件识别同步字符来实现数据的发送与接收;异步通信是一种利用字符的再同步计数的通信方式。 3.4.1 串行通信1、异步通信在异步通信中,数据通常以字符或字节为单位组成字符帧传送。字符帧由发送端一帧一帧地发送。发送端和接收端可以由各自的时钟来控制数据数据的发送和接收,这两个时钟源彼此独立,互不同步。异步通信通过规定字符帧格式来协调发送端和接收
56、端的数据发送和接收。正常情况下,发送线为高电平即逻辑“1,每当接收端检测到传输线上发送过来的低电平即逻辑“0就知道发送端已经开始发送数据;当接收端接收到字符帧中的停止位时,就确定数据发送结束。在异步通信中,字符帧格式和波特率是两个重要指标,由用户根据实际情况选定。1字符帧字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位四个局部组成。如图3-16所示。 图3-16 异步通信的字符帧格式2波特率波特率定义为每一秒钟传送二进制数码的位数,也成比特率,其单位是bps,即位/秒。波特率是串行通信的重要指标,用于表征数据传输的速度。波特率越高,说明数据传输速度越快,但和字符的实际传输速率有所不同。字
57、符的实际传输速率是指每秒钟内所传字符帧的帧数,和字符帧格式有关。在实际应用中,一定要注意串行通信系统中字符帧的格式。字符帧的每一位传输时间定义为波特率的倒数,例如,波特率为1200bps的通信系统,其每一位数据的传输时间Td=1/1200=0.833ms。波特率还和信道的频带有关,波特率越高,信道的频带就越宽。因此,波特率也是衡量通信信道频宽的重要指标。波特率不同于发送时钟和接收时钟,常常是时钟频率的1/16或1/64. 2、同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧和异步通信中的字符帧不同,通常包含有假设干个数据字符,如图3-17所示。图3-17
58、同步通信中的字符帧格式 在同步通信中,同步字符可采用统一的标准格式,也可以由用户在传送之前相互约定好。在单同步通信字符帧结构中,如图3-17a所示,同步字符通常采用ACSII码中规定的SYN即16H代码;在双同步通信字符帧结构中,同步字符一般采用国际通用标准代码EB90H。同步通信的数据传输速率较高,通常可到达56Mbps或更高,同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除了应和发送波特率保持一致外,还要求将其同时传送到接收端。 3.4.2 MCS-51单片机串行接口MCS-51单片机内部的串行接口是全双工的,即它能同时发送和接收数据。发送缓冲器只能写入不能读出,接收缓冲器
59、只能读出不能写入。串行口还有接收缓冲作用,即从接收存放器中读出前一个已收到的字节之前就能开始接收第二字节。两个串行口数据缓冲器实际上是两个存放器通过特殊功能存放器SBUF来访问。写入SBUF的数据储存在发送缓冲器,用于串行发送;从SBUF读出的数据来自接收缓冲器。两个缓冲器共用一个地址99H特殊功能存放器SBUF的地址。1、串行口结构MCS-51单片机具有一个可编程的全双工串行通信接口,它可用作UART,也可以用作同步移位存放器,其数据帧格式可以有8位、10位或11位,并能对波特率进行设置,使用方便灵活。MCS-51单片机通过串行数据接收端引脚RXDP3.0和串行数据发送端TXDP3.1与外界
60、进行通信。其内部结构如图3-18所示。 图3-18 MCS-51单片机串行口内部结构 2、串行口控制存放器控制串行口的存放器有两个特殊功能存放器:即串行口控制存放器SCON和电源控制存放器PCON。1串行口控制存放器SCON特殊功能存放器SCON用于定义串行口的操作方式和控制它的某些功能。其字节地址为98H。存放器中各位内容如下: 2PCON中的波特率选择位PCON是一个特殊功能存放器,没有位寻址功能,字节地址为87H。其格式如下: 次序D7D6D5D4D3D2D1D0位符号SMOD/GF1GF0PDID其中:D7位SMOD为波特率选择位。其他均无意义。复位时的SMOD值为0。可用MOV PC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26《手术台就是阵地》教学设计-2024-2025学年统编版语文三年级上册
- 12《低碳生活每一天.》(教学设计)2024-2025学年统编版道德与法治四年级上册
- 2024年高中化学 第3章 自然界中的元素 第1节 碳的多样性 第2课时 碳及其化合物间的转化教学实录 鲁科版必修1
- 2024-2025学年高中化学 第4章 保护生存环境 第3节 垃圾资源化教学实录 新人教版选修1
- 3.2 整式的加减(教学设计)2024-2025学年北师大版数学七年级上册
- 2024年五年级数学上册 七 解决问题的策略教学实录 苏教版
- 某装饰工程施工组织管理体系概述
- 2023七年级数学下册 第二章 相交线与平行线 4 用尺规作角教学实录 (新版)北师大版
- 大班美术活动《花儿朵朵》教学设计
- 9 生活离不开他们 第一课时 (教学设计)-部编版道德与法治四年级下册
- 项目四任务1:认识毫米波雷达(课件)
- 非正常接发列车作业标准
- 体育室内课-体育大富翁
- 180万吨柴油加氢装置可行性研究报告
- DLT 5285-2018 输变电工程架空导线(800mm以下)及地线液压压接工艺规程
- 2024年国家保安员资格考试题库及参考答案(完整版)
- DL-T692-2018电力行业紧急救护技术规范
- 消防员训练伤的预防及恢复课件
- GB/T 43860.1220-2024触摸和交互显示第12-20部分:触摸显示测试方法多点触摸性能
- 医院感染防控基本知识2
- 泌尿外科专业英语词汇 总结
评论
0/150
提交评论