单片机 部分习题参考解答

更新时间:2023-04-21 21:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第2章 部分习题参考解答

1、 试述MCS-51单片机内部有哪些主要逻辑部件并说出其功能,画出片内结构图。

MCS-51单片机的内部除包含CPU外,还包含程序存储器、数据存储器、定时器/计数器、并行I/O接口、串行I/O接口、总线控制逻辑和中断控制逻辑等逻辑部件,其结构框图如图所示:

其中,CPU是单片机的最核心部分,它是整个单片机的控制和指挥中心,完成所有的计算和控制任务。振荡器和时序逻辑,产生CPU工作所需要的内部时钟。中断控制逻辑用来应付一些临时到达的突发事件,并能保证当有多个突发事件发生时,CPU能够有序地为这些事件进行服务,所有突发事件服务完成后CPU还能继续以前的工作。并行I/O接口和串行I/O接口作为CPU与外部设备通信的信息传输通道。程序存储器用于存放单片机的程序。数据存储器用于存放内部待处理的数据和处理后的结果。定时器/计数器主要是完成对外部输入脉冲的计数或者根据内部的时钟及定时设置,周期性的产生定时信号。64K总线控制逻辑,用于产生外部64KB存储空间的有关读写控制信号。

2、 MCS-51单片机有4个8位并行口(P0、P1、P2、P3),哪个口可作为地址/数据利用总线?

P0口可作为地址/数据复用总线口。

3、 P0口作为通用I/O口使用时,在输出状态下应注意什么?在输入状态下应注意什么?

P0口作为通用I/O口使用时,输出级是漏极开路的,因此在输出状态下外部应加上拉电阻。在输入状态下应先向端口锁存器写入1,这样引脚便处于悬浮状态,可作高阻抗输入。 5、 MCS-51单片机的最大寻址空间是多少?为什么?

MCS-51单片机,程序存储器空间采用片内、片外统一编址的方式,共有64KB,地址范围为 000OH~FFFFH。片内有256字节数据存储器地址空间,地址范围为 00H~FFH。片外数据存储器空间有64KB,其地址范围也是 000OH~FFFFH。

7、 MCS-51单片机片内低128字节的RAM中,分了几个基本区域?说出这些区域的名称。

MCS-51系列单片机片内低128字节的RAM包含:工作寄存器区(00H: 1FH)、可位寻址区(20H: 2FH)、通用RAM区(30H: 7FH)3个组成部分。 8、 片内和片外数据存储器地址重叠的区域是哪些地址?

片内与片外数据存储器空间的低地址部分(000OH~OOFFH)是重叠的,MCS-51单片机有MOV和MOVX两种指令,用以区分片内、片外RAM空间,当使用MOV指令时,访问的是片内区域,当使用MOVX指令时,访问的是片外区域。

9、 访问程序存储器的片外空间,是通过什么方式实现的?

程序存储器空间的片内、片外选择通过单片机的引脚EA来实现,当EA接低电平时,程序存储器空间的64KB全部由片外实现,当EA接高电平时,程序存储器空间的前4KB(MCS-52是8KB)由片内实现,对于片内没有的高地址空间部分单元,不管EA引脚接的是高电平还是低电平都由片外实现。片外程序存储器空间和片外数据存储器空间,采用的外部地址总线和数据总线是相同的,不同的是控制总线,程序存储空间的读信号PSEN,而数据存储空间的读信号为。 10、说出程序状态字寄存器(PSW)各位的含义。

PSW的位结构如下表所示。

Cy:高位进位标志位,当ALU的算术运算过程中有进位或借位时,Cy=1;否则,Cy=0。同时,

该位还可以用作位累加器,这时一般只用“C”表示。

AC:辅助进位标志,当ALU的算术运算过程中低4位向高4位有进位或借位时,AC=1;否则,

AC=0。该位常用于BCD码的调整。 F0:用户标志位。

