第四章80C51基本功能单元结构与操作原理.docx

上传人:b****5 文档编号:11570212 上传时间:2023-03-19 格式:DOCX 页数:15 大小:47.24KB
下载 相关 举报
第四章80C51基本功能单元结构与操作原理.docx_第1页
第1页 / 共15页
第四章80C51基本功能单元结构与操作原理.docx_第2页
第2页 / 共15页
第四章80C51基本功能单元结构与操作原理.docx_第3页
第3页 / 共15页
第四章80C51基本功能单元结构与操作原理.docx_第4页
第4页 / 共15页
第四章80C51基本功能单元结构与操作原理.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第四章80C51基本功能单元结构与操作原理.docx

《第四章80C51基本功能单元结构与操作原理.docx》由会员分享,可在线阅读,更多相关《第四章80C51基本功能单元结构与操作原理.docx(15页珍藏版)》请在冰豆网上搜索。

第四章80C51基本功能单元结构与操作原理.docx

第四章80C51基本功能单元结构与操作原理

第四章80C51基本功能单元结构与操作原理

4·180C51定时器/计数器方式0的13往/计数器初值如何计算?

有方式1的16位/计数为什么还要13位的计数方式?

答:

在80C51定时器/计数器中,有方式0和方式1两种方式:

方式0为13位计数方式,相当

于有5位预分频的8位计数方式;方式1为16位计数方式。

方式0工作状态的计数器结构,保留了80C51前身MCS一48单片机32分频的8位计数方式,由TLi的低5位和THi的8位组成13位计数器。

计数初值设置不直观。

方式1为16位计数方式,与方式0的区别在于方式1为16位计数,并且是置位方式。

而方式0为复位方式(即单片机复位后为方式0状态)。

80C51定时器川十数器的方式0的13位计数器是按5位预分频定标器、8位计数器设置的。

在80C5lTHi、TLi两个8位计数器构成的13位计数中,TLi为低5位,THi为高8位。

这种计数器的配置其计数初值不是按13位减法所得的数据值。

例如,要实现x的定时要求,系统时钟为fosc,定时器计数脉冲周期为12//fosc,按13位减法,13位加计数器的计数初值m为

x×fosc

m=213一

12

设x=1ms,fosc=12MHz,则

l×l0-3×l2×106

m=213一=7192=lCl8H

12

上述m是按13位计数(高5位,低8位)的减法求得的计数器初值;而80C51定时器方式

0的13位计数器是按高8位、低5位安排的,即要把郴按高8位、低5位组合成计数初值:

lCl8H=l110000011000B=E0l8H

计数初值为E0l8H。

4·2如何使用外部引脚信号来挂制定时器/计数的启、棒?

答:

定时器/计数器方式寄存器TMOD申,GATE是控制方式选择位。

当GATE=0时,计数器由内部TRi位控制启、停;当GATE=l时,计数器由TRi和外部

引脚INTi控制启、停。

为了能通过INT0引脚来控制定时器/计数器T0的启、停,必须在方式寄存器TMOD中

将GATE置l:

MOVTMOD,#0DH;控制字为0000110lB

定时器/十数器可由外部引脚INTi控制启、停,利用这一特性,可对外部脉冲信号宽度进行测量。

通过T1对外部脉冲信号正脉冲宽度进行测量。

外部脉冲频率信号从引脚INT1输入,如

题图4–1所示。

正脉冲信号宽度为TW。

设计电路

由外部引脚INT1控制T1计数器定时计数的启动、停止,高电平时启动计数,低电平时停止计数。

INT1高电平时,计数器中记得的数值m为12分频的时钟频率fosc的周期数。

脉冲宽度TW则为

TW=(12/fosc)×m

定时器/计数器的控制字

选定T1、方式1、外部INT1控制启停(GATE、1)、定时器方式(C/T=0),故TMOD=1001××××B。

令TMOD=90H

测量Tw子程序STW清单:

STW:

MOVTMOD,#90H;设Tl控制字

