高职《单片机原理及应用技术》练习题 下载本文

《单片机原理及应用技术》思考题

1 单片机概述

1-1.单片机与PC机有何区别?它的特点是什么? 1-2.MCS-51系列单片机与AT89系列单片机有什么相同和差异? 1-3.单片机的主要技术指标有哪些?这些指标的作用如何?

1-4.对于一个具体的单片机应用系统,选择单片机的原则是什么? 1-5.举一个单片机的应用例子,并画出原理框图,说明工作过程。 1-6.单片机I/0端口数目的多少反映了什么。

2 单片机结构和原理

2-1 8051单片机内部包含那些主要逻辑功能部件? 2-2 8051的EA端有何用途?

2-3 8051单片机存储器的组织结构是怎样的? 2-4 8051如何确定和改变当前工作寄存器组?

2-5 8051单片机有哪几个特殊功能寄存器?可位寻址的SFR有几个? 2-6 (SP)=30H 指什么?

2-7 ALE信号有何功用?一般情况下它与机器周期的关系如何?在什么条件下ALE信号可用作外部设备的定时信号。

2-8 有那几种方法能使单片机复位?复位后各寄存器的状态如何?复位对内部RAM有何影响?

2-9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?

2-10 位地址7CH与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置?

3 指令系统

3-1 MCS-51指令系统主要有哪几种寻址方式?试举例说明。

3-2 设A=0FH,R0=30H,内部RAM的(30H)=0AH、(31H)=0BH、(32H)=0CH,请指出在执行下列程序段后上述各单元内容的变化。

MOV A,@R0 MOV @R0,32H

MOV 32H,A MOV R0,#31H

M0V A,@R0

3-3请用数据传送指令来实现下列要求的数据传送。 (1)R0的内容传送到R1。

(2)内部RAM 20H单元的内容传送到A中。

(3)外部RAM 30H单元的内容送R0

(4)外部RAM 30H单元内容送内部RAM 20H单元 (5)外部RAM 1000H 单元内容送内部RAM 20H单元 (6)程序存储器ROM 2000H单元内容送R1

(7)RAM 2000H单元内容送内部RAM 20H单元。 (8)RAM 2000H单元内容送外部RAM 30H单元。

(9)RAM 2000H单元内容送外部RAM 1000H单元。 3-4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行以指令后,各有关存储单元(即R0,R1,A,B,P1,40H,30H,及5AH单元)的内容如何?

MOV R0,#30H MOV A,@R0 MOV R1,A

MOV @R1,P1 MOV A,P1

MOV 40H,#20H

MOV 30H,40H

3-5 试编写程序,将内部RAM的20H~2FH共16个连续单元清零。

3-6 试编写程序,求出内部RAM 20H单元中的数据含“1”的个数,并将结果存入21单元。 3-7试编写程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并查找的结果存入51H单元。

3-8试编写程序,计算Σ2i,并将结果存放在内部RAM的30H单元。 3-9在8051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。

MOV A,40H

MOV R0,A MOV P1,#0F0H MOV @R0,30H MOV DPTR,#3848H MOV 40H,38H MOV R0,30H MOV P0,R0 MOV 18H,#30H MOV A,@R0

MOV P2,P1

3-10设R0的内容为32H,A的内容为48H,片内RAM的32H单元内容为80H,40H单元的内容为08H。请指出在执行下列程序段后上述各单元内容的变化。

MOV A,@R0 MOV @R0,40H MOV 40H,A MOV R0,#35H

3-11已知(A)=83H,(R0)=17H,(17H)=34H。请写执行完下列程序段后A的内容。

ANL A,#17H ORL 17H,A

XRL A,@R0

CPL A

3-12编程实现将内部RAM 20H~2FH中的数据和RAM 30H~3FH中的数据对换。 3-13已知(A)=34H,(30H)=4FH,求:执行ADD A,30H后,(A)=?指出PSW中相应标志位情况。

3-14已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行“RET”指令以后,SP=?PC=?

3-15若SP=25H,PC=2345H,标号LABEL所在的地址为3456H。问执行长调用指令“LCALL LABEL”后,堆栈指针和堆栈的内容发生什么变化?PC的值等于什么?

4 汇编语言程序设计举例

4.1 从内部RAM的30H单元开始存放一组用补码表示的带符号数,其数目已存放在20H单元。编写程序统计出其中正数、0和负数的数目,并将结果分别存入21H、22H、23H单元。