RS1、RS0:选择工作寄存器组位,用于选择内部数据存储器区内4组工作寄存器中的某一组。

具体选择情况见寄存器介绍部分。

OV:溢出标志位,当ALU的算术运算过程中有溢出时,OV =1;否则,OV =0。

P:奇偶校验标志位,根据累加器ACC中1的个数由硬件置位或清除,当累加器ACC中有奇数

个1时P=1;否则,P=0。 PSW.1:保留位,无定义。

11、在MCS-51单片机的工作时序中,一个机器周期包含几个状态周期、几个振荡周期?

一个机器周期包含6个状态周期、12个振荡周期。 12、单片机复位后,程序计数器PC指向哪个地址?

PC=0000H

第3章 部分习题参考解答

1、写出MCS-51单片机汇编指令的指令格式,并简单举例。

MCS-51单片机的汇编指令格式如下:[标号:] 操作码 [目的操作数][,源操作数] [ ;注释]

操作码表示该指令所实现的操作功能,一般由2~5个英文字母表示。例如ORL,ADD,LCALL等。 操作数表示参与操作的数据来源和目的单元。操作数可以是一个立即数,也可以是一个内存单元或者是一个寄存器单元。

操作码和第一个操作数之间一般用一个或几个空格隔开,而操作数与操作数之间用逗号隔开。 操作数可以有1个,2个,3个或没有。

如果需要对指令进行注释说明的话,在最后一个操作数后加一个分号,分号后面是注释。 如: MOV A , 60H ; (60H)→A

标号由1~8个字母或数字构成,以字母开头以“:”结尾,标号可有可无,它仅仅代表了该指令所在的地址,便于源程序编写过程中使用该地址。 2、指出下面程序每个语句的寻址方式。

目的操作数 寄存器寻址

原操作数 直接寻址

立即寻址 寄存器寻址

MOV A,P1

MOV A,#40H MOV 80H,A MOV A,R5 MOV @R0,A

寄存器寻址 直接寻址

寄存器寻址

寄存器寻址

寄存器寻址 寄存器间接寻址 基址+变址寻址 立即寻址

寄存器间接寻址 寄存器寻址 寄存器寻址 直接寻址

MOVX A,@DPTR

MOVC A,@A+DPTR MOV 74H,#80H

3、写出下面程序被执行后,各数据存储器地址中的内容。

MOV 40H,#33H MOV 41H,#44H MOV A,40H MOV 50H,A MOV A,41H MOV 51H,A

(40H)=33H,(41H)=44H,(50H)=33H,(51H)=44H

4、设置堆栈指针SP中内容为60H,编写程序,将上题中数据存储器50H、51H的内容压栈后,分别将栈内数据弹出到DPTR寄存器中。

MOV SP, #60H PUSH 50H PUSH 51H POP DPL POP DPH

5、访问片内、外数据存储器,都用什么指令?

访问片内数据存储器的数据传送指令用MOV,访问片外数据存储器的数据传送指令用MOVX。

6、下面的指令语句对吗? 为什么?

MOV R0,#0400H MOV 100H,A 位。

;不对,R0是8位寄存器源操作数超过了8位

;不对,片内数据存储器用8位地址访问,目的操作数的地址超过了8

MOV @R2,A MOVX @R1,A

;不对,能够用于间接寻址的只能是R0或R1

;对,R1做为间址寄存器来提供寻址存储器的低8位,高8位由P2提

7、查表指令MOVC A,@A+DPTR 所查的表数据是在程序存储区还是数据存储区?答:程序存储区。 9、使用位操作指令完成下列操作。

⑴ 将P1.1置“1”。答:SETB P1.1 ⑵ 将ACC.7置“1”。答:SETB ACC.7

10、编写程序,将40H为首的8个单元内容,依次反序送入到60H为首的8个单元中去。

MOV R0,#47H MOV R1,#60H MOV R2,#8 MOV @R1,A DEC INC

