1、微型计算机原理与接口技术-9 及答案解析(总分:93.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.逻辑“异或”操作指令的助记符是( )(分数:1.00)A.ORLB.ANLC.XRLD.MOV2.以下说法不正确的是( )(分数:1.00)A.C 语言具有一些汇编语言的功能B.C 语言是面向对象的程序设计语言C.C 语言具有多种存储类型D.C 语言具有预处理功能3.执行指令 MOVX A,DPTR 时,、脚的电平是( )(分数:1.00)A.高电平,高电平B.低电平,高电平C.高电平,低电平D.低电平,低电平4.fscanf 函数的正确调用形式是( )(
2、分数:1.00)A.fscanf(fp,格式字符串,输出列表);B.fscanf(格式字符串,输出列表,f;C.fscanf(格式字符串,文件指针,输出列表);D.fscanf(文件指针,格式字符串,变量地址列表);5.对于循环 for(i=1;0;i+)可以认为是( )(分数:1.00)A.逻辑错误B.语法错误C.不进入循环D.死循环6.inta=30,b=20,c=10,d;d=abc;则 d 的值是( )(分数:1.00)A.10B.1C.30D.07.下列指令判断若累加器 A 的内容不为 0 就转 LP 的是( )(分数:1.00)A.JB A,LPB.JNZ A,LPC.JZ LPD
3、.CJNE A,#0,LP8.以下集成块型号中属于 8 位系列单片机型号的是( )(分数:1.00)A.80C196MCB.80C196KRC.80196KCD.83C51FC9.MCS-51 单片机的定时器/计数器工作方式 1 是( )(分数:1.00)A.16 位计数器结构B.8 位计数器结构C.13 位计数器结构D.2 个 8 位计数器结构10.以下正确的函数定义形式是( )(分数:1.00)A.double fun(int x;intB.double fun(int x,intC.double fun(int x,int ;D.double fun(int x,;11.不影响程序状态字
4、PSW 的指令关键字是( )(分数:1.00)A.ADDB.ADDCC.SUBBD.RRC12.短转移指令的助记符是( )(分数:1.00)A.AJMPB.ANLC.SJMPD.LJMP13.MCS-51 布尔处理机的存储空间指的是( )(分数:1.00)A.00H0FHB.10H1FHC.20H2FHD.30H3FH14.用户可以直接使用的 8031 单片机 I/O 接口是( )(分数:1.00)A.P0B.P2C.P1D.P315.执行如下三条指令后,30H 单元的内容是( ) MOV R1,#30H MOV 40H,#0EH MOV R1,40H(分数:1.00)A.40HB.0EHC.
5、30HD.FFH16.下面不属于中断处理过程的是( )(分数:1.00)A.保护现场与恢复现场B.开中断与关中断C.中断向量D.中断服务与中断返回二、B填空题/B(总题数:4,分数:8.00)17.intx=12,n=5;则表达式 x%=(n%=2)的值是 1。(分数:2.00)填空项 1:_18.当 a=5,b=4,c=2 时,表达式 ab!=c 的值是 1。(分数:2.00)填空项 1:_19.以下程序是求数组 a 中偶数的个数和偶数的平均值。请填空。 main() int a10=1,15,16,18,14,17,24,23,12; int k,i,j;float ave; for(k=
6、i=j=0;j10;j+) if(aj%2!=0)continue; i+=_; k+; if(k!=0)ave=i/j;printf(“%d,%f/n“,k,ave); (分数:2.00)填空项 1:_20.下列程序中,函数 fun 的功能是:根据整型形参 m 的值,计算如下公式的值:t=1-1/(22)-1/(33)-1/(mm)请填空。 #includeconio.h #includestdio.h double fun(int m) double y=1.0;int i; for(_) y-=1.0/(i*i); return(y); main() int n=5; printf(“/
7、nThe result is%1f/n“,fun(n);(分数:2.00)填空项 1:_三、B改错题/B(总题数:4,分数:8.00)21.#include“stdio.h“ main() int a,b; scanf(“%d,%d“a,b); printf(“%d/t%d/n“,a,b); 错误:_ 改正:_(分数:2.00)填空项 1:_22.以下程序是给数组 a 所有元素赋值。 main() int a10,i; for(i=1;i10;i+) scanf(“%d“,ai); 错误:_ 改正:_(分数:2.00)填空项 1:_23.程序的功能是计算 1100 之间的奇数和与偶数和。 ma
8、in() intsum1=0,sum2=0,a; for(a=1;a=100;a+) if(a%2=0)sum1+ =a; else sum2+ =a; printf(“%d,%d“,sum1,sum2); 错误:_ 改正:_(分数:2.00)填空项 1:_24.下面程序是求 1+2+3+100 的和。 main() int sum,k; sum=0;k=1; while(k=100) sum=sum+k;k+; printf(“sum=%d/n“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_四、B程序阅读题/B(总题数:4,分数:16.00)25.main() inta=1
9、,2,3,4,5,6,7,8,9,10,s=0,i; for(i=0;i10;i+) if(ai%2=0)s=s+ai; printf(“s=%d“,s); 程序运行结果是:_(分数:4.00)填空项 1:_26.main() int k,p; int s=1,-9,7,2,-10,3; for(p=0,k=p;p6;p+) if(spsk)k=p; printf(“%d/n“,k); 程序运行结果是:_(分数:4.00)填空项 1:_27.#includestdio.h main() inta=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-)s=s+ai*j;j=j
10、*10; printf(“s=%d/n“,s); 程序运行结果是:_(分数:4.00)填空项 1:_28.#includestdio.h main() int a=0,2,5,8,12,15,23,35,60,65; intx=15,i,n=10,m; i=n/2+1;m=n/2; while(m!=0) if(xai)i=im/2-1;m=m/2; elseif(xai)i=i+m/2+1;m=m/2; else break; printf(“place=%d“,i+1); 程序运行结果是:_(分数:4.00)填空项 1:_五、B程序设计题/B(总题数:1,分数:8.00)29.编程序对输入
11、的 1000 以下的整数,求出其相应的个位数、十位数和百位数。(分数:8.00)_六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.MCS-51 系列单片机有 40 个引脚其中:_为时钟引脚、_为复位引脚。(分数:2.00)填空项 1:_31.MCS-51 系列单片机 P0 和 P1 口,当既作输入口又作_时,在输出转输入时应先给端口写入_然后再读取。(分数:2.00)填空项 1:_32.数码管要显示字形“5”,则_、c、d、f、g 段亮,_、e 段灭。(分数:2.00)填空项 1:_33.MCS-51 系列单片机内设有_个可编程的_位定时器/计数器。(分数:2.00)填
12、空项 1:_34.MCS-51 系列单片机片内数据存储器工作寄存器区 32 个字节被均匀地分为 4 个组:第 0 组工作寄存器,地址为_;第 1 组工作寄存器,地址为_;第 2 组工作寄存器,地址为 10H17H;第 3 组工作寄存器,地址为 18H1FHH。(分数:2.00)填空项 1:_35.当定时/计数器工作方式寄存器 1 中的功能选择位为 0 时,工作于内部定时方式。(分数:2.00)填空项 1:_36.串行控制寄存器 SCON 的单元地址是 1。(分数:2.00)填空项 1:_37.PCON 寄存器中与串行通信有关的只有 D7 位(SMOD),该位为波特率倍增位。当 SMOD= 1
13、时,串行口波特率增加一倍。(分数:2.00)填空项 1:_七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.下面程序段是将 ROM2000H 单元的内容送 R1。 MOV#DPTR,#2000H CLR A MOVC A,A+DPTR MOV R1,A 错误:_ 改正:_(分数:2.00)填空项 1:_39.下面程序段是将外部 RAM30H 单元的内容送内部 RAM20H 单元。 MOV R1,#30H MOVX A,R1 MOV 20H,ACC 错误:_ 改正:_(分数:2.00)填空项 1:_八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.下面程
14、序是将片外 RAM 2000H 开始的单元中_字节的数据,传送到片内 RAM_开始的单元中去。 MAIN:MOV DPTR,#2000H MOV R1,#20H MOV R0,#05H LOOP:MOVX A,DPTR MOV R1,A INC DPTR INC R1 DJNZ R0,LOOP RET(分数:4.00)填空项 1:_41.下面程序是对 8255 进行初始化,使其 A 口按方式 0_,B 口按方式 0 输出,C 口上半部按方式0_,C 口下半部按方式 1 输入。 MOV DPTR,#7FFFH MOV A,#95H MOVX DPTR,A(分数:4.00)填空项 1:_九、B程序
15、设计题-单片机原理与接口技(总题数:1,分数:8.00)42.编程查找在内部 RAM 的 30H3FH 单元中出现 0AH 的次数,并将查找的结果存入 50H 单元。(分数:8.00)_十、B十、应用题/B(总题数:1,分数:1.00)43.编程实现在 P1.0 引脚接一驱动放大电路驱动扬声器,利用 T1 产生 1000Hz 的音频信号从扬声器输出。设 fosc=12MHz。(分数:1.00)_微型计算机原理与接口技术-9 答案解析(总分:93.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.逻辑“异或”操作指令的助记符是( )(分数:1.00)A.ORL
16、B.ANLC.XRL D.MOV解析:2.以下说法不正确的是( )(分数:1.00)A.C 语言具有一些汇编语言的功能B.C 语言是面向对象的程序设计语言 C.C 语言具有多种存储类型D.C 语言具有预处理功能解析:解析 C 语句是结构化程序设计语言。3.执行指令 MOVX A,DPTR 时,、脚的电平是( )(分数:1.00)A.高电平,高电平B.低电平,高电平C.高电平,低电平 D.低电平,低电平解析:解析 低电平表示无效。4.fscanf 函数的正确调用形式是( )(分数:1.00)A.fscanf(fp,格式字符串,输出列表);B.fscanf(格式字符串,输出列表,f;C.fscan
17、f(格式字符串,文件指针,输出列表);D.fscanf(文件指针,格式字符串,变量地址列表); 解析:5.对于循环 for(i=1;0;i+)可以认为是( )(分数:1.00)A.逻辑错误B.语法错误C.不进入循环 D.死循环解析:解析 因为循环条件为 0,所以不进入循环。6.inta=30,b=20,c=10,d;d=abc;则 d 的值是( )(分数:1.00)A.10B.1C.30D.0 解析:解析 ab=1,1c=0。7.下列指令判断若累加器 A 的内容不为 0 就转 LP 的是( )(分数:1.00)A.JB A,LPB.JNZ A,LPC.JZ LPD.CJNE A,#0,LP 解
18、析:8.以下集成块型号中属于 8 位系列单片机型号的是( )(分数:1.00)A.80C196MCB.80C196KRC.80196KCD.83C51FC 解析:9.MCS-51 单片机的定时器/计数器工作方式 1 是( )(分数:1.00)A.16 位计数器结构 B.8 位计数器结构C.13 位计数器结构D.2 个 8 位计数器结构解析:10.以下正确的函数定义形式是( )(分数:1.00)A.double fun(int x;intB.double fun(int x,int C.double fun(int x,int ;D.double fun(int x,;解析:解析 C 是说明形式
19、。11.不影响程序状态字PSW 的指令关键字是( )(分数:1.00)A.ADD B.ADDCC.SUBBD.RRC解析:12.短转移指令的助记符是( )(分数:1.00)A.AJMPB.ANLC.SJMP D.LJMP解析:13.MCS-51 布尔处理机的存储空间指的是( )(分数:1.00)A.00H0FHB.10H1FHC.20H2FH D.30H3FH解析:14.用户可以直接使用的 8031 单片机 I/O 接口是( )(分数:1.00)A.P0B.P2C.P1 D.P3解析:解析 P1 口没有第二功能。15.执行如下三条指令后,30H 单元的内容是( ) MOV R1,#30H MO
20、V 40H,#0EH MOV R1,40H(分数:1.00)A.40HB.0EH C.30HD.FFH解析:解析 MOV R1,40H 是关键语句,其含义是将片外 40H 单元中的内容送入片内 30H 单元中。16.下面不属于中断处理过程的是( )(分数:1.00)A.保护现场与恢复现场B.开中断与关中断C.中断向量 D.中断服务与中断返回解析:解析 中断向量是初始化过程。二、B填空题/B(总题数:4,分数:8.00)17.intx=12,n=5;则表达式 x%=(n%=2)的值是 1。(分数:2.00)填空项 1:_ (正确答案:0)解析:解析 n%=2 可以写成 n=n%2=1,x%=I
21、可以写成 x=x%1=0。18.当 a=5,b=4,c=2 时,表达式 ab!=c 的值是 1。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 b!=c 可以写成 b=!c=0,a0=1。19.以下程序是求数组 a 中偶数的个数和偶数的平均值。请填空。 main() int a10=1,15,16,18,14,17,24,23,12; int k,i,j;float ave; for(k=i=j=0;j10;j+) if(aj%2!=0)continue; i+=_; k+; if(k!=0)ave=i/j;printf(“%d,%f/n“,k,ave); (分数:2.00)填空
22、项 1:_ (正确答案:aj)解析:解析 关键语句是 if(aj%2!=0)continue;aj%2!=0 为真,则 aj中是偶数。20.下列程序中,函数 fun 的功能是:根据整型形参 m 的值,计算如下公式的值:t=1-1/(22)-1/(33)-1/(mm)请填空。 #includeconio.h #includestdio.h double fun(int m) double y=1.0;int i; for(_) y-=1.0/(i*i); return(y); main() int n=5; printf(“/nThe result is%1f/n“,fun(n);(分数:2.0
23、0)填空项 1:_ (正确答案:i=2;i=m;i+)解析:解析 这里就是要设置循环条件,注意 i=2 开始。三、B改错题/B(总题数:4,分数:8.00)21.#include“stdio.h“ main() int a,b; scanf(“%d,%d“a,b); printf(“%d/t%d/n“,a,b); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:scanf(“%d,%d“a,b);)解析:改正:将其修改为 scanf(“%d,%d“a,b); 解析 a,b 不是地址,scanf 函数格式不对。22.以下程序是给数组 a 所有元素赋值。 main() int
24、 a10,i; for(i=1;i10;i+) scanf(“%d“,ai); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:for(i=1;i10;i+))解析:改正:将其修改为 for(i=0;i10;i+) 解析 循环初始条件不对。23.程序的功能是计算 1100 之间的奇数和与偶数和。 main() intsum1=0,sum2=0,a; for(a=1;a=100;a+) if(a%2=0)sum1+ =a; else sum2+ =a; printf(“%d,%d“,sum1,sum2); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误
25、:if(a%2=0))解析:改正:将其修改为 if(a%2=0) 解析 if 语句表达式错误。24.下面程序是求 1+2+3+100 的和。 main() int sum,k; sum=0;k=1; while(k=100) sum=sum+k;k+; printf(“sum=%d/n“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:sum=sum+k;k+;)解析:改正:将其修改为sum=sum+k;k+; 解析 循环体是复合语句四、B程序阅读题/B(总题数:4,分数:16.00)25.main() inta=1,2,3,4,5,6,7,8,9,10,s=
26、0,i; for(i=0;i10;i+) if(ai%2=0)s=s+ai; printf(“s=%d“,s); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:30)解析:解析 该程序是计算下标为偶数的元素之和,s=2+4+6+8+10=30。26.main() int k,p; int s=1,-9,7,2,-10,3; for(p=0,k=p;p6;p+) if(spsk)k=p; printf(“%d/n“,k); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:2)解析:解析 该程序求出数组中最大元素的下标。27.#includestdio.h mai
27、n() inta=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-)s=s+ai*j;j=j*10; printf(“s=%d/n“,s); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:1234)解析:解析 该程序是计算 s=41+310+2100+11000=1234。28.#includestdio.h main() int a=0,2,5,8,12,15,23,35,60,65; intx=15,i,n=10,m; i=n/2+1;m=n/2; while(m!=0) if(xai)i=im/2-1;m=m/2; elseif(xai)i=i+
28、m/2+1;m=m/2; else break; printf(“place=%d“,i+1); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:place=6)解析:解析 该程序关键表达式 xai,x=15 和 a5元素比较,结果为假。再次 xai比较结果仍然为假,所以结束循环。输出 i+1=6。五、B程序设计题/B(总题数:1,分数:8.00)29.编程序对输入的 1000 以下的整数,求出其相应的个位数、十位数和百位数。(分数:8.00)_正确答案:()解析:#includestdio.h void main() int x,a,b,C; doprintf(“输入一个 1
29、000 以下的整数:“); scanf(“%d“,x); printf(“/n“); while(x=1000|x0); a=x/100; b=(x-a*100)/10; c=x%10: printf(“%d 的个位数是%d,十位数是%d,百位数是%d/n“,x,c,b,a); 六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.MCS-51 系列单片机有 40 个引脚其中:_为时钟引脚、_为复位引脚。(分数:2.00)填空项 1:_ (正确答案:18 和 19 9)解析:31.MCS-51 系列单片机 P0 和 P1 口,当既作输入口又作_时,在输出转输入时应先给端口写入
30、_然后再读取。(分数:2.00)填空项 1:_ (正确答案:输出 1)解析:32.数码管要显示字形“5”,则_、c、d、f、g 段亮,_、e 段灭。(分数:2.00)填空项 1:_ (正确答案:a b)解析:33.MCS-51 系列单片机内设有_个可编程的_位定时器/计数器。(分数:2.00)填空项 1:_ (正确答案:2 16)解析:34.MCS-51 系列单片机片内数据存储器工作寄存器区 32 个字节被均匀地分为 4 个组:第 0 组工作寄存器,地址为_;第 1 组工作寄存器,地址为_;第 2 组工作寄存器,地址为 10H17H;第 3 组工作寄存器,地址为 18H1FHH。(分数:2.0
31、0)填空项 1:_ (正确答案:00H07H 08H0FH)解析:35.当定时/计数器工作方式寄存器 1 中的功能选择位为 0 时,工作于内部定时方式。(分数:2.00)填空项 1:_ (正确答案:TMOD)解析:36.串行控制寄存器 SCON 的单元地址是 1。(分数:2.00)填空项 1:_ (正确答案:98H)解析:37.PCON 寄存器中与串行通信有关的只有 D7 位(SMOD),该位为波特率倍增位。当 SMOD= 1 时,串行口波特率增加一倍。(分数:2.00)填空项 1:_ (正确答案:1)解析:七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.下面程序段是将
32、ROM2000H 单元的内容送 R1。 MOV#DPTR,#2000H CLR A MOVC A,A+DPTR MOV R1,A 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOV #DPTR,#2000H)解析:改正:MOV DPTR,#2000H 解析 DPTR 指向 2000H 单元39.下面程序段是将外部 RAM30H 单元的内容送内部 RAM20H 单元。 MOV R1,#30H MOVX A,R1 MOV 20H,ACC 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOV 20H,ACC)解析:改正:MOV 20H,A 解析 AC
33、E 是 A 的地址八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.下面程序是将片外 RAM 2000H 开始的单元中_字节的数据,传送到片内 RAM_开始的单元中去。 MAIN:MOV DPTR,#2000H MOV R1,#20H MOV R0,#05H LOOP:MOVX A,DPTR MOV R1,A INC DPTR INC R1 DJNZ R0,LOOP RET(分数:4.00)填空项 1:_ (正确答案:5 20H)解析:解析 1,2,3 句是初始化,DPTR=2000H,R1=20H(片内存储单元),R0=05H(设置传送数据个数)。4,5 句开始传送。6
34、,7 句片外和片内地址加一。8 句 R0 中不为 0 继续传送。41.下面程序是对 8255 进行初始化,使其 A 口按方式 0_,B 口按方式 0 输出,C 口上半部按方式0_,C 口下半部按方式 1 输入。 MOV DPTR,#7FFFH MOV A,#95H MOVX DPTR,A(分数:4.00)填空项 1:_ (正确答案:输入 输出)解析:解析 95H=10010101,注意前 4 位 1001,第一位是特征位必须为 1,00 表示选择 A 口为方式 0,最后的 1 为选择 A 口输出方式。后 4 为 1001,第一位 1 为选择 C 口 D7D4 为输入方式,第二位 0 选择 B口
35、方式 0,第三位 0 选择 B 口为输出方式,最后一位 1 选择 C 口 D0D3 为输入方式。九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.编程查找在内部 RAM 的 30H3FH 单元中出现 0AH 的次数,并将查找的结果存入 50H 单元。(分数:8.00)_正确答案:()解析:0RG 0000H LJMP START 0RG 0030H START: MOV R0,#30H MOV R7,#16 MOV 50H,#00H L12: MOV A,R0 CJNE A,#0AH,LL1 INC 50H LL1: INC R0 DJNZ R7,LL2 SJMP $十、
36、B十、应用题/B(总题数:1,分数:1.00)43.编程实现在 P1.0 引脚接一驱动放大电路驱动扬声器,利用 T1 产生 1000Hz 的音频信号从扬声器输出。设 fosc=12MHz。(分数:1.00)_正确答案:()解析:1KHz 信号的周期为 1ms,即要求每 500s,P1.0 变反一次,使用 T1 模式 1 定时初值: 0RG 0000H AJMP MAIN ORG 001BH AJMP DSHI ORG 0030H MAIN: MOV TMOD,#10H MOV TH1,#0FEH MOV TL1,#0CH SETB TR0 SETB EA SETB ET1 HERE: SJMP HERE 中断服务程序: DSHI: MOV TH1,#0FEH MOV TL1 #0CH CPL P1.0 RETI