4.2 内部RAM中有一数据块,存放在20H-2FH单元中。要求对这些数据进行奇偶校验,凡是满足奇偶校验的数据(1的个数为偶数)都要转存到外部RAM8000H开始的数据区中。试编写有关程序。

4.3 编写程序,把外部RAM1000H-10FFH区域内的数据逐个搬到从2000H单元开始的区域。

4.4 从内部RAM的30H单元开始存放着一组无符号数,其数目存放在21H单元中。试编写程序,求出这组无符号数中的最小的数,并将其存入20H单元。

4.5 设计一个循环系统,如图3-11所示。单片机的P1口并行输出驱动8个 光二级管。试编写程序,使这些发光二级管每次只点亮一个,循环左移或右移,一个接一个地亮,循环不止。

4.6 设计一段程序实现如下功能:把片内RAM30H-3FH单元中的16个数的存放顺序颠倒过来。

4.7 设计一段程序实现如下功能:找出从片内RAM30H开始的16个单元中最小值所在的单元,并将该单元的内容改成0FFH。

4.8 编写一段程序实现逻辑运算:P1.7=P1.6(P1.5⊕P1.4)。 4.9 设计一段程序实现如下功能:统计出从片内RAM30H开始的16个单元中有多少数大于40小于80,并把结果存入40H单元中。

5中断系统

5.1 设计一个能将十六进制数转换成ASCII码的子程序,使命名为HEXASC;用此子程序将(RO)中的两位十六进制数转换成ASCII码并分别存入R1(高位)和R2(低位)

5.2 8051单片机提供了几个中断源?有几级中断优先级别?各中断标志是如何产生的又如何清除这些中断标志?各中断源所对应的中断矢量地址是多少?

5.3 试分析以下几种中断优先级的排列顺序(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。

(1) 定时器T0溢出中断,定时T1溢出中断,外中断1NT0,外中断不NT1,串行口中断

(2)串行口中断,外中断1NT0,定时器T0溢出中断,外中断INT1,定时器T1溢出中断;

(3) 外中断INT0,定时器T1溢出中断,外中断INT1,定时器T0溢出中断,串行口中断;

(4) 外中断INT0,外中断INT1,串行口中断,定时器T0溢出中断,定时器T1溢出中断;

(5) 串行口中断,定时器T0溢出中断,外中断INT0,外中断INT1,定时器T1溢出中断;

(6) 外中断INT0,外中断INT1,定时器T0溢出中断,串行口中断,外中断INT1,串行口中断。

5.4 外部中断有几种触发方式?如何选择?在何种触发方式下,需要在外部设置中断请求触发器?为什么?

5.5 MCS-51中断响应时间是否固定?为什么?

5.6 MCS-51 中若要扩充6个中断源泉,可采用哪些方法?如何确定它们的优先级? 5.7 试用中断技术设计一发光二级管LED闪烁电路,闪烁周期为2秒,要求亮1秒再暗1秒。

5.8 试用中断方法设计秒、分脉冲发生器,即由8031的P1.0每秒产生一个机器周期的正脉冲,由P1.1每分钟产生一个机器周期的正脉冲。

6 定时/计数器

6.1 定时器T0和T1各有几种工作方式?简述之。

6.2 已知单片机系统时钟频率fOSC=12MHz,若要求定时值分别为0.1ms,1ms和10ms,定时器T0工作在方式0,方式1和方式3时,定时器对应的初值各为多少?

6.3 定时器/计数器0已预置为156,切选定用于方式2的计数方式,现在T0引脚上输入周期为1ms的脉冲,问:

此时定时器/计数器0的实际用途是什么? 在什么情况下,定时器/计数器0溢出?

6.4 设系统时钟为6MHz,利用T0和P1.0产生连续矩形波,高电平宽度为50μs,低电平宽度为300μs。

6.5 利用定时器来测量单次正脉冲宽度,采用何种工作方式可获得最大的量程?设fosc=6MHz,求允许测量的最大脉冲宽度是多少?

6.6 试编制一段程序,其功能为: 当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时停止计数,并将计数值写入R6与R7。

6.7 已知单片机系统时钟频率fosc=6MHz,试编写程序,使P1.0输出如下的矩形脉冲(建议用定时器工作方式2)。

7 串行通信