R0 R1

;40H开始的8字节数据中最后一个单元的地址

LOOP:MOV A,@R0

DJNZ R2,LOOP SJMP $

11、两个四位压缩类型BCD码数,被加数放在30H和31H内存单元中,加数放在32H和33H内存单元中,所求的和放在34H和35H中。位数排列按高位在低地址,低位在高地址的顺序,编写此加法程序。

MOV

PSW,#00H

;取0组工作寄存器

MOV R0,#31H MOV R1,#33H SETB RS0 CLR RS0 MOV R2,#02H CLR C

;清除进位标志,准备进行带进位加

;取1组工作寄存器

MOV R0,#35H

LOOP: MOV A,@R0

ADDC A,@R1 DA A SETB RS0 DEC R0 CLR RS0 DEC R0 DEC R1 DJNZ R2,LOOP SJMP $

;恢复0组工作寄存器

;取1组工作寄存器

MOV @R0,A

13、写出ACALL和LCALL两个调用指令的调用范围,试写出这两条指令执行时,CPU的操作过程。

ACALL的调用范围是包括调用指令下一条指令的第一个字节所在的2KB范围的程序存储器空间。 ACALL调用指令的执行过程是:PC加2(本指令代码为两个字节)获得下一条指令的地址,并把该

断点地址(当前的PC值)入栈,然后将断点地址的高五位与11位目标地址(指令代码第一字节的高3位,以及第二字节的八位)连接构成16位的子程序入口地址,使程序转向子程序。调用子程序的入口地址和ACALL指令的下一条指令的地址,其高五位必须相同。因此子程序的入口地址和ACALL指令下一条指令的第一个字节必须在同一个2KB范围的程序存储器空间内。

LCALL调用指令的目标地址以16位给出,允许子程序放在64KB空间的任何地方。

指令的执行过程是把PC加上本指令代码数(三个字节)获得下一条指令的地址,并把该断点地址入栈(断点地址保护),接着将被调子程序的入口地址(16位目标地址)装入PC,然后从该入口地址开始执行子程序。

14、分析下列程序,说出此程序完成什么样的功能。

MOV P1,#0FFH MOV R7,#03H

;该指令1个机器周期 1

LOOP:

LOOP1:

MOV R6,#0FFH DJNZ R6,$

;该指令1个机器周期 2 ;该指令2个机器周期 3 ;该指令2个机器周期 4 ;该指令1个机器周期 5 ;该指令2个机器周期 6

DJNZ R7,LOOP1 CPL P1.0

JMP LOOP END

该程序的功能是从P1.0引脚输出连续方波,方波的周期为(11+(12+23×255+24)×3+15+26)×2个机器周期

15、试编写程序,完成对十个数从大到小的排序(建议用气泡排序法)。十个源字节数据放在30H为首的内存区域,排序后的目标数据放在50H为首的区域。

如果不破坏30H开始存放的源字节数据,可以把从30H开始的数据先传送到50H开始的数据区,然

后对50H开始的数据进行排序。

如果不需考虑30H开始存放的数据使用后的顺序,则可先对30H开始存放的数据进行排序,然后再

传送到50H开始的数据区中。

现根据第1种情况进行编程。

MOV R0,#30H MOV R1,#50H MOV R2,#10 MOV @R1,A INC R0

LOP1: MOV A,@R0

INC R1 DJNZ R2,LOP1 MOV R2,#9 MOV R1,#51H MOV A,R2 MOV R3,A CLR C SUBB A,@R1 MOV A,@R0 XCH A,@R1 MOV @R0,A INC R1 DJNZ R3,LOP3 DJNZ R2,LOP4 SJMP $

LOP4: MOV R0,#50H

LOP3: MOV A,@R0

LOP2: JC NEXT

NEXT: INC R0

第4章 部分习题参考解答

1、 MCS-51单片机中,有几个16位定时/计数器?其实际用途?

