首页 理论教育 单片机学习指导及习题解答-双解汇编和C51-6.1选择题解答

单片机学习指导及习题解答-双解汇编和C51-6.1选择题解答

时间:2023-09-25 理论教育 版权反馈
【摘要】:6.1 选择题:1)80C51有关中断控制的特殊寄存器中,定时和外中断控制寄存器为 G ;串行控制寄存器为 E ;中断允许控制寄存器为 C ;中断优先级控制寄存器为 B 。

单片机学习指导及习题解答-双解汇编和C51-6.1选择题解答

6.1 选择题:

1)80C51有关中断控制的特殊寄存器中,定时和外中断控制寄存器为 G ;串行控制寄存器为 E ;中断允许控制寄存器为 C ;中断优先级控制寄存器为 B 。(A.TMOD;B.IP;C.IE;D.SBUF;E.SCON;F.PCON;G.TCON)

2)80C51五个中断源的中断入口地址:978-7-111-42431-4-Chapter06-62.jpg是 B ;978-7-111-42431-4-Chapter06-63.jpg是 D ;T0是 C ;T1是 E ;串行口是 F 。(A.0000H;B.0003H;C.000BH;D.0013H;E.001BH;F.0023H;G.002BH;H.0100H)

3)在CPU未执行同级或更高优先级中断服务程序的条件下,中断响应等待时间最短需要 B 个机周,最长需要 E 个机周。(A.2;B.3;C.4;D.6;E.8;F.10)

4)CPU响应中断后,能自动清除中断请求“1”标志(多选)的有 BC 。(A.978-7-111-42431-4-Chapter06-64.jpg采用电平触发方式;B.978-7-111-42431-4-Chapter06-65.jpg采用边沿触发方式;C.定时/计数器T0/T1中断;D.串行口中断TI/RI)

5)下列有关中断C51编程的说法中,错误的是 C 。(A.不需要考虑保护现场和恢复现场;B.中断函数无返回值;C.必须设置工作寄存器组编号;D.中断函数中允许调用其他子函数,但被调用子函数使用的工作寄存器组必须与中断函数使用的工作寄存器组相同)

6)80C51定时/计数器对 A 计数,是计数器;对 C 计数,是定时器。(A.外部事件脉冲;B.时钟脉冲;C.机周脉冲;D.状态周期脉冲;E.ALE信号脉冲)

7)若将定时/计数器用于计数方式,则外部事件脉冲必须从(多选) CD 引脚输入(A.P3.2;B.P3.3;C.P3.4;D.P3.5),且外部脉冲的最高频率不能超过时钟频率 的 D 。(A.1/2;B.1/6;C.1/12;D.1/24)

8)80C51定时/计数器4种工作方式的最大计数值分别为:方式0 D ;方式1 E ;方式2 A ;方式3 A 。(A.256;B.1024;C.4096;D.8192;E.65536;F.不定)

9)80C51定时/计数器4种工作方式中,计数值最大的是 B ;定时初值可自动恢复的是 C ;常用做波特率发生器的是 C 。(A.方式0;B.方式1;C.方式2;D.方式3)

10)下列有关串行缓冲寄存器的说法中,不正确的是 B 。(A.串行缓冲寄存器有两个;B.串行缓冲寄存器具有双缓冲结构;C.串行缓冲寄存器只有一个寄存器名;D.串行缓冲寄存器只有一个单元地址)

11)串行4种工作方式的通信方式分别为:方式0: A ;方式1: E ;方式2: F ;方式3: F 。(A.8位同步;B.9位同步;C.8位异步;D.9位异步;E.10位异步;F.11位异步)

12)串行4种工作方式的波特率分别为:方式0: B ;方式1: E ;方式2: C ;方式3: E 。(A.fOSC/6;B.fOSC/12;C.fOSC/64或32;D.T1溢出率/12;E.T1溢出率/32或16)

6.2 按下列要求分别设置相关控制位:

978-7-111-42431-4-Chapter06-66.jpg为边沿触发方式; ②978-7-111-42431-4-Chapter06-67.jpg为电平触发方式;

