《单片机原理及应用技术》思考题
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 串行通信