MCS-51单片机中,有2个16位定时/计数器。

可以用定时器在规定的时间对温度、湿度、流量、转速等参数进行检测采样,用于环境检测、工业控制;或者利用定时器按一定的周期产生方波信号进行输出;还可以通过计数器对脉冲进行计数,用于信息的采集处理领域等。

2、 通过对定时/计数器中的哪个特殊寄存器进行工作模式设置?试叙述几种工作模式功能。

通过特殊寄存器TMOD对定时/计数器进行工作模式设置。 工作方式0,为13位的定时/计数器。 工作方式1,为16位定时器/计数器。 工作方式2,为8位自动重装定时器/计数器。

工作方式3,只有定时器/计数器T0具有此工作方式,为两个8位定时器/计数器。 3、门控制信号GATE为1时,外部中断引脚INTx在什么状态下启动计数?

GATE为1时,在外部中断引脚INTx=1、TRx=1时启动定时器/计数器。

5、定时/计数器作为计数器时,对外界技术频率有什么要求(假定时钟频率为12MHz)?

当定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0和T1的外部脉冲信号计数,在每个机器周期的S5P2期间采样外部脉冲,若前一个机器周期采样到高电平,后一个机器周期采样到低电平,则将触发计数器加1,更新的计数值将在下一个机器周期的S3P1期间装入计数器。因此,单片机检测一个从高电平到低电平的下降沿需要2个机器周期,要使下降沿能被检测到,需要保证被采样高、低电平至

少维持一个机器周期的时间,即外部输入信号的频率不超过晶振频率的1/24。当晶振频率为12MHz时,最高计数频率不超过0.5MHz,即计数脉冲的周期要大于2微秒。

6、定时/计数器在何种设置下可提供3个8位定时器?当T0运行在模式3下,TH0作为定时器使用时,其启动和关闭受谁的控制?

定时器/计数器T0工作在方式3下,定时器/计数器T1工作在方式2下,可提供3个8位定时器。当T0运行在方式3下,TH0作为定时器使用时,其启动和关闭受TR1的控制。

7、当定时/计数器T0被设置为模式3时,怎样使T1启动运行?又怎样使其停止运行?

当定时/计数器T0被设置为模式3时,定时/计数器T1只要设置好工作方式、时间常数初值,然后用控制位C/T切换其为定时或计数功能就可以使T1运行,若想停止它的运行,只要把它的工作方式设置为方式3即可,因为定时器T1没有方式3,将它设置为方式3就使它停止工作。

8、时钟频率为12MHz。要求定时值分别为:0.1ms、1ms、10ms;定时/计数器T0分别工作在模式0、模式1、模式2,其定时初值各为多少?

方式0时,0.1ms定时的计数值为100,时间常数初值为:TH0=0FCH,TL0=1CH

方式0时,1ms定时的计数值为1000,时间常数初值为:TH0=0E0H,TL0=18H 方式0时,最长的定时时间只能到8.192ms

方式1时,0.1ms定时的计数值为100,时间常数初值为:TH0=0FFH,TL0=9CH 方式1时,1ms定时的计数值为1000,时间常数初值为:TH0=0FCH,TL0=18H 方式1时,10ms定时的计数值为10000,时间常数初值为:TH0=0D8H,TL0=0F0H 方式2时,0.1ms定时的计数值为100,时间常数初值为:TH0=9CH,TL0=9CH

方式2时,最长的定时时间只能到0.256ms

9、时钟频率为12MHz。编写程序完成从P1.0输出占空比为1:4,频率为1000Hz的脉冲波型。

1000Hz周期为1ms,则高电平持续时间为1ms/4=0.25ms=250us。用T0实现250um定时,采用工作方式2,定时时间常数为256-250=6。

从P1.0输出占空比为1:4,频率为1000Hz的脉冲波型,既P1.0持续250us的高电平,250us×3的低电平。

