单片机原理与应用及C51程序设计杨加国主编 完整版答案Word文件下载.docx
- 文档编号:18761596
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:451.96KB
单片机原理与应用及C51程序设计杨加国主编 完整版答案Word文件下载.docx
《单片机原理与应用及C51程序设计杨加国主编 完整版答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用及C51程序设计杨加国主编 完整版答案Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
(7)ROM的1000H单元内容送到片内RAM的50H单元中。
MOVA,#0
MOVCA,@A+DPTR
MOV50H,A
(8)ROM的1000H单元内容送到片外RAM的1000H单元中。
5.区分下列指令有什么不同?
(1)MOVA,20H和MOVA,#20H
答:
前者源操作数是直接寻址,后者源操作数立即寻址。
(2)MOVA,@R1和MOVXA,@R1
前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。
(3)MOVA,R1和MOVA,@R1
前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。
(4)MOVXA,@R1和MOVXA,@DPTR
前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。
(5)MOVXA,@DPTR和MOVCA,@A+DPTR
前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。
6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。
分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。
MOVR0,#20H;
R0=20H
MOVA,@R0;
A=40H
MOVR1,A;
R1=40H
MOVA,@R1;
A=10H
MOV@R0,P1;
(40H)=0CAH
MOVP2,P1;
P2=0CAH
MOV10H,A;
(10H)=10H
MOV20H,10H;
(20H)=10H
结果:
(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH
7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。
(1)MOVA,@R1结果:
累加器A等于70H
(2)MOVX@DPTR,A结果:
片外RAM(2FFCH)单元等于02H
(3)MOVCA,@A+DPTR结果:
累加器A等于64H
(4)XCHDA,@R1结果:
累加器A等于00H,片内RAM(7FH)单元等于72H
8.已知:
(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。
(1)ADDA,@R1;
累加器A等于55H,CY等于1
(2)SUBBA,#77H;
累加器A等于00H,CY等于0
(3)MULAB;
累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0
(4)DIVAB;
累加器A等于1EH,B寄存器等于00H,CY、OV等于0
(5)ANL78H,#78H;
片内RAM(78H)单元等于58H
(6)ORLA,#0FH;
累加器A等于7FH
(7)XRL80H,A;
片内RAM(80H)等于14H
9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。
ANLA,#17H;
A=03H
ORL17H,A;
(17H)=37H
XRLA,@R0;
A=34H
CPLA;
A=CBH
A=CBH,(R0)=17H,(17H)=37H
10.写出完成下列要求的指令。
(1)累加器A的低2位清零,其余位不变。
ANLA,#11111100B
(2)累加器A的高2位置“1”,其余位不变。
ORLA,#11000000B
(3)累加器的高4位取反,其余位不变。
XRLA,#11110000B
(4)累加器第0位、2位、4位、6位取反,其余位不变。
XRLA,#01010101B
11.说明LJMP指令与AJMP指令的区别?
LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是:
执行时间长,字节数多。
AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。
12.设当前指令CJNEA,#12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少?
若累加器A的值为12H呢?
指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。
13.用位处理指令实现P1.4=P1.0(P1.1P1.2)/P1.3的逻辑功能。
程序:
MOVC,P1.1
ORLC,P1.2
ANLC,P1.0
ORLC,/P1.3
MOVP1.4,C
14.下列程序段汇编后,从1000H单元开始的单元内容是什么?
ORG1000H
TAB:
DB12H,34H
DS3
DW5567H,87H
(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H
15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。
程序:
MOVR0,#20H
MOVR2,#03H
LOOP:
MOVA,@R0
INCR0
DJNZR2,LOOP
SJMP$
16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。
MOVDPTR,#2000H
MOVR2,#31H
MOV@R0,A
MOVA,#00
INCDPTR
INCR0
17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。
MOVDPTR,#1000H
MOVR2,#100
MOVR7,#00
MOVR6,#00
ADDA,R6
MOVR6,A
MOVA,R7
ADDCA,#0
MOVR7,A
18.编程实现R4R3R2,结果放于R7R6R5中。
ORG0100H
MUL1:
MOVA,R2
MOVB,R3
MULAB;
R2R3,结果的低字节直接存入积的R5
MOVR5,A;
结果的高字节存入R6中暂存起来
MOVR6,B
MUL2:
MOVB,R4
R2R4,结果的低字节与R6相加后,再存入R6中
ADDA,R6
MOVR6,A
MOVA,B;
结果的高字节加上进位位后存入R7中
ADDCA,#00
MOVR7,A
SJMP$
19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。
MOVC,20H.0
MOVA.0,C
MOVC,20H.1
MOVA.1,C
MOVC,21H.2
MOVA.2,C
MOVC,21H.3
MOVA.3,C
MOVC,22H.4
MOVA.4,C
MOVC,22H.5
MOVA.5,C
MOVC,23H.6
MOVA.6,C
MOVC,23H.7
MOVA.7,C
MOVR2,A
20.用查表的方法实现一位十六进制数转换成ASCII。
(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)
C16STASC:
MOVDPTR,#TAB
MOVA,R2
MOVCA,@A+DPTR
MOVR2,A
RET
TAB:
DB30H,31H,32H,33H,34H,35H,36H,37H
DB38H,391H,41H,42H,43H,44H,45H,46H
21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。
MOVR3,#100
MOVR2,#00
JNZNEXT
INCR2
NEXT:
INCDPTR
DJNZR3,LOOP
第四章
4-2有哪里些数据类型是MCS-51系列单片机直接支持的?
见P89,基本类型:
字符型,整型,长整型,浮点型,特殊功能寄存器;
构造类型:
数组类型,结构体类型,共用体,枚举
指针类型
空类型
4-3C51特有的数据结构类型有哪些?
特殊功能寄存器,位类型
4-4C51的存储类型有几种?
它们分别表示的存储器区域是什么?
见P94页:
存储器类型有:
data,bdata,idata,pdata,xdata
4-5C51中bit位与sbit位有什么区别?
bit是定义一个一般的位变量;
而使用sbit定义可位寻址字节或是特殊功能寄存器的的位,定义时必指定其位地址,其存储空间为内部RAM中的位寻址区20H-2FH(位地址为:
00H~7FH),
4-6在C51通过绝对地址来访问的存储器有几种方式?
使用C51运行库中预定义宏,通过指针访问,使用C51扩展关键字_at_
4-7在C51中,中断函数与一般函数有什么不同?
见P112页:
7点
4-8按指定存储器类型和数据类型,写出下列变量的说明形式
(1)在data定义字符变量var11:
chardatavar11
(2)在idata定义整型变量var12:
charidatavar12
(3)在xdata定义无符号字符数组var11[4]:
unsignedcharxdatavar13[4]
(4)在xdata定义一个指向无符号字符的指针px:
unsignedcharxdata*px
(5)定义可寻址位变量flag:
bitflag;
(6)定义特殊功能寄存器变量p3:
sfrp3=0xb0
(7)定义特殊功能寄存器变量SCON:
sfrSCON=0x98
(8)定义16位特殊功能寄存器变量T0:
sfr16T0=0x8a(无法真正与实际相匹配)
4-9设a=3,b=4,c=5,写出下列关系表达式或逻辑表达式的结果
(1)a+b>
c&
&
b==c(False)
(2)a||b+c&
b-c(True)
(3)!
(a>
b)&
!
c||1(True)
(4)!
(a+b)+c-1&
b+c/2(True)
4-10break与continue语句的区别是什么?
见P110;
使用break语句可以跳出switch和循环体,提前结束循环而接着执行循环结构下面的语句
continue语句使用在循环体结构中,用于结束本次循环,跳过该语句下面尚未执行的语句,直接进行下一否执行循环的判断。
4-11用分支结构编程实现,输入”1”时显示“A”,输入”2”时显示“B”,输入”3”时显示“C”,输入”4”时显示“D”,输入”5”时结束。
#include<
reg52.h>
stdoi.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharI;
voidmain()
{
scanf(“%d”,&
i);
swtch(i)
case1:
printf(“A”),break;
case2:
printf(“B”),break;
case3:
printf(“C”),break;
case4:
printf(“D”),break;
case5:
break;
default:
printf(“Error!
”);
}
While
(1);
4-12输入3无符号数据,要求按由大到小的顺序输出。
解:
uinta,b,c;
uintmax,min,med;
scanf("
%d%d%d"
&
a,&
b,&
c);
if(a>
b&
b>
c)
{
max=a;
med=b;
min=c;
elseif(a>
b<
a>
{max=a;
med=c;
min=b;
a<
{max=c;
med=a;
elseif(b>
a&
min=a;
else
if(b>
{max=b;
else
{max=b;
printf("
%d>
%d\n"
max,med,min);
4-13用3种循环结构编写程序实现输出1-10的平方和
stdio.h>
uintsum=0;
voidmain
uchari,Square;
for(i=1;
i<
=10;
i++)
sum=sum+i*i;
printf(”sum=%d,”sum);
i=1;
while(i<
=10)
i++;
do
printf(”i%d^2=%d,”i,Square);
}while(i>
10)
4-14对一个5个元素的无符号字符数组按由大到小的顺序输出
uinti,n=5,j,m;
uinta[]={210,108,65,49,72};
for(i=1;
i<
n;
i++)
for(j=0;
j<
n-i;
j++)
if(a[j]<
a[j+1])
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
printf("
\nThesortedintegers:
\n\n"
);
for(i=0;
%6d"
a[i]);
4-15用指针实现输入设备个无符号字符数据按由大到小的顺序输出。
uinti,n=5,j,m;
uinta[]={210,108,65,49,72};
uint*p;
p=a;
{
for(j=0;
j<
j++)
if(*(p+j)<
*(p+j+1))
m=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=m;
}
for(i=0;
第六章
1.何为“准双向I/O接口”?
在MCS-51单片机的四个并口中,哪些是“准双向I/O接口”?
准双向I/O接口是能实现输入输出功能,但在使用时只能从输入和输出中选择一个。
MCS-51单片机的四个并口中P1、P2、P3是准双向I/O接口。
2.80C51单片机内部有几个定时/计数器?
它们由哪些功能寄存器组成?
怎样实现定时功能和计数功能?
80C51单片机内部有两个16位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器组成。
通过TMOD中的C/T位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。
3.定时/计数器T0有几种工作方式?
各自的特点是什么?
有四种工作方式,特点见下表:
M1
M0
工作方式
方式说明
13位定时/计数器
1
16位定时/计数器
2
8位自动重置定时/计数器
3
两个8位定时/计数器(只有T0有)
4.定时/计数器的四种工作方式各自的计数范围是多少?
如果要计10个单位,不同的方式初值应为多少?
有四种方式。
方式0计数范围:
1~8192;
方式1计数范围:
1~65536;
方式2计数范围:
1~256;
方式3计数范围:
1~256。
如果计10个单位,方式0初值为:
8192-10=8182;
方式1初值为:
65536-10=65526;
方式2初值为:
256-10=246;
256-10=246。
5.设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的方波,可以选择哪几种方式,其初值分别设为多少?
只能选择方式1,初值为65536-50000=15536。
6.何为同步通信?
何为异步通信?
异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。
特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。
同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。
特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。
7.单工、半双工和全双工有什么区别?
单工方式只有一根数据线,信息只能单向传送;
半双工方式也只有一根数据线,但信息可以分时双向传送;
全双工方式有两根数据线,在同一个时刻能够实现数据双向传送。
8.设某异步通信接口,每帧信息格式为10位,当接口每秒传送1000个字符时,其波特率为多少?
10000波特
9.串行口数据寄存器SBUF有什么特点?
发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器SBUF(串行口数据寄存器),执行MOVSBUF,A发送时为发送数据寄存器,执行MOVA,SBUF接收时为接收数据寄存器。
10.MCS-51单片机串行口有几种工作方式?
各自特点是什么?
有四种工作方式,分别是方式0、方式1、方式2和方式3。
其中:
方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。
方式1,称为8位的异步通信方式,通常用于双机通信。
方式2和方式3,称为9位的异步通信方式,通常用于多机通信。
11.说明SM2在方式2和方式3对数据接收有何影响。
通过SM2对方式2和方式3数据接收进行控制,SM2=1,那么只有接收的第9位为“1”才接收有效。
如SM2=0,接收的第9位无论为1还是0都接收有效。
12.怎样来实现利用串行口扩展并行输入/输出口?
利用串行口在方式0时,当外接一个串入并出的移位寄存器,就可以扩展并行输出口;
当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。
13.什么是中断、中断允许
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与应用及C51程序设计 杨加国主编 完整版答案 单片机 原理 应用 C51 程序设计 杨加国 主编 完整版 答案