③T0启动运行; ④T1停止运行;

:①978-7-111-42431-4-Chapter06-68.jpg为边沿触发方式:SETB IT0;

978-7-111-42431-4-Chapter06-69.jpg为电平触发方式:CLR IT1;

③T0运行:SETB TR0;

④T1停止运行:CLR TR1。

6.3 用一条汇编指令实现下列要求:

978-7-111-42431-4-Chapter06-70.jpg、T0开中,其余禁中; ②T1、串行口开中,其余禁中;

③全部开中; ④全部禁中;

978-7-111-42431-4-Chapter06-71.jpg、T0开中,其余保持不变; ⑥978-7-111-42431-4-Chapter06-72.jpg、T1禁中,其余保持不变。

:①978-7-111-42431-4-Chapter06-73.jpg、T0开中,其余禁中:MOV IE,#10000110B;

②T1、串行口开中,其余禁中:MOV IE,#10011000B;

③全部开中:MOV IE,#0FFH;

④全部禁中:MOV IE,#00H;或CLR EA。

978-7-111-42431-4-Chapter06-74.jpg、T0开中,其余保持不变:ORL IE,#10000011B;

978-7-111-42431-4-Chapter06-75.jpg、T1禁中,其余保持不变:ANL IE,#10010011B。

6.4 根据下列已知条件,试求中断开关状态。

①IE=93H; ②IE=84H; ③IE=92H; ④IE=17H。

解:①IE=93H=10010011B:978-7-111-42431-4-Chapter06-76.jpg、T0、串行口开中,其余禁中;

②IE=84H=10000100B:978-7-111-42431-4-Chapter06-77.jpg开中,其余禁中;

③IE=92H=10010010B:T0、串行口开中,其余禁中;

④IE=17H=00010111B:CPU禁中,全部禁中。

6.5 按下列要求设置IP:

978-7-111-42431-4-Chapter06-78.jpg、串行口为高优先级,其余为低优先级;

②T1为高优先级,其余为低优先级;

③T0、T1为低优先级,其余为高优先级;

④串行口为低优先级,其余为高优先级。

解:978-7-111-42431-4-Chapter06-79.jpg、串行口为高优先级,其余为低优先级:IP=00010100B;

②T1为高优先级,其余为低优先级:IP=00001000B;

③T0、T1为低优先级,其余为高优先级:IP=00010101B;

④串行口为低优先级,其余为高优先级IP=00001111B。

6.6 根据下列已知条件,试求中断优先级状态。

①IP=16H; ②IP=ECH; ③IP=03H; ④IP=1FH。

:①IP=16H=00010110B:T0、978-7-111-42431-4-Chapter06-80.jpg、串行口为高优先级,其余为低优先级;

②IP=ECH=11101100B:978-7-111-42431-4-Chapter06-81.jpg、T1为高优先级,其余为低优先级;

③IP=03H=00000011B:978-7-111-42431-4-Chapter06-82.jpg、T0为高优先级,其余为低优先级;

④IP=1FH=00011111B:全部为高优先级,相当于未设置优先级。

6.7 要求80C51五个中断源按下列优先顺序排列,判是否有可能实现?若能,应如何设置中断源的中断优先级别?若不能,试述理由。

①T0、T1、978-7-111-42431-4-Chapter06-83.jpg978-7-111-42431-4-Chapter06-84.jpg、串行口; ②串行口、978-7-111-42431-4-Chapter06-85.jpg、T0、978-7-111-42431-4-Chapter06-86.jpg、T1;

978-7-111-42431-4-Chapter06-87.jpg、T1、978-7-111-42431-4-Chapter06-88.jpg、T0、串行口; ④978-7-111-42431-4-Chapter06-89.jpg978-7-111-42431-4-Chapter06-90.jpg、串行口、T0、T1。

解:①能。T0、T1为高优先级,其余为低优先级。

②能。串行口为高优先级,其余为低优先级。