采用查询方式实现:

MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB TR0 JNB TF0,$ CLR TF0 CLR P1.0 MOV R0,#03H CLR TF0

LOP2: SETB P1.0

LOP1: JNB TF0,$

JMP LOP2

采用中断方式实现:

ORG 0000H LJMP MAIN ORG 000BH LJMP T0S ORG 0030H MOV TMOD,#02H MOV IE,#82H MOV R0,#03H MOV TH0,#06H MOV TL0,#06H SETB TR0 SETB P1.0 SJMP $ CLR P1.0 SJMP EXIT SETB P1.0 MOV R0,#03H

MAIN: MOV SP,#60H

T0S: JNB P1.0,T01

T01: DJNZ R0,EXIT

EXIT: RETI

10、编写程序。时钟频率为12MHz,使用T1,由P1.0、P1.1分别输出周期为500μs和2ms的方波。

用T1实现250um定时,采用工作方式2,定时时间常数为256-250=6。 P1.0每250us改变状态一次,P1.1每250us×4改变状态一次。

ORG 0000H LJMP MAIN ORG 001BH LJMP T1S ORG 0030H MOV TMOD,#20H MOV IE,#88H MOV R0,#04H MOV TH1,#06H MOV TL1,#06H SETB TR1 SETB P1.0

MAIN: MOV SP,#60H

SJMP $ DJNZ R0,EXIT CPL P1.1 MOV R0,#04H

T1S: CPL P1.0

EXIT: RETI

15、半双工通信和全双工通信的区别?

半双工是指数据传输可以沿两个方向,但需要分时进行。全双工是指数据可以同时进行双向传输。 16、使用哪个特殊功能寄存器来确定串行口的工作方式?MCS-51单片机串行口有几种工作方式?各工作方式的波特率如何确定?

SCON用来设定串行口的工作方式、接收/发送控制以及设置状态标志;MCS-51单片机串行口有4种工作方式。

方式0的波特率由振荡器的频率所确定,波特率为fosc/12; 方式2时的波特率由振荡器的频率(fosc)和SMOD位所确定,即:

fosc2SMOD

波特率

322

方式1和3时的波特率由定时器T1和T2的溢出率和SMOD所确定。

2SMOD

波特率 T1溢出率

32

17、晶振为11.059MHz,工作于方式1,波特率为1200b/s,用定时器/计数器T1作为波特率发生器,写出其方式字和计数初值。

T1工作在方式2下,其方式字为20H

2SMOD

由串行口方式1的波特率 T1溢出率 ,取SMOD=0,可计算出T1的溢出率=38400。

32

则T1的计数值为11.0592/(38400×12)=24,T1的初值为232或0E8H。

18、串行口按工作方式1进行串行数据通信。晶振为11.059MHz,波特率为4800b/s,请编写具有收发功能的串口通信程序(两种接收方式):

a、以查询方式接收数据。 b、以中断方式接收数据。

将接收数据放到30H为首的片内存储区中。 设T1工作在方式2下,其方式字为20H

2SMOD

由串行口方式1的波特率 T1溢出率 ,取SMOD=0,可计算出T1的溢出率=153600。

32

则T1的计数值为11.0592/(153600×12)=6,T1的初值为250或0FAH。

二者之间的通信约定如下:

(1) 当1号机发送时,先发送一个0E1H联络信号,2号机收到后回答一个0E2H应答信号,表示同意接收。

(2) 当1号机收到应答信号0E2H后,开始发送数据,每发送一个数据字节都计算校验和,假定数据块长度为16个字节,一个数据块发送完毕后立即发送校验和。

(3) 2号机接收数据并转存到数据缓冲区,每接收到一个数据字节便计算一次校验和,当收到一个数据块后,再接收1号机发来的校验和,并将它与2号机求出的校验和进行比较。若两者相等,说明接收正确,2号机回答00H;若两者不相等,说明接收不正确,2号机回答0FFH,请求重发。