MOVTLl,#00H;计数器清零

MOVTHl,#00H

SETBP3.3;置P3.3为输入方式

STLP0:

MOVC,P3.3;读INTl引脚入CY

JCSTLP0;等待外部引脚变低电平

SETBTR1;置INTl启、停允许

STLP1:

MOVC,P3.3;查询INTl状态是否变高电平

JNCSTLPl;末变高等待

STLP2:

MOVC,P3.3;查询INTl是否变低

JCSTLP2;未变低,等待

CLRTR1;变低,测量结束,关闭TRl

MOV31H,THl;计数值彻放入内存31H、30H单元

MOV30H,TLl

RET

4·3计数器的"飞读"是什么概念?

为什么要"飞读"?

答:

80C51计数器不具有捕获功能,不能在计数器计数瞬间捕捉住THi、TLi的计数值。

在计数器计数期间,如果读第1个8位计数器,第2个计数器还在计数,恰逢溢出,再读第2个8位计数器时,就会出现粗大计数误差。

这就要通过计数器的"飞读"来解决,即先读THi值,后读TLi值,然后再重复读取THi值。

若两次THi值相同,读得的内容正确;若不相同,则再重复上述过程。

下面是对T0计数的"飞读"子程序RDT0。

读取的计数值人R0、Rl。

RDT0:

MOVA,TH0;读TH0入A

MOVRl,TL0;读TL0入Rl

CJNEA,TH0,RDT0;比较两次读得的(TH0),不同时再读一次

MOVR0,A

RET

4·4方式3下,定时器/计数器可构成哪些工作状态?

为什么会有这些状态?

答:

定时器/计数器的方式3是一个较为特殊的工作方式。

在这样情况下,Tl将TFl、TRl资

源出借给T0使用。

因此,在方式3T,T0可以构成两个独立的计数器结构,如题图4-2(a)

和题图4-2(b)所示。

TL0构成一个完整的8位定时器/计数器,而TH0则是一个仅能对fosc/12脉冲计数的8位定时器。

题图4-2

在方式3下,Tl只能作波特率发生器使用。

这时,Tl可以设置成方式0~方式2,用在任何不需要中断控制的场合。

但是,常设置成方式2的自动重装状态。

4·5什么是定时器/计数器溢出中断同步问题?

在什么情况下要考虑这一问题?

解决这一问题的原理是什么?

答:

定时器/计数器溢出中断会产生不同步司题。

不同步是指在同样的计数初值下,定时器/

计数器循环定时操作时,会出相邻两次计数器溢出中断响应的差异。

一出现计数器溢出中断

请求时,中断响应时间会因为不同的情况(如有无其他中断请求,与正在执行什么指令有关)

下,时间在3~8个机器周期内变化。

要求循环定时精度较高时,可采取以下修正措施:

在定时器/计数器溢出中断响应后立即

停止计数器计数,并读出计数器中的值。

由于计数器溢出后又自动从零开始加计数,故这时计数器中读出的数为中断响应延迟的机器周期数。

将这一数值与中断处理中从停止计数到计数启动间经历的机器周期数,一并加人到计数初值中,即得到修正。

这样,可保证相邻两次中断响应间隔不会超过一个机器周期。

例如,设T1方式1工作,fosc=l2MHz,循环定时周期为lms,计数初值为

12×106×l×l0-3

m=216一=64536=FCl8H

考虑到下述中断响应重装计数初值的停止计数(CLRTRl)和重新启动计数(SETBTRl)

间指令运行时间为7个机器周期,计数初值FCl8H应加上7个计数值,为FClFH,而且在下述重新装载计数初值时应再加上从溢出到中断响应停止计数时的计数初值。

下面是中断服务中计数初值修正的程序段。

指令周期CLREA;禁止CPU中断

CLRTRl;停止Tl计数

1MOVA,#1FH;指令运行补偿后的低位初值入A

1ADDA,TL1;低位初值响应误差补偿