③不能。80C51只有两个中断优先级。当设置978-7-111-42431-4-Chapter06-91.jpg、T1为高优先级后,978-7-111-42431-4-Chapter06-92.jpg、T0、串行口处于同一低优先级,而T0的优先权排在978-7-111-42431-4-Chapter06-93.jpg前面,978-7-111-42431-4-Chapter06-94.jpg无法优先T0。

④能。978-7-111-42431-4-Chapter06-95.jpg978-7-111-42431-4-Chapter06-96.jpg、串行口为高优先级,其余为低优先级。

6.8 试统计某展览会参展人数。已知展览会有4个入口,且均已安装检测探头,每进入一人,能产生一个负脉冲,分别输入P3.2、P3.3、P3.4、P3.5。估计参展人数多于10万,少于1000万,试编程,将累计参展人数存32H、31H、30H。

:见例6-1。

6.9 按下列要求设置TMOD。

①T0计数器、方式1,运行与978-7-111-42431-4-Chapter06-97.jpg有关;T1定时器、方式2,运行与978-7-111-42431-4-Chapter06-98.jpg无关;

②T0定时器、方式0,运行与978-7-111-42431-4-Chapter06-99.jpg有关;T1计数器、方式2;运行与978-7-111-42431-4-Chapter06-100.jpg有关

③T0计数器、方式2,运行与978-7-111-42431-4-Chapter06-101.jpg无关;T1计数器、方式1,运行与978-7-111-42431-4-Chapter06-102.jpg有关;

④T0定时器、方式3,运行与978-7-111-42431-4-Chapter06-103.jpg无关;T1定时器、方式2,运行与978-7-111-42431-4-Chapter06-104.jpg无关;

解:①TMOD=00101101B=2DH;

②TMOD=11101000B=E8H;

③TMOD=11010110B=D6H;

④TMOD=00100011B=23H;

6.10 已知TMOD值,试分析T0、T1工作状态。

①TMOD=93H; ②TMOD=68H; ③TMOD=CBH; ④TMOD=52H。

解:①TMOD=93H=10010011B

T1定时器,方式1,运行与978-7-111-42431-4-Chapter06-105.jpg有关;T0定时器,方式3,运行与978-7-111-42431-4-Chapter06-106.jpg无关。

②TMOD=68H=01101000B

T1计数器,方式2;运行与978-7-111-42431-4-Chapter06-107.jpg无关;T0定时器,方式0,运行与978-7-111-42431-4-Chapter06-108.jpg有关。

③TMOD=CBH=11001011B

T1计数器,方式0;运行与978-7-111-42431-4-Chapter06-109.jpg有关;T0定时器,方式3,运行与978-7-111-42431-4-Chapter06-110.jpg有关。

④TMOD=52H=01010010B

T1计数器,方式1;运行与978-7-111-42431-4-Chapter06-111.jpg无关;T0定时器,方式2,运行与978-7-111-42431-4-Chapter06-112.jpg无关。6.11 按下列要求设置定时初值,并置TH0/TH1、TL0/TL1值。

fOSC=12MHz、T0方式1,定时50ms;

fOSC=6MHz、T1方式2,定时300μs;

fOSC=4MHz、T0方式3,TH0定时600μs,TL0定时450μs;

fOSC=8MHz、T1方式1,定时15ms。

解:978-7-111-42431-4-Chapter06-113.jpg

因此:TH0=3CH,TL0=0B0H。

978-7-111-42431-4-Chapter06-114.jpg

因此:TH1=6AH,TL1=6AH。

978-7-111-42431-4-Chapter06-115.jpg978-7-111-42431-4-Chapter06-116.jpg

因此:TH0=38H,TL0=6AH。

978-7-111-42431-4-Chapter06-117.jpg

因此:TH1=0D8H,TL1=0F0H。

6.12 已知fOSC=12MHZ,要求在80C51 P1.0、P1.1、P1.2和P1.3引脚分别输出周期为500μs、1ms、5ms和10ms的脉冲方波,试编制程序。

解:见例6-2。