(4) 1号机接到00H后结束发送。若收到的答复非零,则重新发送数据一次。

a、以查询方式接收数据。 1号机程序清单如下:

ASTART:MOV TMOD,#20H ;定时器1置为方式2

MOV TH1,#0FAH ;装载定时器初值,波特率4800 MOV TL1,#0FAH MOV PCON,#00H

SETB TR1 ;启动定时器

MOV SCON,#50H ;设定串口方式1,且准备接收应答信号

ALOOP1:MOV SBUF,#0E1H

;发联络信号

JNB TI,$ ;等待一帧发送完毕 CLR TI ;允许再发送

JNB RI,$ ;等待2号机的应答信号 CLR RI ;允许再接收

MOV A,SBUF ;2号机应答后,读至A XRL A,#0E2H ;判断2号机是否准备完毕 JNZ ALOOP1 ;2号机未准备好,继续联络

ALOOP2:MOV R0,#30H

;2号机准备好,设定数据块地址指针初值

MOV R7,#10H ;设定数据块长度初值 MOV R6,#00H ;清校验和单元

ALOOP3:MOV SBUF,@R0

MOV A,R6

ADD A,@R0 ;求校验和 MOV R6,A ;保存校验和 INC R0 JNB TI,$ CLR TI

;发送一个数据字节

DJNZ R7,ALOOP3 ;整个数据块是否发送完毕 MOV SBUF,R6 ;发送校验和 JNB TI,$ CLR TI

JNB RI,$ ;等待2号机的应答信号 CLR RI

MOV A,SBUF ;2号机应答,读至A

JNZ ALOOP2 ;2号机应答“错误”,转重新发送 RET ;2号机应答“正确”,返回

2号机接收程序清单如下:

BSTART:MOV TMOD,#20H

MOV TH1,#0FAH MOV TL1,#0FAH MOV PCON,#00H SETB TR1

MOV SCON,#50H ;设定串口方式1,且准备接收

BLOOP2:JNB RI,$

CLR RI

MOV A,SBUF XRL A,#0E1H JZ BLOOP1

;收到1号机信号 ;判是否为1号机联络信号 ;是1号机联络信号,准备接收数据 ;不是1号机联络信号,回送错误标志

;等待1号机的联络信号

MOV SBUF,#0FFH JNB TI,$ CLR TI SJMP BLOOP2

BLOOP1:MOV SBUF,#0E2H ;是1号机联络信号,发应答信号

JNB TI,$ CLR TI MOV R0,#30H MOV R7,#10H MOV R6,#00H

BLOOP3:JNB RI,$

CLR RI MOV A,SBUF MOV @R0,A INC R0

;接收数据转储

;设定数据块地址指针初值 ;设定数据块长度初值 ;清校验和单元

ADD A,R6 MOV R6,A

;求校验和

DJNZ R7,BLOOP3 ;判数据块是否接收完毕 JNB RI,$ CLR RI MOV A,SBUF XRL A,R6 JNZ ERROR

;比较校验和

;校验和不相等,跳至发错误标志

;完毕,接收1号机发来的校验和

MOV SBUF,#00H ;校验和相等,发正确标志 SJMP END1

ERROR:MOV SBUF,#0FFH END1:JNB TI,$

CLR TI RET

b、以中断方式接收数据。1号机程序同上。 2号机接收程序清单如下:

ORG 0000H LJMP BSTART ORG 0023H LJMP SIOS ORG 0030H

BSTART:MOV TMOD,#20H

MOV TH1,#0FAH MOV TL1,#0FAH MOV PCON,#00H SETB TR1 MOV IE,#90H

;开放CPU、串行口中断

;要求重新发送数据

MOV SCON,#50H ;设定串口方式1,且准备接收 SJMP $ ORG 0100H

SIOS: PUSH PSW

