第四章中断定时串行口例题习题.docx
《第四章中断定时串行口例题习题.docx》由会员分享,可在线阅读,更多相关《第四章中断定时串行口例题习题.docx(16页珍藏版)》请在冰豆网上搜索。
![第四章中断定时串行口例题习题.docx](https://file1.bdocx.com/fileroot1/2023-6/26/4867ca80-714d-4a81-8337-8ef1722a3ef2/4867ca80-714d-4a81-8337-8ef1722a3ef21.gif)
第四章中断定时串行口例题习题
中断定时/计数器串行口部分例题习题
一、填空:
1、单片机CPU和外设进行数据交换时常用的方式有无条件转换、查询方式、中断方式三种
2、中断系统中共有INTO、INT1、T0、T1、串行口五个中断源,其中优先级最高的是INTO、优先级最低的是串行口。
二、选择:
1、6MHz晶振的单片机在定时工作方式下,定时器可能实现的最小定时时间是。
A.1us
B.2us
C.4us
D.8us’
2、12MHz晶振的单片机在定时工作方式下,定时器可能实现的最小定时时间是。
A.1us
B.2us
C.4us
D.8us
3、12MHz晶振的单片机在定时工作方式下,定时器可能实现的最大定时时间是。
A.4096us
B.8192uS
C.1638us
D.32768us
4、以下所列特点,不属于串行工作方式0的是。
A.波特率是固定的,为时钟频率的十二分之一
B.8位移位寄存器
C.TI和RI都须用软件清零
D.在通信时,须对定时器l的溢出率进行设置
5、通过串行口发送或接收数据时,在程序中应使用。
A.MOV指令
B.MOVX指令
C.MOVC指令
D.SWAP指令
6、用MCS-51用串行扩展并行I/O口时,串行接口工作方式选择(A)
(A)方式0(B)方式1(C)方式2(D)方式3
答BADDAA
三、判断题
1.MCS-51单片机共有五个中断源,因此相应地在芯片上就有五个中断请求输入引脚。
()
2.当全局中断允许位EA=0时,系统将不响应任何中断。
()
3.在MCS-51单片机中,高级中断可以打断低级中断形成中断嵌套。
()
4.在一般情况下,MCS-51单片机允许同级中断嵌套。
()
5.只要有中断出现,CPU就立即响应中断。
()
6.MCS-51单片机定时工作方式0与定时工作方式l除了计数结构位数不同,别无差别。
()
7.除了低优先级中断不能打断高优先级中断的情况外,其他情况都能形成中断嵌套。
()
8.T0和T1都是减法定时器/计时器。
()
9.在定时工作方式2状态下,因为把TH作为预置寄存器,所以在应用程序中应当在有计数溢出时从TH向TL加载计数初值的操作。
()
10.中断初始化时,对中断控制寄存器的状态设置,只能使用位操作指令,而不能使用字节操作指令。
()
11.MCS-51单片机的定时和计数都使用同一计数机构,所不同的只是计数脉冲的来源。
来自于单片机内部的是定时,而来自于外部的则是计数。
()
四、简答题:
1、8051单片机提供了几个中断源?
有几级中断优先级别?
各中断标志是如何产生的?
又如何清除这些中断标志?
各中断源所对应的中断矢量地址是多少?
答:
8051单片机提供了5个中断源:
两个外部INTO和INT1中断源,两个定时片内定时器T0和T1溢出中断源,一个片内全双工串行口中断源.提供了高、低两个中断优先级、能实现两级中断服务程序嵌套,同一个优先级里,由硬件查询来确定优先序列。
各中断源请求中断的标志分别由特殊功能寄存器TCON、SCON的相应位锁存,这些标志位的产生和清除方式如下:
IE0(TCON.1)外部中断0请求标志.当INTO出现有效的中断请求信号时,硬件使IE0置位.在边沿触发方式时,当CPU响应IE0中断后,由硬件清除IE0。
IE1(TCON.3)外部中断1请求标志.置位复位方式与IE0相同。
TF0(TCON.5)T0溢出中断请求标志。
每当T0计数器加1计数到溢出时,TF0=1。
CPU响应TF0中断,硬件清除TF0。
也可以由查询软件清除TF0。
TF1(TCON.7)T1溢出中断请求标志。
置位复位方式与TF0相同。
R1(SCON.0)串行口接收中断请求标志。
当串行口接收器收到一个串行帧,R1=1。
CPU响应R1中断,硬件并不清除R1,R1必须由软件清0。
T1(SCON.1)串行口发送中断请求标志.将8位数据写入SBUF后,发送完一个串行帧,T1=1.CPU响应T1中断,硬件并不清除T1,T1必须由软件清0.
各中断源对应的矢量地址如下:
外部中断0:
0003H
定时器T0:
000BH
外部中断:
0013H
定时器T1:
001BH
串行口接收和发送:
001BH
2.为什么定时器T1用作串行口波特率发生器时,常选用工作模式2?
若已知系统时钟频率和通信用的波特率,如何计算其初值?
答:
因为工作模式2是自动重装初值定时器,编程时无需重装时间参数(计数初值),比较实用。
若选用工作模式0或工作模式1,当定时器T1溢出时,需在中断服务程序中重装初值。
3、MCS-51单片机内有两个16位加1定时/计数器,可通过编程实现4种工作方式。
7.8031单片机定时/计数器有哪几种工作方式?
答:
1)、8031单片机模式0、1、2、3等4中定时/计数方式。
模式0为13位定时/计数方式;
模式1为16位定时/计数方式;
模式2为8位循环定时/计数方式;
模式3为2个8位定时/计数方式。
定时器T0和T1各有几种工作方式?
(8分)
答:
T0有4种工作方式,T1有3种工作方式,见表面4.4所述。
表4.4定时器的工作方式
工作方式
适用定时器
功能说明
方式0
方式1
方式2
方式3
T0、T1
T0、T1
T0、T1
T0
13位的定时器/计数器
16位的定时器/计数器
自动重新装入计数初值的8位的定时器/计数器
分为两个8位计数器TL0和TH0。
TL0可工作于定时或计数状态,TH0则固定为定时状态。
方式3对T1则停止计数
4.已知8031单片机晶振频率是12MHz,定时器T1最长定时时间是多少?
如果8031单片机晶振频率是6MHz,定时器T1最长定时时间又是多少?
答:
为实现最长的定时时间,定时/计数器应选工作方式1。
①当晶振频率为12MHz时,机器周期为1µs,当初值=0时达到最大定时:
定时时间为:
=(216-0)×1µs=65536µs=65.536ms
②当晶振频率为6MHz时,机器周期为2µs,当初值=0时达到最大定时:
定时时间为:
=(216-0)×2µs=131072µs=131.072ms
5、MCS-51单片机系统时钟为12MHZ,试利用定时/计数器0控制每隔200S从P1.6口输出1个4S低电平脉冲。
(本题20分)
答:
1)、定时/计数器的模式选定(此部分2分)
由于8位定时时间为256s,因此,将定时/计数器0设置为模式2(8位自动重装
载方式)。
设置定时200s。
2)、控制字设置(此部分3分)
TMOD=****0110B
3)、时间常数确定(此部分3分)
=12106HZ,T=20010-6S代入,得
X=256-200=156=9CH
初值设置为:
TH0=TL0=#09CH
4)、程序设计
主程序(此部分6分)
ORG0000H;系统复位入口
AJMP0100H;系统主程序从0100H开始
ORG000BH;定时器0中断入口
AJMP0500H;定时器0中断服务程序放在0500H处
ORG0100H
MOVSP,#30H;置栈顶
MOVTH0,#9CH;设置定时器初值
MOVTL0,#9CH;
MOVTMOD,#06H;设置定时器0为模式2
SETBTR0;启动定时器0
SETBET0;允许定时器0中断
SETBEA;开系统中断
SETBP1.6
。
。
。
。
。
。
。
。
。
中断服务程序(此部分6分)
ORG0500H
T200US:
PUSHPSW;栈保护
CLRP1.6;P1.6输出低电平
NOP;延时4s
NOP
NOP
SETBP1.6;P1.6输出高电平
POPPSW
SETBET0;开中断
RETI
6、MCS-51单片机系统时钟为6MHZ,试利用定时/计数器0控制每隔200S从P1.6口输出1个8S低电平脉冲。
(本题20分)
答:
1)、定时/计数器的模式选定(此部分2分)
由于8位定时时间为256s,因此,将定时/计数器0设置为模式2(8位自动重装
载方式)。
设置定时200s。
2)、控制字设置(此部分3分)
TMOD=****0110B
3)、时间常数确定(此部分3分)
=6106HZ,T=20010-6S代入,得
X=256-100=156=9CH
初值设置为:
TH0=TL0=#09CH
4)、程序设计
主程序(此部分6分)
ORG0000H;系统复位入口
AJMP0100H;系统主程序从0100H开始
ORG000BH;定时器0中断入口
AJMP0500H;定时器0中断服务程序放在0500H处
ORG0100H
MOVSP,#30H;置栈顶
MOVTH0,#9CH;设置定时器初值
MOVTL0,#9CH;
MOVTMOD,#06H;设置定时器0为模式2
SETBTR0;启动定时器0
SETBET0;允许定时器0中断
SETBEA;开系统中断
SETBP1.6
。
。
。
。
。
。
。
。
。
中断服务程序(此部分6分)
ORG0500H
T200US:
PUSHPSW;栈保护
CLRP1.6;P1.6输出低电平
NOP;延时6s
NOP
NOP
NOP
NOP
SETBP1.6;P1.6输出高电平
POPPSW
SETBET0;开中断
RETI
7.单片机系统时钟6MHZ,利用定时/计数器0实现2ms定时,如何设置时间常数?
答:
1)、定时/计数器0设置为模式0,13位方式,TMOD=#XXXX0000B
2)、时间常数设置如下
即T=210-3S,=6106MHZ,代入得
得X=7192(完成以上工作得4分)
3)、X=7192=1C18H=0001110000011000B,取后13位为1110000011000B,高8位送TH0=0E0H,TL0取低5位,TL0的高3位无效,以000补齐,TL0=18H,即
TH0=0E0H,TL0=18H
(若不选择模式0而采用其它模式完成,得3分)
1、单片机系统时钟12MHZ,利用定时/计数器0实现1ms定时,如何设置?
答:
1)、定时/计数器0设置为模式0,13位方式,TMOD=#XXXX0000B
2)、时间常数设置如下
即T=110-3S,=12106MHZ,代入得
X=7192=0E018H
即TH0=#0E0H,TL0=#18H
8、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请
(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
解:
解:
X=216-t(F/12)
=216-1*10-3*6*106/12
=OFEOCH
ORG3000H
START:
MOVTMOD,#01H
MOVTL0,#OCH
MOVTHO,#OFEH
SETBTR0
LOOP:
JBCTFO,DONE
SJMPLOOP
DONE:
MOVTL0,#OCH
MOVTHO,#OFEH
CPLP1.0
SJMPLOOP
9、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请
(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
解:
X=216-t(F/12)
=216-1*10-3*6*106/12
=OFEOCH
ORG3000H
START:
MOVTMOD,#01H
MOVTL0,#OCH
MOVTHO,#OFEH
SETBTR0
LOOP:
JBCTFO,DONE
SJMPLOOP
DONE:
MOVTL0,#OCH
MOVTHO,#OFEH
CPLP1.0
SJMPLOOP
10.图示为一个自动包装系统。
单片机系统时钟为6MHZ,试编制一个计数程序,对T1口的脉冲数进行监测,每200个脉冲,继电器J状态改变1次。
(本题20分)
题二.4图
答:
解:
(1)、分析(此部分5分)
设置定时/计数器1(若使用0,扣2分)为计数状态,选择工作模式2。
即控制字TMOD=0110****B(此部分5分)
时间常数为TL1=TH1=256-200=56(此部分5分)
(2)、程序设计如下:
(此部分10分)
ORG0000H
AJMP0100H
ORG000BH
AJMP0400H
ORG0100H
MAIN:
。
。
CLRTMOD.4;
SETBTMOD.5;
SETBTMOD.6;
CLRTMOD.7;
MOVTL1,#156
MOVTH1,#156
SETBTR1;启动定时器1
SETBET1;允许定时器1中断
SETBEA;开系统中断
。
。
ORG0400H
CLRET1
PUSHPSW
CPLP1.7
POPPSW
SETBET1;重新允许定时器1中断
RETI
11、若使单片机串行口工作于9位UART可变波特率方式,SCON以及定时/计数器1的时间常数应如何设置?
答:
1)、串行口设置为模式3,SCON=#11000000B;
2)、定时/计数器1设置为8位自动重装载方式即模式2,TMOD中M1=1,M0=0。
禁止中断。
时间常数如下设置:
12、MCS-51单片机串行口9位模式时的第9位数据有何功能?
答:
8031单片机的串行口9位模式时的第9位数据在需要进行数据校验时存放数据的奇偶位,多处理机通信模式时用于表示地址/数据。
13、若使单片机串行口工作于9位UART可变波特率方式,SCON以及定时/计数器1的时间常数应如何设置?
答:
1)、串行口设置为模式3,SCON=#11000000B;
2)、定时/计数器1设置为8位自动重装载方式即模式2,TMOD中M1=1,M0=0。
禁止中断。
时间常数如下设置:
2.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器__SCON_加以选择.
14.编一个程序,将累加器中的一个字符从串行接口发送出去.
解SOUT:
MOVSCON,#40H;设置串行接口为工作方式
MOVTMOD,#20H;定时器T1工作于模式2
MOVTL1,#0E8H;;设置波特率为1200b/s
MOVTH1,#0E8H
SETBTR1
MOVSBUF,A
JNBT1,$
CLBT1
RET
15.编一子程序,从串行接口接受一个字符.
解:
START:
MOVTMOD,#20H;定时器T1工作于模式2
MOVTH1,#0E8H;设置波特率为1200b/s
MOVTL1,#0E8H
SETBTR1;启动T1
MOVSCON,#50H;串行接口工作于方式1,充许接收
L1:
JNBRI,L1;等待接收数据,末接收到数据,继续等待
CLRRI;接收到数据,清RI
MOVA,SBUF;接收到数据送A
RET
16、如图所示MCS-51单片机串行口应用系统,试设计程序实现对24路输入信号检测。
将检测到的数据保存于20H、21H、22H单元中。
(本题20分)
题二.4图
1)、UART模式设置(此部分3分)
UART设置为模式0,即8位移位寄存器方式。
2)、中断方式设置(此部分3分)
采用接收标志查询方式,不采用中断,RI=0
3)、在REN=1和RI=0时,1条读SBUF数据的操作指令则启动接收1个数据。
(此部分4分)
4)、以下为读入3个字节并行口数据的子程序(此部分10分)
CLRP1.0;74LS165装载数据
SETBP1.0;允许74LS165移位
MOVSCON,#10H;UART设置为模式0,REN=1,RI=0允许接收
MOVA,SBUF;接收第1个数据
JNBRI,$;等待接收结束
MOV20H,A;第1个数据保存于20H单元
CLRRI
MOVA,SBUF;接收第2个数据
JNBRI,$;等待接收结束
MOV21H,A;第2个数据保存于21H单元
CLRRI
MOVA,SBUF;接收第2个数据
JNBRI,$;等待接收结束
MOV22H,A;第3个数据保存于22H单元
CLRRI
CLRREN;禁止接收
RET