1MOVA,#0FCH;指令运行补偿后初值高位入A

1MOVA,THl;计数初值高位计算

1ADDCTHl,A;计数初值高位装入

1MOVTLl,A

1SETBTR1

7;

4·680C51中断系统中有几个中断源?

定请写出这些中断源的优先级的顺序以及这些中新的入口地址。

答:

(1)80C51中断系统中的中断源

80C5l的中断系统中有五个中断源,其中有两个外部中断源,三个内部中断源。

外部中断源为INT0、INTl,可选择低电平有效或下降沿有效;内部中断源为T0、T1隘出中断,串行口发送/接收共用一个中断源。

(2)中断源的优先级的顺序及中断的入口地址

每个中断源都可选择高、低两个优先级。

80C51中的中断优先级与中断入口地址示于题表4–1中。

当低优先级组中任何一个中断源被设定为高优先级时,其优先级将比低优先级组中任何一个中断源的优先级要高。

4·7在外部中断中,有几种中断触发方式?

去何选择中断源的触发方式?

答:

在外部中断源中,有两种中断触发方式可选择:

低电平有效或下降沿有效。

定时器控制寄存器(TCON)中,TT0、TTl为外部中断INT0、INTl引脚电平触发方式选择位。

置"0"时,选择低电平触发;置"1"时,选择下降沿触发。

4·8请叙述中断响应的CPU操作过程,为什么说中新操作是一个CPU的微查询过程?

答:

在中断响应中,CPU要完成以下自主操作过程:

置位相应的优先级状态触发器,以标明所响应中断的优先级别;

中断源标志清零(TI、RI除外);

中断断点地址装人堆栈保护(不保护PSW);

中断入口地址装人PC,以便便程序转到中断入口地址处。

在计算机内部,中断表现为CPU的微查询操作。

80C51单片机中,CPU在每个机器周期的S6状态中,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的S1状态中,响应最高级中断请求。

但是有以下情况者除外:

CPU正在处理相同或更高优先级中断;

多机器周期指令中,还未执行到最后一个机器周期;

正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时,要延后一条

指令。

4·9在中断请求有效并开中断状况下,能否保证立即响应中断?

有什么条件?

答:

在中断请求有效并开中断状况下,并不能保证立即响应中断。

这是因为,在计算机内部,

中断表现为CPU的微查询操作。

80C51单片机中,CPU在每个机器周期的S6状态中,查询

中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的S1状态中,响应最高级中断请求。

在以下情况下,还需要有另外的等待:

CPU正在处理相同或更高优先级中断;

多机器周期指令申,还未执行到最后一个机器周期;

正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时要延后一条

指令。

4·10中新响应中,CPU应完成哪些自主操作?

这些操作状态对程序运行有什么影响?

答:

(1)中断响应中的CPU自主操作

中断响应的自主操作是指中断响应过程中,单片机中CPU不依赖指令控制的内部操作

行为。

响应中断时CPU的自主操作过程:

●置位相应的优先级状态触发器,以标明所响应中断的优先级别;

●中断源标志清零(TI、RI除外);

●中断断点地址装入堆栈保护(不保护PSW);

●中断入口地址装入PC,以便便程序转到中断入口地址处。

中断返回时CPU的自主操作过程:

CPU在执行到中断返回指令RETI时,产生以下自主操作:

●优先级状态触发器清零;

●断点地址送入PC,以便便程序返回到断点处。

(2)自主操作状态对程序运行的影晌

响应中断时的自主操作,使CPU暂停当前程序的运行,而转入中断服务程序去执行。

中断返回时的自主操作,使CPU结束中断服务程序的执行,返回到原来的程序继续

执行。

4·1180C51串行接口UART发送/接收的操作界面是什么?

发送/接收完毕的标志往为什么设计成指令清零而不是自动清零?

答:

(1)80C51串行接口UART发送/接收的操作界面

80C51串行接口UART发送/接收的通信操作界面,体现为累加器A与发送/接收缓冲