PUSH ACC MOV A,SBUF XRL A,#0E1H JZ BLOOP1

;收到1号机信号 ;判是否为1号机联络信号 ;是1号机联络信号,准备接收数据 ;不是1号机联络信号,回送错误标志

;等待中断接收中断

MOV SBUF,#0FFH

JNB TI,$ CLR TI SJMP EXIT

BLOOP1:MOV SBUF,#0E2H ;是1号机联络信号,发应答信号

JNB TI,$ CLR TI MOV R0,#30H MOV R7,#10H MOV R6,#00H

BLOOP2:JNB RI,$

CLR RI MOV A,SBUF MOV @R0,A INC R0 ADD A,R6 MOV R6,A

DJNZ R7,BLOOP2 ;判数据块是否接收完毕 JNB RI,$ CLR RI MOV A,SBUF XRL A,R6 JNZ ERROR

;比较校验和

;校验和不相等,跳至发错误标志

;完毕,接收1号机发来的校验和

;求校验和 ;接收数据转储

;设定数据块地址指针初值 ;设定数据块长度初值 ;清校验和单元

MOV SBUF,#00H ;校验和相等,发正确标志 SJMP END1

ERROR:MOV SBUF,#0FFH END1:JNB TI,$

CLR TI

EXIT: POP ACC

POP PSW RETI

20、简述中断的基本概念。

中断是指CPU正在处理某任务的过程中, 由于计算机系统内、外的某种原因,发生的某一事件请求CPU及时处理,CPU暂时中止当前的工作,自动转去处理所发生的事件。处理完该事件后,再返回到原来被中止的断点处继续工作,这样的过程称为中断。

21、MCS-51单片机可以响应几个中断源?有几个中断优先级?说出各中断源的中断矢量地址。

MCS-51单片机可以响应5个中断源,有2个中断优先级,各中断源的中断矢量地址是: INT0:0003H、T0:000BH、INT1:0013H、T1:001BH、串行口:0023H。

;要求重新发送数据

22、在执行中断服务程序后,用什么指令完成返回到中断点发生处?

在执行中断服务程序后,用RETI中断返回指令返回到中断点发生处。

23、外部中断有哪两种触发方式?对哪个特殊功能寄存器的哪个位进行设置,从而确定外部中断的触发方式?

电平触发方式和边沿触发方式两种。对TCON寄存器中的ITx置0为电平触发方式,置1为边沿触发方式。

24、说出在中断系统硬件确定的自然优先级的排列顺序(由高到低)。

自然优先级的排列顺序是:INT0、T0、INT1、T1、串行口。

25、MCS-51单片机有五个中断源,但只能设置两个中断优先级,因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能:若可能,则应如何设置中断源的中断级别:否则,请简述不可能的理由。

(1)定时器0,定时器1,外中断0,外中断1,串行口中断。

可以。T0,T1设置为高优先级,其它中断源为低优先级。IP=00001010B

(2)串行口中断,外中断0,定时器0,外中断1,定时器1。

可以。串行口设置为高优先级,其它中断源为低优先级。IP=00010000B

(3)外中断0,定时器1,外中断1,定时器0,串行口中断。

不可以。因为在同级中,T1的优先级低于INT1的优先级,因此要使T1的优先级高于INT1

的优先级,只能把T1设置为高优先级,INT1设置为低优先级,一旦INT1设置为低优先级,那么它的优先级将总是低于T0的优先级的。

(4)外中断0,外中断1,串行口中断, 定时器0,定时器1 。

可以。INT0、INT1和串行口均设置为高优先级,其它中断源为低优先级。IP=00010101B

(5)串行口中断,定时器0,外中断0,外中断1,定时器1。

可以。串行口、T0设置为高优先级,其它中断源为低优先级。IP=00010010B

(6)外中断0,外中断1,定时器0,串行口中断,定时器1 。

