单片机习题答案Word文档格式.docx
《单片机习题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机习题答案Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
微机系统ucs除包括微机uC硬件之外,还包含系统软件和应用软件。
2、主要有三点不同:
一是CPU、存储器和I/O接口这几部分集成在一片芯片上;
二是存储器设计采用了哈佛结构,将程序存储器和数据存储器在物理上分开;
三是供位处理和位控制的资源丰富、I/O接口完善。
优点:
①集成度高、价格低廉,性能/价格比高;
②程序存储器和数据存储器在物理上分开,可使程序不受干扰,抗干扰能力强;
③布尔处理能力强,适于工业控制。
3、堆栈区与一般存储区相同之处是:
它们都属于存储器的一部分,都能存放数据。
其主要不同之处是对数据的存取规则有异:
一般存储区使用随机读/写规则,而堆栈使用先进后出(或后进先出)规则。
堆栈采用这种特殊规则后,可以圆满完成子程序调用或中断调用,多级子程序嵌套等功能。
当然,堆栈区内的存储单元也可以使用随机读/写指令,但在那种情况下已经不把该单元当做堆栈看待了。
4、这要看程序中用到的是哪两组通用寄存器。
如果是第0~1组,即要占用片内RAM的00H~0FH单元,那么就要将上电或复位时自动生成的SP=07H的状态,用指令改设为0FH。
若程序中用到的是第2~3组,则SP应被改设为1FH。
习题二
答案
指令类型
字节数
指令类型
MOVCA,@A+DPTR
1
MOVdir,#data
3
MOVX@R0,A
CLRbit
2
SETBC
MOVA,#data
MOVRn,A
PUSHdirect
INCDPTR
MOVdir1,dir2
一、填空题
1、操作码、操作数或操作数地址;
2、指令、数据;
3、寄存器间接;
4、4、0、AAH;
5、如下表:
6、A=④、B=③、C=③、D=①、E=⑤
7、A=③、B=②、C=②、D=①、E=③
二、判断下列指令是否合乎规定,且说明理由
1、×
,通用寄存器间不能互传。
2、×
,指令系统中没有提供这条指令。
3、√。
4、×
,CPL对字节类地址的操作只允许A。
5、×
,循环移位只能对A操作。
6、×
,这种间接寻址方式只允许用R0或R1。
7、√。
8、×
,16位数据无法一次送入堆栈。
9、×
,PC是不可寻址的SFR。
10、√。
11、√。
12、√。
13、×
,普通位地址内容不能互传。
14、√。
三、简答题
1、指令是控制计算机进行某种操作的命令;
指令系统是指一台计算机中所有指令的集合。
2、5种寻址方式举例如下:
立即寻址:
MOVA,#20H
直接寻址:
MOVA,20H
寄存器寻址:
MOVA,R0
寄存器间接寻址:
MOVXA,@DPTR
变址寻址:
MOVCA,@A+DPTR
3、MOVX和MOVC指令的相同之处;
都是数据传送类指令。
不同之处:
MOVX是在A累加器与片外数据存储器之间双向传送数据的指令;
而MOVC则是将程序存储器中内容读入A累加器的指令。
四、阅读并分析程序
1、A=6EH(30H)=EEH
2、(40H)=5EH、(41H)=69H
3、A=25H、R0=50H、(50H)=00H、(51H)=25H
4、(61H)=24H、(62H)=10H、(30H)=00H、(31H)=FFH、DP、TR=2410H、SP=60H
5、A=25H、R1=40H、(40H)=03H
五、简单编程
1、方法1:
用交换指令
MOVA,#0FH
XCHA,45H
方法2:
用传送指令
MOV45H;
#0FH
2、设7001H单元放置的是高位数据,7002H单元放置的是低位数据,两个原始数据都不超过0FH。
则程序段如下:
MOVDPTR,#7001H
MOVXA,@DPTR
SWAPA
INCDPTR
ORLA,B
MOVX@DPTR,A
习题三
一、简答题
1、没有这样的指令。
但实现“程序结束”至少可以借助4种办法:
①用原地踏步指令SJMP$死循环。
②在最后一条指令后面设断点,用断点执行方式运行程序。
③用单步方式执行程序。
④在末条指令之后附加一条LJMP监控显示器程序首地址或LJMP0000H,返回监控状态。
2、它们都是程序无条件转移指令,其结果都是改变了PC的内容;
但它们寻址过程和应用场合却有所区别:
①LJMP指令是直接将指令中的16位地址数据送入PC,可在64KB程序存储空间内随意转移(转移范围为64KB)。
②AJMP指令是将指令中包含的11位地址数据送入PC的低11位,可在该指令附近的当前2KB程序存储空间内转移。
③SJMP指令是将指令中的8位数据与PC值相加后再送入PC,转移范围小,只能在该指令的前128字节和后127字节内转移(以该指令后一条指令为参照点)。
④JMP@A+DPTR指令是将A内容与DPTR内容右对齐相加后,再送入PC中,与LJMP相似,也可以转移64KB的程序空间。
在选用时,凡转移地址超过当前地址2KB的,只能用LJMP指令;
凡转移地址在当前地址—128—+127字节之间的,可以选用SJMP指令,其余范围可选取用AJMP指令。
如果要实现“条件不同,则转移地址不同”的功能,用JMP@A+DPTR指令将是最佳选择。
二、阅读并分析程序
1、①(40H)=78H。
②该子程序的功能是对③(40H)内的单字节符号数求补码。
注:
若只说出是“先取反而后加1”,但无法归纳为对符号数求补码时,扣一半分。
2、(20H)=20H、(21H)=00H、(22H)=17H、(23H)=01H、Cy=1、A=17H、R0=23H、R1=28H。
3、ADDA,#0F4H
↓JBOV,GOE
;
无溢出,不转移
↓JNBACC.7,GOP
ACC.7=1,不转移
↓CPLA
↓INCA
↓SETB20H.0
↓
RET
GOP:
CLR20H.0
GOE:
MOVA,#0FFH
RETZ
程序执行后:
A=02H、20H.0=1
4、A=80H、SP=40H、(41H)=50H、(42H)=80H、PC=8050H。
5、SP=40H、a=30H、b=30H。
6、机器码填空为:
FC和F8
时间计算:
1个机器周期在12MHZ晶振下的时间是1us.
程序总机器周期数=1+{1+(2+2)×
255+2}×
15}+2=15348所以该程序执行时间为15.438ms。
三、编写程序
用DPTR作为地址指针
MOVDPTR,#7000H
CLRA
MOVR0,A
LOOP:
MOVX@DPTR,A
INCDPTR
DJNZR0,LOOP;
还可以用GJNEA,DPL,LOOP(因为A=0)
SJMP
$
P2预先锁存高8位地址,用R0作为地址指针
MOVP2,#70H
CLRA
MOVR0,A
MOVX@R0,A
DJNZR0,LOOP
SJMP
2、
PUSH6FH
;
保护现场
PUSHPSW
MOV6FH,#4
;
从高向低右移4次计数器
MOVC,ACC.0;
C被A的最低位刷新,送入高8位的最高位
XCHA,B
高低8位寄存器互换
RRCA
高8位先右移,最低拉进入C中
高低8位寄存器还原
低8位右移,C补进最高位
DJNZ6FH,LOOP
若右移不足4次,继续循环移位
POPPSW
恢复现场
POP6FH
RET
3、方法1
程序中用到的有关寄存器含义如下:
R0存放数据块的地址指针,R2存放每轮比较次数,R3是每轮中的比较次数计数器。
F0=PSW、4作为有无交换的标志位。
CLRF0
MOVR2,#0AH
LOOP2:
MOVR0,#50H
MOV03H,02H
即R3←R2
LOOP1:
MOVA,@R0
INCR0
CJNEA,B,$+3
JCNEXT
MOV@R0,A
DECR0
SETBF0
EXT:
DJNZR3,LOOP1
JNBF0,DONE
CLRR0
DJNZR2,LOOP2
DONE:
SJMP$
方法2
CLRF0
清交换标志
MOVR7,#9
设置外循环计数器
OUTSID:
MOVR0,#50H
R0指向数据区
MOVR6,07H
INSIDE:
MOVA,@R0
取一数据到A
INCR0
MOVB,@R0
取下一步单元数据到B
CJNEA,B,$+3
A≥@R0?
JCNEXCHG
小于不交换
XCHA,@R0
大于交换
SETBF0
置交换标志
NEXCHG:
DJNZR6,INSIDE
内循环结束?
DECR7
下次的内循环少一次
JBCF0,OUTSID
交换发生继续外循环,并清交换标志
SJMP$
未交换结束循
习题四
1、A=④、B=③、C=⑦。
2、3。
3、5,外部中断0、定时器0、外部中断1、定时器1和串行口;
外部中断1、定时器1。
4、源允许、总允许。
5、电平、边沿。
6、2、16、4。
7、1000、500。
8、0、1。
9、0。
10、2750。
二、判断说明题
1、正确。
2、错误。
P0—P3都是真正的I/O口,只是当片外需要扩展存储器或其他外设时,其中3个才复用为三总线。
3、正确。
4、正确。
此时要求读引脚。
5、正确。
三、单项选择题
1、C
2、B
3、B
4、A5、D6、C
7、D
8、C
四、简答题
1、相同之处:
都是由CPU通过程序来传送数据,都需要借助CPU工作;
直接程序传送(包括无条件传送和查询式I/O传送)方式对接口电路的要求很简单,但对传送信息的时间要求很严格,且占用了CPU的大量时间,效率低下。
而中断传送方式可大大提高CPU利用率、允许多个外设并行工作,但硬件线路稍复杂。
2、这要看P1口所接下来何种外设,也要看程序中的上下文,不能断然理解为前者或后者。
若所接外设为单纯输出设备,则理解为送出全“1”信号;
若所接外设为单纯输入设备,则理解为读并口数据之前的预备动作;
若所接外设为输入/输出双向传输设备,则要根据程序流程及该指令之前的程序意图去理解。
3、典型(也是最短)时间为3个机器周期。
若出现以下情况将推迟对中断申请的响应:
1)正在执行的中断服务级别很高(或同级);
2)浊当前指令的最后一个M(机器)周期;
3)若当前指令是RETI或是对IP、IE寄存器的操作指令,则不能马上响应,还会顺延一条指令。
4、“定时”功能是对片内稳频脉冲(是晶振频率的1/12)的计数,从计数开始到计满溢出为止,可以由计数值×
稳频脉冲周期值来得到一个准确的时间值;
而“计数”功能则是对单片机引脚上的外来随机脉冲进行计数,一般情况下难以折算为精确进间。
定时功能适用于需要准确计量一段时间的场合;
而计数功能适用于对外部事件的计数。
在单片机内,定时和计数的实现都是借助一个加1计数器,工作原理基本一样,只是定时方式下计数脉冲为fose/12,计数方式下的计数脉冲由单片机外引脚(T0或T1)来输入。
5、串行数据传送是将数据按bit逐位进行传送的方式。
其主要优点是所需的传送线根数不(单向传送只需一根数据线、双向仅需两根),对于远距离数据传送的情况,采用串行方式是比较经济的。
所以串行方式主要用于计算机与远程终端之间的数据传送,也很适于经公众电话网连接的计算机之间的通信,另外在某些场合,串行接口也可以代替并行接口来控制外设,以节省软硬件资源、简化线路。
五、写出完整源程序
方法1:
用软件定时方式,可以通过调用20ms延时子程序来实现。
程序如下:
START:
SETBP1.0
LCALL
DELAY20
让P1.0脚上高电平延时20ms
CPL
P1.0
让P1.0脚上低电平延时40ms
DELAY20
START
DELAY20:
CPLRS1
MOVR6,#20
LOOP1:
MOV
R7,#249
LOOP2:
MOP
NOP
DJNZ
R7,LOOP2
R6,LOOP1
RS1
RET
用定时器T0实现20ms定时,然后配以编码控制方式。
AJMP
MAIN
ORG0BH
MOV
TH0,#0B1H
TL0,#0E0H
RLC
A
P1.0,C
RETI
MAIN:
MOVTMOD,#00000001B
选用T0定时,方式1,内触发
MOVTH0,#0B1H
定时20ms
MOVTL0,#0E0H
SETB
EA
T0开中断
SETBET0
CLRC
MOVA,#10010010B
编码值,A与C拼接形成100100100
SETBTR0
定时器开始工作
SJMP$
六、设计程序
可利用8031内部定时器对片餐的1s脉冲源计数900次,从而达到15分种定时。
用查询方式等待手动“开始”信号,有信号来,则计数器开始工作。
当计数900次满时,发出中断请求信号,此时让指示灯亮(可安排P1.0引脚控制灯的亮/灭)。
硬件电路示意图如附图1所示:
附图1
题六图
控制程序如下:
AJMPSTART
CLRTR0
停止计数/计时
CLREA
关中断
SETBP1.0
指示灯亮
RETI
CLRP1.0
指示灯灭
MOVTMOD,#00000101B
选用T0计数,方式1,内触发
MOVTH0,#0FCH
计数900次
MOVTL0,#7CH
SETBP1.7
为输入先预置“1”
JNBP1.7,$
等待“开始”按钮的下降沿到来
JBP1.7,$
开始计数(实际上是计时)
SETNEA
习题五
1、统一、独立。
2、两。
3、0.33、2、2、8。
4、6。
5、低。
6、数据、地址、控制。
7、数据。
8、ALE、P0
9、212(或4KB)、15。
10、0CH或8CH。
11、12。
12、16、4、4。
13、低电平、高电平、高阻。
14、8。
15、输出、输入
通常一个外部设备有数据、状态等多个端口寄存器与主机交换信息,因此,主机不一定只用一个惟一地址来访问一个外部设备。
3、错误。
应该是2个机器周期以上的高电平。
4、错误。
若晶振频率变化,则机器周期也将变化,只有在fosc=6MHz的情况下机器周期才会等于2us。
5、正确。
6、错误。
89C51内部含有程序存储器,其最小系统不用外扩任何存储器或I/O接口,因此地址锁存器可以不要,此时P0—P3口全部可以用作普通I/O口。
2、C
3、A
4、B
1、MCS—51单片机有上电自动复位和按钮复位两种方法使单片机复位。
复位主要是把PC初始化为0000H,使单片机从程序存储器的0000H单元开始执行程序。
此外,复位还对其他一些特殊功能寄存器有影响,其影响是除SP=07H,P0—P3四个锁存器均为FFH外,其他所有的寄存器均为0。
复位不影响内部RAM的状态(包括通用寄存器Rn).
2、由P0口的位结构可知,MCS—51单片机在进行外部寻址时,P0口的8根引线是低8位地址和8位数据的复用线。
P0口首先将低8位的地址发送出去,然后再传送数据,因此要用锁存器将先送出的低8位地址锁存。
而P2口输出的是地址或P2.x的状态,是地址还是P2.x的状态由其内部自动控制,执行指令MOVXA,@DPTR或者指令MOVX@DPTR,A时,P2口输出的是高8位地址;
其他情况下,P2口输出的是P2.x的状态。
所以,MCS—51单片机扩展系统中,P0口要接一个8位的锁存器,而P2口却不接。
3、共有32根I/O引线,其中部分引线在单片机有外扩对象时,将代替地址总线和数据总线(还有控制总线)的功能。
这32根I/O引线均匀分布于P0、P1、P2和P3口。
若没有单片机外扩要求,则4个并行口都是纯粹的I/O口;
但是,当单片机有外扩任务时,则P0口将作为8位数据总线,P2和P0口将作为16位地址总线,P3口的一部分将作为读/写等控制总线信号,此时只有P1口保留作为单纯的I/O口。
五、硬件设计题
①因为2764芯片是8KB×
8的EPROM,所以很显然,数据线需要8根,连往片内的地址线需要13根;
又因为最小系统只需外扩一片程序存储器,所以供片选用的地址线顶多只需1根(也可直接将片选信号接地);
合计需要地址线13—14根,本题选用14根。
②
③该EPROM地址范围是0000H—1FFFH。
六、综合设计题
硬件电路如图所示:
对开关K的识别拟采用查询方式,设开关K已配有硬件防抖电路,且开关K切换后至少会维持0.5s以上,程序如下:
MOVA,#01H
MOVP1,A
当前段亮(从a段开始)
为输入接口预置“1”
JBP1.7,LOOP2;
若KB为高电平,每段显示0.2s(即200ms)
ACALLD100MS
若KB为低电平,每段显示0.5s(即500ms)
ACALLD100MS
ACALLD100MS
ACALLD100MS
RLA
准备让下一段亮,其段灭
CJNEA,#40H,START
当6段显示完,再从头开始
SJMPLOOP
习题六答案
1、指令、数据。
2、存储容量、存取速度。
3、RAM。
4、片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器、3、片内片外统一编址的64KB程序存储器、片内256B的数据存储器、片外64KB的数据存储器。
5、程序、数据、PESN、RD、与(请注意是负逻辑)。
6、9FFFH。
7、3。
8、16。
9、7、4、11。
10、11、8、3、CEOEWE(或片选、输出允许和写允许)。
11、4。
12、A=①、B=④、C=④、D=⑤、E=④。
13、A=③、B=②、C=④、D=④、E=②。
14、A=③、B=⑤、C=②、D=④、E=⑥。
二、单项选择题
2、B
3、A
4、D
三、判断说明题
ROM也可以存放用户的数据信息。
4、错误。
CPU是由控制器和运算器两部分组成。
5、错误,RAM是随机存取存储器,电源关断