6.13 已知fOSC=12MHz,要求在P1.0引脚输出周期为400μs的脉冲方波,试用T1工作方式2编制程序,然后按下列要求分别修改程序:

1)脉冲方波从P3.0输出;

2)fOSC=6MHz;

3)脉冲方波脉宽为100μs;(www.zuozong.com)

4)用定时/计数器T0。

解:T1工作方式2程序编制:

①设置TMOD,令工作方式选择位M1M0=10,因此,TMOD=20H。

②计算定时初值:T1初值=28-200μs/1μs=38H,因此,TH1=38H,TL1=38H。

③汇编程序如下:

978-7-111-42431-4-Chapter06-118.jpg

C51程序如下:

978-7-111-42431-4-Chapter06-119.jpg

978-7-111-42431-4-Chapter06-120.jpg

1)脉冲方波从P3.0输出,只需要修改脉冲输出端,P1.0改为P3.0。

汇编程序第14行:CPL P3.0。

C51程序第2行:sbit P30=P3^0;

第11行:{P30=!P30;}

2)fOSC=6MHz,机周时间发生变化,重新计算定时初值。

T1初值=28-200μs/2μs=256-100=156=9CH

TH1=9CH,TL1=9CH,只需要修改定时初值。

汇编程序第7、8行:MOV TL1,#9CH;MOV TH1,#9CH;

C51程序第5行:TH1=TL1=0x9C;

3)脉冲方波脉宽为100μs,重新计算定时初值。

T1初值=28-100μs/1μs=256-100=156=9CH

定时初值与2)相同,修改程序也与2)相同。

4)用定时/计数器T0,只需要修改与T1有关内容(修改处画线)。

汇编程序修改如下:

978-7-111-42431-4-Chapter06-121.jpg

C51程序第4、5、6行:{TMOD=0x02;TH0=TL0=0x38;IP=0x02;

第10行:void t0()interrupt 1//T 0中断函数。

Keil C51软件调试和Proteus ISIS虚拟电路仿真参阅例6-2。

6.14 已知fOSC=6MHz,试编写24小时模拟电子钟程序,秒、分、时数分别存在R1、R2、R3中。

解:见例6-3。

6.15 试利用80C51定时/计数器测量某正脉冲宽度,设fOSC=12MHz,脉冲从P3.2引脚输入,宽度小于65536μs,将测量值(单位μs)存放在40H(低位)、41H中。

解:见例6-4。

6.16 试利用中断设计一个应用系统,实时统计P3.2引脚上出现的负跳变脉冲个数(设此脉冲数≤255)。

解:见例6-5。

6.17 已知fOSC=6MHz,试编写程序,使P1.7输出图6-3所示连续矩形脉冲。

解:根据题目要求,设将T0用做定时器方式1,定时40ms。

978-7-111-42431-4-Chapter06-122.jpg

图6-3 连续矩形脉冲波

TMOD=00000001B

T0初值=216-40000μs/2μs=65536-20000=45536=B1E0H

1)汇编程序如下:

978-7-111-42431-4-Chapter06-123.jpg

2)C51编程如下:

978-7-111-42431-4-Chapter06-124.jpg

978-7-111-42431-4-Chapter06-125.jpg

Keil C51软件调试和Proteus ISIS虚拟电路仿真参阅例9-8和<单片机实验仿真50例>。

6.18 已知fOSC=6MHz,试编写程序,利用T0方式2,设置TH0≠TL0,使P1.0输出高电平200μs,低电平500μs的连续矩形脉冲。

解:TL0初值=28-200μs/2μs=256-100=156=9CH

TH0初值=28-500μs/2μs=256-250=6

1)汇编程序如下:

978-7-111-42431-4-Chapter06-126.jpg

2)C51编程如下:

978-7-111-42431-4-Chapter06-127.jpg

Keil C51软件调试和Proteus ISIS虚拟电路仿真参阅例9-8和<单片机实验仿真50例>。

6.19 已知循环灯电路如图5-1所示,P1.0~P1.7端口分别接8个发光二极管fOSC =12MHz,要求利用T0中断实现依次点亮0.5s,并不断循环。