不可以。同级中INT1的优先级低于T0的优先级,所以只能把INT0设置为高优先级,T0为

低优先级,但这时同样为低优先级的串行口的优先级是不可能比T1的优先级高的。 (7) 外中断0,定时器1,定时器0,外中断1,串行口中断。

第5章 部分习题参考解答

第6章 1、简述单片机最小系统的构成。

使单片机能运行的最少器件构成的系统,就是最小系统。对于无ROM的单片机芯片如8031必须扩展ROM,复位、晶振电路;而对于有ROM芯片:89C51等,不必扩展ROM,只要有复位、晶振电路即可。 2、单片机系统的扩展一般包含哪几个方面的内容?

单片机系统的扩展一般包含以下几方面的内容:

可以。INT0、T1设置为高优先级,其它中断源设置为低优先级。IP=00001001B

① 外部程序存储器的扩展; ② 外部数据存储器的扩展; ③ 输入/输出接口的扩展; ④ 管理功能器件的扩展(如定时/计数器扩展、中断扩展、通信接口扩展等)。

3、系统的三总线,是指哪三总线?每组总线都是有哪些引脚组成?

系统的三总线是指根据总线中各信号线在器件连接中所起的作用不同,将这些信号线分成了三类:地址总线、数据总线和控制总线。其中:

(1)地址总线:用于实现计算机与外部器件之间地址信号的传递,一方面实现了将这些不同的外部器件分别编入了单片机的不同的外部空间单元,另一方面也能实现计算机对这些不同的空间单元访问时形成对这些器件的寻址。

(2)数据总线:用于实现计算机与外部器件之间的数据信号的传递。 (3)控制总线:用于实现计算机与外部器件之间的控制信号的传递。 对于MCS-51系列单片机, 其三总线由下列通道口的引脚组成:

地址总线由两部分组成, P2口提供地址总线的高8位, P0口分时提供地址总线的低8位。数据总线由P0口提供。 控制总线有ALE、PSEN、EA、以及P3 口提供扩展系统时的控制RD、WR信号等。 4、MCS-51单片机的P0口为什么要连接8位锁存器?

当单片机系统有外扩的存储器或I/O端口时,P0口分时复用为低8位地址和数据总线,所以P0口提供的低8位地址需要外部电路进行锁存。

5、用P0、P2作为地址线,选11位地址线时,寻址范围?选13位地址线时,寻址范围?选16位地址线时,寻址范围?

选16位地址线中的低11位地址线时,其寻址范围是2=2KB;选低13位地址线时,其寻址范围13

是2=8KB;选16位地址线时,其寻址范

6、画出含锁存器(74LS373)的MCS-51最小系统围是2=64KB。 连线电路图。

1611

7、设计并画出MCS-51扩展一片并口I/O 8255A和一片数存6264的系统连线图,采用译码法选址(译码器74LS138)。 要求:(1) 写出访问6264的地址。

(2)写出访问 8255A的地址,并写出8255A 控制字寄存器地址和A、B、C扩展口寄存器地址。

(3)试编写将读出的A口数据写到B口的实例程序(数据放在1000H起始的地址)。

(1) 访问6264的地址为0000H-1FFFH。

(2) 访问8255A的地址为2000H-3FFFH,8255A最低的地址为:控制字寄存器2003H,A、B、C口寄存器地址为2000H、2001H、2002H。 (3) 设A、B口工作方式0,A口输入,B口输出,C口输出(本题不用),则方式控制字为10010000B=90H

MOV A,#90H

MOV P2,#20H MOV R0,#03H MOVX @R0,A MOV R0,#00H MOVX A,@R0 MOV R0,#01H MOVX @R0,A

;写B口

;读A口

;写8255A方式控制字

;P2口提供访问8255A地址的高8位

MOV DPTR,#1000H MOVX @DPTR,A ......

;保存数据到1000H

本文来源:https://www.bwwdw.com/article/08dq.html

Top