器SBUF间的数据传送操作。

当对串行口完成初始化操作后,要发送数据时,待发送的数据由A送入SBUF中,在发送控制器控制下组成帧结构,并且自动以串行方式发送到TXD端,在发送完毕后置位TI。

如果要继续发送,在指令中将TI清零;接收数据时,置位接收允许位才开始串行接收操作,在接收控制器控制下,通过移位寄存器将串行数据送入SBUF中。

(2)发送/接收完毕的标志位清零

发送/接收完毕的标志位TI/RI都是在发送/接收到停止位时硬件置位并请求中断的。

为了便于对发送/接收的查询,这两个标志位是不会自动清除的,必须用指令清零。

4·12串行口控制寄存器SCON中TB8、RB8起什么作用?

在什么方式下使用?

答:

串行口控制寄存器SCON中TB8为发送数据的第9位,RB8为接收数据的第9位。

它们的作用有两个方面:

当80C51使用带奇偶校验位的8位数据通信时,使用方式2和方式3的9位数据通

信,发送和接收的第9位为奇偶校验位。

即在发送时通过指令将PSW(PSW·0\中的奇偶校验位P送入TB8中,与数据组成一帧一并发送;当接收方接收到一帧数据后,将数据和R8中的奇偶校验位分离,将接收的数据送人累加器A,并将PSW中的奇偶校验位P与传送过来的TB8相比较,若不同,则传送出错。

多机通信(方式2、方式3)中,TB8标明主机发送的是地址还是数据,TB8=0为数据,

TB8=1为地址。

此时,TB8由指令置位或清零。

串行口控制寄存器SCON中RB8是多机通信(方式2、方式3)中,用来存放接收到的第9位数据的,用以表明所接收的数据的特征。

可以看出,TB8、RB8只有在串行数据通信的方式2、方式3中使用。

4·13请简单叙述多机通信原理,在多机通信中TB8/RB8、SM2起什么作用?

答:

多机通信时,充分利用了单片机内的多机通信控制位SM2。

当从机SM2=1时,从机只接收主机发出的地址帧(第9位,TB8/RB8=1),对数据帧(第

9位,TB8/RB8=0)不予理睬;而当SM2=0时,可以接收主机发送的所有信息。

多机通信过程如下:

将所有从机的SM2位置1,即所有从机都处于只接收地址帧的状态;

主机发送一帧地址信息,其中8位地址,第9位为1表示是地址帧;

所有从机接收到地址帧后,进行中断处理,把接收到的地址与自身地址相比较,地址相符时置SM2=0,不相符时维持SM2=1;

由于被寻址的从机已使SM2=0,可以接收主机随后发送来的信息,实现主机与被寻址从机的双机通信;

被寻址的从机通信完毕后,置SM2=1,恢复多机系统原有状态。

4·14什么是串行接口的异步数据传输和同步数据传输?

80C51UART中哪些方式是异步传输?

哪些方式是同步传输?

答:

根据时钟控制数据发送和接收的方法,串行接口的串行数据传输分成两种:

异步数据传输和同步数据传输。

串行数据传输方法的示意图见题图4-3。

(1)异步传输

在数据传输过程中,取消同步通信中的同步时钟,就变成异步传输。

对于异步串行传输,

发送器和接收器两端分别使用自己的时钟,不再共用同一个时钟。

要求两个时钟的频率大致

相同,能在短时间内保持同步即可。

异步数据发送器先送出一个初始定时位(称为起始位),后面跟着具有一定格式的串行数据位和停止位。

异步数据接收器首先接收起始位,同步它的时钟,使之接近于发送器的频率,然后使用同步时钟接收位数据串。

在接收过程中,接收时钟和发送时钟的匹配会有偏差,但这种偏差不会影响短时间内的位数据串接收的正确性。

停止位表示数据串的结束,它通常被接收器用来判别接收过程中的某些错误,例如串行数据的字节边界错等。

在异步传输中,传输数据的帧格式如题图4-4所示。

题图4-3

题图4-4

在帧格式中,一个字符由四个部分组成;起始位、数据位、奇偶校验位和停止位。

首先是一个起始位"0",然后是5~8位数据(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位"1"。

起始位"0"信号只占用一位,朋来通知接收设备-个待接收的字符开始到来。

线路不传送

字符时应保持为"1"。

接收端不断检测线路的状态,若连续为"1"以后又测到一个"0",就知道

发来一个新字符,应马上准备接收。

字符的起始位还被用做同步接收端的时钟,以保证以后的接收能正确进行。

起始位以后紧接着是数据位,它可以是5位(D0~D4)、6位、7位或8位(D0~D7)。

奇偶校验位(D8)只占一位,但在字符申也可以规定不设奇偶校验位,则这一位可以省去。

也可以用这一位(1/0)来确定这一帧中的字符所代表的性质(地址/数据等)。

停止位用来表征字符的结束,它一定是高电平(逻辑"1")。

停止位可以是1位、1.5位或2位。

接收端收到停止位后,知道上一字符已经传送完毕;同时,也为接收下一个字符作好准备一一只要再收到一个"0",就是新字符的起始位。

若停止位以后不是紧接着传送下一个字符,则让线路保持为"1"。

例如,规定用ASCII编码,字符为7位,加一一个奇偶校验位、一个起始位、一个停止位,则一帧共十位。

(2)同步传输

在同步传输中,串行数据发送前,发送和接收移位寄存器必须同步初始化,即在传送二进制数据串的过程中发送与接收应保持一致。

因此,在同步传输万式中,发送和接收移位寄存器必须用同一个时钟。

同步串行数据传输,除了需要输人和输出两根数据线外,还需要一根时钟信号线,由其信号的上升沿指示单个二迸制数据的传输,并决定传输字节的位。

同步传输中,由时钟来实现发送端和接收端的同步。

同步传输时,字符与字符之间没有间隔,也不用起始位和停止位,每帧固定是8位。

其数据帧格式如题图4-5所示。

题图4-5

在同步传输时,要求用时钟来实现发送端与接收端之间的同步。

为了保证接收正确无误,

发送除了传输数据之外,还要同时传输时钟信号。

同步传输的优点是可以提高传输速度(达56kb/s或更高),但硬件比较复杂。

同步传输与异步传输相比较:

同步传输具有传输数据速度快的优点,但使用较多的连接

线,若在一次串行数据的传输中出现错误,则成批的数据将报废;而异步传输数据速度慢,但使用较少的连接线,若在一次串行数据传输的过程中出现错误,仅影响一个字节数据。

80C5lUART中,方式0是同步传输;方式1、2、3都是异步传输。

4·15如何设置串行通信的波特率?

波特率误差对异步串行通信有什么影响?

有哪些因素影响波特率误差?

答:

(1)串行通信波特率的设置

80C5IUART串行通信中,有四种工作方式。

其中,方式0和方式2的波特率是不变的。

方式0的波特率为fosc/12;方式2的波特率视SMOD位设置选择而定

SMOD=l时,波特率为fosc/32;SMOD=0时,波特率为fosc/64。

方式1和方式3中的波特率是可变的,其具体数值由定时器T1的的溢出率和SMOD位确定,即:

2SMOD

波特率=×T1溢出率

32

定时器/计数器T1作波特率发生器使用时,通常选择计数初值自动重装的方式即方式2,

工作在定时器状态,设初值为x,那么,每过256一x个机器周期,Tl就会产生一次溢出,其溢出周期为

12

TB=(256–X)

Fosc

溢出率为溢出周期的倒数,故

2SMODfosc

波特率=×

3212(256–X)

(2)波特率误差对异步串行通信的影响

为分析方便,假设传输的数据为10位,若发送和接收的波特率达到理想的一致,那么接收方时钟脉冲的出现时间保证对数据的采样都发生在每位数据有效时刻的中点。

如果接收一方的波特率比发送方的大或小5%,那么对10位一帧的串行数据,时钟脉冲相对数据有效时刻逐位偏移。

当接收到第10位时,积累的误差达50%,则采样的数据已是第10位数据有效与无效的临界状态。

这时就可能发生错位,所以5%是最大的波特率允许误差。

对于常用的8位、9位和11位一帧的串行传输,其最大的波特率允许误差分别是6.25%、5.56%和4.5%。

(3)影响波特率误差的因素

影响波特率的因素有两个方面:

晶体振荡器频率的准确性和预置常数的选择。

4·16串行教据通信中有哪些数据捡验和纠错技术?

答:

1·串行数据通信中的数据检验

在数据通信中,往往一次要传送较多的数据,如何保证数据传输的正确性就十分重要,因此数据传输过程中常伴随着数据的校验。

通常,单片机数据通信中的校验方法有奇偶校验、累加和校验及循环冗余校验CRC(CyclicRedundancyCheck)。

(1)奇偶校验

80C51系列单片机中,提供了奇偶校验的现成条件。

当一个数据字节读入累加器A时,

该字节的奇偶标志位P便出现在PSW(PSW·O)中。

当累加器中1的个数为偶数时,P=l;为

奇数时,P=0。

80C51数据通信使用7位的ASCII码时)奇偶校验位可放在字节的最高位;而8位数据通

信时,使用方式2和方式3的9位数据通信,奇偶校验位为第9位。

奇偶校验的操作过程如下:

当发送一个数据字节时,数据与奇偶位组成一帧一并发送;当接收方接收到一帧数据后,将数据和奇偶位分解,将接收数据送人A中,并将PSW中的奇偶位与传送过来的奇偶位相比较,若不同,则传送出错。

(2)累加和校验

如果传输的一个数据块中有n个字节,在数据块传送之前,对n个字节进行加运算,形成累加和,把累加和附在n个字节后面传输。

接收方接收到n个字节后也按同样方法进行n个字节的加运算,并将两个累加和进行比较,如果不同,表示数据块传输出错。

累加和的"加"运算一种是逻辑加(按位加),采用异或操作指令完成;另一种是算术加(按

字节加),采用加法指令完成。

(3)循环冗余校验(CRC)

奇偶校验和累加和校验虽然使用较为方便,但校验功能有限。

奇偶校验在干扰持续时间很短,差错常常为单个状态出现时,校验较为可靠;如果干扰持续时间较长、引起连续出错且出现差错是2、4、6个时)奇偶校验就不能检出了。