解:T0定时0.5s,可设置T0定时器方式1,定时50ms,50ms×10=0.5s。

定时初值计算:978-7-111-42431-4-Chapter06-128.jpg

1)汇编程序如下:

978-7-111-42431-4-Chapter06-129.jpg

978-7-111-42431-4-Chapter06-130.jpg

2)C51编程如下:

978-7-111-42431-4-Chapter06-131.jpg

Keil C51软件调试见例9-2,Proteus ISIS虚拟电路仿真见例9-7。

6.20 已知电路同上题,fOSC=6MHz,试利用T1中断实现下列彩灯循环。

①全亮全暗闪烁5次,间歇0.2s;

②从上至下依次暗灭,间歇0.2s,每次减少一个,直至全灭;

③从上至下依次点亮,间歇0.2s,每次增加一个,直至全亮;

④不断重复上述循环。

解:1)汇编程序如下:

978-7-111-42431-4-Chapter06-132.jpg

978-7-111-42431-4-Chapter06-133.jpg

2)C51编程如下:

978-7-111-42431-4-Chapter06-134.jpg

Keil C51软件调试和Proteus ISIS虚拟电路仿真参照上题。

6.21 已知异步通信接口的帧格式由1个起始位,7个数据位,1个奇偶校验位和1个停止位组成。当该接口每分钟传送3600个字符时,试计算其波特率。

解:每帧字符共10位(起始位1+数据位7+校验位1+停止位1=10位)

3600×10bit/60s=600bit/s=600bit/s

6.22 已知74HC164串入并出电路如图6-1所示,试编程,使164并行输出口8个发光二极管从右至左不断循环点亮。

解:见例6-6。

6.23 已知74HC165并入串出电路如图6-2所示,试编程,从74HC165并行口输入K0~K7状态数据,并从P1口输出,驱动发光二极管,以亮暗表示K0~K7状态。

解:见例6-7。

6.24 已知fOSC、SMOD和波特率,试求串行方式1时T1定时初值。并说明由此而产生的实际波特率有否误差?

fOSC=12MHz,SMOD=0,2400bit/s;

fOSC=6MHz,SMOD=1,1200bit/s;

fOSC=11.0592MHz,SMOD=1,9600bit/s;

fOSC=11.0592MHz,SMOD=0,2400bit/s。

978-7-111-42431-4-Chapter06-135.jpg

978-7-111-42431-4-Chapter06-136.jpg

从上述4小题中可看出:当串行口工作于方式1或方式3时,且波特率要求按规范取1200、2400、4800、9600bit/s、…时,若采用晶振12MHz和6MHz,T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。通常采用11.0592MHz晶振,能得到准确的整数波特率。

6.25 若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少?

解:方式3传送时,每帧字符11位。3600×11bit/60s=660bit/s=660bit/s

6.26 已知甲乙机以串行方式1进行数据传送,fOSC=6MHz,波特率为2400bit/s(SMOD=1)。甲机发送的10个数据(设为0~9共阳字段码),依次存在外ROM中,甲机发送后将数据送P2口显示;乙机接收后输出到P1口显示,试编程。

解:见例6-8。

6.27 已知甲乙机以串行方式2进行数据传送,fOSC=12MHz,SMOD=0。甲机共发送10帧数据(设为0~9共阳字段码,依次存在外ROM中),乙机接收后,存在以40H为首址的内RAM中,试分别编制甲乙机串行发送/接收程序。

解:见例6-9。

6.28 已知甲乙机以串行方式3进行数据传送,fOSC=11.0592MHz,波特率为4800bit/s,SMOD=1,TB8/RB8作为奇偶校验位,乙机接收后,进行奇偶校验,并发送回复信号(00H表示校验正确,FFH表示出错)。若正确,甲机继续串行发送(共10帧);若出错,甲机再重发一遍,直至乙机发回正确回复信号,试分别编制甲乙机串行发送/接收程序。

:见例6-10。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈

相关推荐