单片机课后题标准标准答案doc.docx
- 文档编号:24932731
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:34
- 大小:30.15KB
单片机课后题标准标准答案doc.docx
《单片机课后题标准标准答案doc.docx》由会员分享,可在线阅读,更多相关《单片机课后题标准标准答案doc.docx(34页珍藏版)》请在冰豆网上搜索。
单片机课后题标准标准答案doc
2-1.8051单片机芯片内部包含哪些主要逻辑功能部
辑运算等操作,128位的位地址定义为00H~7FH。
件?
(2)片内RAM高128字节的存储器区,有
21个特殊功能寄
答:
一个8位微处理器(CPU);片内数据存储器RAM;
存器。
其中字节地址正好能被
8整除的字节单元中的每一
片内程序存储器ROM;四个8位并行I/O口P0~P3;两个
位都可以按位寻址、操作。
142-5.
8051的P0~P3口有
定时器/计数器;五个中断源的中断控制系统;一个
何不同,用作通用I/O口输入数据时应注意什么?
UART(通用异步接收发送器)的串行
I/O口;片内振
答:
P0~P3口功能不完全相同。
荡器和时钟产生电路。
(1)访问外扩展存储器时,
P2口送出16位地址的高8位
2-2、8051存储器分哪几个地址空间?
如何区别不同
地址,P0口先送出16位地址的低
8位地址,再做数据的输
空间寻址?
入/输出通道。
答:
⑴片内、外统一编址的64KB程序存储器;⑵片
(2)在无片外扩展存储器的系统中,
P0、P2口不需要
内256B数据存储器;⑶片外64KB数据存储器。
做地址口时,和P1、P3口一样,都可作为准双向通用I/O
硬件:
引脚接高电平时CPU从片内0000H单元开始取指
口使用。
P0的输出级无上拉电阻,
在作为通用I/O口时需
令,接低电平时CPU直接访问片外EPROM。
EA
外接上拉电阻,且P0口的每一位输出可驱动
8个TTL负载,
软件:
MOV指令访问片内数据存储器,
MOVX指令访
而P0~P3口的输出级接有上拉负载电阻,
每一位输出可驱
问片外数据存储器,MOVC指令用于读取程序存储器中
动4个TTL负载。
的常数。
在作通用I/O输入数据时应注意:
应先对相应的端口锁存
2-3.简述8051片内RAM的空间分配。
器写1,防止误读。
答:
低128B位数据存储器区分为:
工作寄存器区
2-6.8051单片机引脚有何功能?
在使用
8031时,引脚应
(00H~1FH);位寻址区(20H~2FH);一般数据存储区
如何处理?
EAEA
(30H~7FH)
答:
引脚为外部程序存储器地址允许输入端,其电平的
高128B数据存储器区离散地分布着
21个特殊功能寄
高低决定了系统复位后
CPU是从片内程序存储器还是片
存器
外扩展存储器的0000H字节单元开始取指令。
EA
2-4.简述直接位寻址区的空间分配,
片内RAM中包含
(1)当引脚接成高电平时,
CPU首先从片内0000H字节
哪些可位寻址单元?
单元开始取指令执行程序,当指令地址寄存器
PC中的内
答:
MCS-51单片机片内RAM中有两个区域可进行位寻
容超过0FFFH后,就自动转向片外扩展的
EPROM中取指令
址:
执行,这时芯片外部的重叠地址为
0000H~0FFFH的低4KB
(1)片内RAM低128字节的位寻址区,地址为20H~2FH
EPROM忽略不用。
EA
的16个字节单元共128位,每一位都有相应的位地址,
(2)当引脚接成低电平时,复位后CPU直接从片外EPROM
可用位寻址方式对其进行置位、复位、内容传送、逻
的0000H字节单元开始取指令执行,这时芯片内部
0000H~0FFFH的4KB单元被忽略不用。
EA
在使用8031时,由于其内部没有ROM/EPROM,所以必
须使用外部扩展程序存储器,它的引脚应该接成低电
平,CPU直接从片外扩展的EPROM中取指令执行。
EA
2-7.8051单片机有哪些信号需要芯片以第二功能的
方式提供?
答:
(1)VPD(9脚):
片内RAM备用电源的输入端。
(2)(30脚):
对于片内带有可编程序存储器的芯片,作为编程写入的编程脉冲输入端,把编写好的程序指令代码存入程序存储器中。
PROG
(3)VPP(31脚):
对于片内有EPROM的芯片固化程序时,它作为是加高编程电压的输入端。
(4)RXD(10脚):
串行口通信数据输入线。
(5)TXD(11脚):
串行口通信数据输出线。
(6)(12脚):
外部中断0输入信号。
INT0
(7)(13脚):
外部中断1输出信号。
INT1
(8)T0(14脚):
定时器0的脉冲信号外部输入。
(9)T1(15脚):
定时器1的脉冲信号外部输入。
15
(10)(16脚):
CPU至片外数据存储器的“写选通控制”输出。
WR
(11)(17脚):
CPU至片外数据存储器的“读选通控制”输出。
RD
2-8.内RAM低128B单元划分为哪三个主要区域?
各
区域主要功能是什么?
答:
地址范围为00H~7FH的128字节单元,按功能特点
划分为不同的几个区,分述如下。
(1)工作寄存器区地址范围为00H~1FH的32字节存储器单元,分为四个组,每组有8个工作寄存器字节
单元,定名为R0、R1、R2、R3、R4、R5、R6和R7。
通过
改变程序状态字特殊功能寄存器PSW中RS1,RS0两位的内
容,每组工作寄存器均可选作CPU的当前工作寄存器组。
(2)位寻址区地址为20H~2FH的16个字节单元中共128
位,每一位都有相应的位地址,可用位寻址方式对其进
行置位、复位、内容传送、逻辑运算等操作。
(3)一般数据存储区地址范围为30H~7FH的区域,可用
于原始数据及运算结果的存储。
值得注意的是,30H~7FH
中一部分字节单元可以开辟出一块遵守“后进先出”或
“先进后出”规则的特殊数据区──堆栈。
2-9.单片机系统复位有哪几种方法?
复位后特殊功能
寄存器初始状态如何?
答:
使单片机系统复位有两种方法:
上电自动复位和按
键手动复位
系统复位的主要功能就是把PC初始化为0000H,使单片机
从0000H单元开始执行程序,另外,系统复位还使一些特殊功能寄存器恢复到复位状态。
PC:
0000HACC:
00HPSW:
00H
SP:
07HDPTR:
0000HP0~P3:
FFH
IP:
**000000BIE:
0*000000BTMOD:
00H
TCON:
00HTL0:
00HTH0:
00H
TL1:
00HTH1:
00HSCON:
00H
SBUF:
不定PCON:
0***0000B
2-10.开机复位后,CPU使用那组工作寄存器作为当前工
作寄存器?
它们的地址是什么?
答:
开机复位后,由于(RS1=0,RS0=0),CPU使用第0组
工作寄存器作为当前工作寄存器,它的地址为00H~07H.
2-11.CPU如何确定和改变当前工作寄存器组?
答:
通过改变程序状态字特殊功能寄存器PSW中规则的特殊数据区,就叫堆栈。
RS1,RS0两位的内容,每组工作寄存器均可被选作当
SP为堆栈指针,它始终存放堆栈顶部字节单元的地址
(栈
前工作寄存器。
顶指针),数据压栈时,SP首先自动加1,然后数据压入
RS1RS0当前工作寄存器
SP内容指示的字节单元中;而数据出栈时,
SP内容指示
00第0组01第1组16
10第2组1
1第
的字节单元中的数据弹出,然后
SP自动减1,这样SP始终
3组
指向堆栈顶部字节单元的地址。
2-13.位寻址与字节单元地址
7CH如何区别?
位地址
8051单片机堆栈容量最多不能超过
128字节。
初始化后,
7CH、具体在片内RAM的什么位置?
(SP)=07H,如果CPU使用工作寄存器1组,那么堆栈和
答:
8051采用不同的寻址方式和指令分别对位和字节
工作寄存器将发生冲突,因此常把堆栈移至
30~7FH区域
进行不同的操作,如SETB20H指的是20H位单元的内
之中。
容置为1,而MOV20H,#0FFH指的是内RAM20H字节单元
2-17.
分析原教材中说明图
2-16系统中各信号线的作
的内容变为FFH。
用。
位地址7CH在内RAM低128字节的2FH字节单元的第四
答:
P1口用作一般I/O口,,,通过光电隔离电路向三相步
位。
进电机的功率放大电路顺序地发出步进脉冲信号;和作
2-14.8051单片机时钟周期与振荡周期之间有什么
为输入,检测控制步进电机的正反转的按键状态;
XTAL1
关系?
和XTAL2接外部时钟电路,为系统提供振荡时钟;
P0口分
答:
8051单片机的时钟周期为振荡周期的两倍。
时用作地址/数据总线,取指令时输出低
8位地址,经地
2-15.一个机器周期的时序是怎样划分的?
址锁存器74LS373锁存,其它时间P0口用作数据总线输出
答:
MCS-51系列单片机工作的一个机器周期由
6个S状
8位数据;高5位地址由~提供;ALE作为地址输出锁存控
态周期组成,即S1~S6,每个状态又持续两个振荡周
制端;接地,CPU直接从外扩EPROM中取指令执行;为程
期,即P1和P2两拍,故一个机器周期包括
12个振荡周
序存储器输出允许控制端,在
CPU读取EPROM中数据时,
期。
一个机器周
期具
体
分为
PSEN
EA
17
S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,
使EPROM输出指令。
S5P2,S6P1,S6P2共12状态拍。
若采用12MHZ晶体振荡
3-1
什么是寻址方式?
MCS-51单片机有哪几种寻址方
器,则每个机器周期恰为1μs。
式?
对8031内部RAM的128~255字节地址的空间寻址要注
2-16.什么叫堆栈?
堆栈指针
SP的作用是什么?
意什么?
8051单片机堆栈容量不能超过多少字节?
答:
寻址方式是如何找到存放被操作数据的位置
(地址)
答:
一般在30H~7FH的地址范围内,有一部分字节单
的方法;MCS-51单片机有七种寻址方式:
寄存器寻址、
元可开辟出一块遵守“后进先出”或“先进后出”直接寻址、立即数寻址、寄存器间接寻址、变址间接寻
址、相对寻址和位寻址;8031内部RAM的128~255字节
为特殊功能寄存器区,只允许使用直接寻址方式。
3-6若要完成以下数据传送,如何应用MCS-51指令予
以实现?
(1)R1的内容传送到R0:
MOVA,R1
MOVR0,A
(2)外部RAM20H单元的内容送入R0:
MOVR1,#20H
MOVXA,@R1
MOVR0,A
(1)外部RAM0020H单元的内容送内部RAM20H单元:
MOVR0,#20H
MOVXA,@R0
MOV20H,A
(2)外部RAM1000H单元内容送内部RAM20H单元:
MOVDPTR,#1000H
MOVXA,@DPTR31MOV20H,A
(3)外部ROM2000H单元内容送R0:
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVR0,A
(4)外部ROM2000H单元内容送内部RAM20H单元:
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOV20H,A
(5)外部ROM2000H单元内容送外部RAM0020H单元:
MOVA,#00H
MOVR0,#20H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVX@R0,A
3-8已知SP=25H,PC=2345H,标号LABEL所在的地址为
3456H,问执行长调用指令LCALLLABEL后,堆栈指针和
堆栈的内容发生什么变化?
PC值等于什么?
答:
(SP)=27H,(26H)=48H,(27H)=23H;(PC)=3456H
3-9上题中的LCALL指令能否直接换成ACALL指令,为什
么?
如果使用ACALL指令,则可调用的地址范围是什么?
答:
不能,因为LABEL所在地址3456H与PC不在同一2KB
范围内,即高5位地址不同。
若要使用ACALL指令,可调
用的地址范围是2000H~27FFH。
3-10有一个16位二进制数,高8位存于21H单元,低8位
存于20H单元。
执行如下程序段,试问:
⑴程序段功能是什么?
⑵能否用MOV代替程序段中的XCH语句而不改变程序的
逻辑功能?
写出相应程序段。
⑶两个程序段结果是否相同?
差别在哪里?
CLRC
XCHA,21H
RRCA
MOVA,#00HXCHA,21H32
XCHA,20H
转移范围是2KB,所以在程序中SJMP指令都可以用AJMP
RRCA
指令来代替。
”请问这种说法是否正确,为什么?
XCHA,20H
答:
不正确。
AJMP转移的目标地址必须在
AJMP后面指令
答:
(1)程序段的功能是将此
16位二进制数除2后
的第一个字节开始的同一
2KB范围内,不能改变高
5位地
取整
址,因此,即使相邻很近的两个地址,只要它的高
5位发
(2)能用MOV代替程序段中的
XCH语句而不改变程序
生改变,就不能跳转。
而
SJMP可以通过几次跳转,最终
的逻辑功能,如下:
到任意目标地址。
CLRC
3-13使用位操作指令实现下列逻辑操作,
要求不更改单
MOVA,21H
元其他位的内容。
RRCA
解:
(1)使置1:
SETB
MOV21H,A
(2)清除累加器的高四位:
ANLA,#0FH
MOVA,20H
或CLR
RRCA
CLR
MOV20H,A
CLR
两个程序段结果不相同。
原程序执行后
A的内容为程
CLR
序运行前A中内容,即
(3)清除,,,:
此程序没有改变A中内容;MOV语句程序中A的内容为
ANLA,#87H
原20H单元内容右移一位后的内容。
或CLR
3-11分析以下程序段运行的结果。
若将DAA指令取
CLR
消,则结果会有什么不同?
CLR
CLRC
CLR
MOV20H,#99H
3-14将片内RAM中0FH单元的内容传送到寄存器B,对
MOVA,20H
0FH单元的寻址可有三种方法:
R寻址、R间址、Direct
ADDA,#01H
寻址。
请分别编出相应的程序,比较其字节数、机器周
DAA
期和优缺点。
MOV20H,A
答:
R寻址:
MOVR0,0FH;2字节,双周期
答:
结果为(20H)=00H,CY=1。
若取消DAA指令,(20H)
MOV0F0H,R0;2字节,双周期
=9AH,CY=0。
R间址:
MOVR0,#0FH;2字节,单周期
3-12由于SJMP指令的转移范围是256B,而AJMP指令
MOV0F0H,@R0;2字节,双周期
CLRA
Direct寻址:
MOVA,#0FH;2字节,单周期
ADDCA,#00H
MOV0F0H,A;2字节,单周期
MOV52H,A
3-15怎样把位40H的内容移至
30H位?
编写多字节十进制(BCD码)减法程序段:
答:
MOVC,40H
设被减数低字节地址存R0中,减数低字节地址存R1中,
MOV30H,C
字节数存R3中。
相减的结果依次存于原被减数单元。
3-16编写一段程序,模拟如图3-1所示逻辑电路的逻
START:
SETBC
辑功能。
要求将4个输入与非门的功能模拟先写成一
SUBA:
CLRA
个子程序,然后多次调用得到整个电路的功能模拟。
ADDCA,#99H;加99
设X,Y,Z、W和F都已定义为位地址,若程序中还需
SUBBA,@R1;减去减数
要其它位地址,也可另行定义。
ADDA,@R0;作加法,加上被加数
提示:
首先用伪指令定义X,Y,Z,W
,F是单片机引
DAA;十进制调整
脚端口位,然后再编程,注意
34
MOV@R0,A;存入对应的被减数单元
操作对象是位单元,应该使用位逻辑指令。
INCR0;指向下一个字节单元
4-1两个4位BCD码数相加求和。
设被加数存于内部
INCR1
RAM的40H、41H单元,加数存于
45H、46H单元,要求
DJNZR3,SUBA;若(R3)一1≠0,继续作减法
和数存于50H、51H单元(均前者为低二位,后者为高
RET
二位)。
请编制加法程序段。
若进行
BCD码减法运算,
注意:
80C51中的十进制调整指令
(DAA)只能用于二进制
应如何考虑。
加法指令之后,不能用于二进制减法结果的调整。
进行
解:
程序如下:
十进制(BCD码)减法只能采用先求减数的十进制补码,
然
CLRC
后把结果与被减数相加。
MOVA,40H
如果被减数为A,减数为B,十进制的位数为n,则A-B=
ADDA,45H
A+B=A+10-B=A+9⋯9+1-B=9⋯9+1-B+A
bu
n
DAA
式中:
9⋯9的个数为n。
MOV50H,A
4-2试编写程序,查找在内部
RAM20H-50H单元中出现
MOVA,41H
00H的次数,并将查找的结果存入
51H单元。
ADDCA,46H
解:
程序如下:
DAA
MOVR0,#20H
MOV51H,A
MOVR7,#31H
MOV51H,#00H
LOOP1:
CJNE@R0,#00H,LOOP
INC51H
LOOP:
INCR0
DJNZR7,LOOP1
HERE:
SJMPHERE
4-3晶振频率为12MHz,请用循环转移指令编制延时
20ms的延时子程序。
解:
一个机器周期为1us,延时20ms需要机器周期数
20000us/1us=20000
延时程序如下:
MOVR5,#T1;1个机器周期
LOOP2:
MOVR4,#T2;T1个机器周期
LOOP1:
NOP;T1*T2个机器周期
NOP;T1*T2个机器周期
DJNZR4,LOOP1;2*T1*T2个机器周期
DJNZR5,LOOP2;2*T1个机器周期
RET;1个机器周期
总计时:
1+3×T1+4×T1×T2+1=20000
则:
T1=202=0CAH,T2=24=18H(答案不唯一,T1与T2
的值≤255)
4-4已知两个八位无符号数a、b存放在BUF和BUF+1
单元,编写程序计算5a+b,结果可能大于8位,仍放
回BUF和BUF+1单元(BUF+1单元为高字节)。
解:
根据题意,编写程序如下:
MOVA,BUF
MOVB,#05H
MULAB
ADDA,BUF+1
MOVBUF,A
MOVA,B
ADDCA,#00H
MOVBUF+1,A
4-5外部数据RAM从2000H到2100H有—个数据块,现要将
它们传送到从3000H到3100H的区域,试编写有关程序。
方法1:
MOVP2,#20H
MOVR0,#00H
MOVR2,#00H
LOOP:
MOVXA,@R0;P2口即高八位地址
SETB;20H→30H
MOVX@R0,A
CLR;30H→20H
INCR0
DJNZR2,LOOP
MOVDPTR,#2100H
MOVXA,@DPTR
MOVDPTR,#3100H
MOVX@DPTR,A
方法2MOVDPTR,#3000H
PUSHDPL
PUSH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课后 标准 标准答案 doc