虽然累加和可以发现几个连续位的差错,但不能检出数字之间的顺序错误(数据交换位置累加和不变)。

因此,在重要的数据存储和数据通信中常采用循环冗余校验。

循环冗余校验的基本原理是:

将一个数据块看成一个很长的二进制数(如将一个128B的数据块看成是一个1024位的二进制数),然后用一个特定的数去除它,将余数作校验码附在数据块后一起发送;在接收到该数据块和校验码后,对它们进行同样的运算,所得余数应为零,如果不为零表示数据传送出错。

目前CRC己广泛使用在数据存储与数据通信中,并在国际上形成规范,己有不少现成的CRC的软件算法。

2·串行数据通信中的纠错技术

无论采用上述哪种校验方法,只能发现数据通信中的错误,发现出错后要求对方重发一遍来纠正错误,这在实时信息系统中无法实现(因信源已变)的。

即使保留有信源样本,当差错很频繁时会消耗大量的通信时间。

这时就应借助具有纠错能力的编码来通信。

纠错码是采用加大码距的办法来区别非法代码的,其纠错原理建立在概率统计的基础上,即出现两个差错的概率远小于出现一个差错的概率,而出现三个差错的概率又远小于出现两个差错的概率。

因此,当接收到一个非法代码时,其正确代码应是逻辑空间中离它最近的有效代码。

目前,常用的纠错码有汉明码、检二纠一码和矩形码等。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1