1、微型计算机原理与接口技术-1 及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.变量的指针是( )(分数:1.00)A.变量的首地址B.变量的值C.变量的名D.变量的一个标志2.以下集成块型号中,不属于 MCS-51 系列单片机型号的是( )(分数:1.00)A.8094BHB.83C452C.80C32D.8051AH3.已知 char ch=B;则以下表达式的值是( ) ch=(ch=Ach=Z)?(ch+32):ch;(分数:1.00)A.AB.aC.bD.Z4.下列选项中,合法的 C 语言关键字是( )(分数:1.00)A.
2、defaultB.getC.integerD.VAR5.控制串行口工作方式的寄存器是( )(分数:1.00)A.TCONB.PCONC.SCOND.TMOD6.若设串行控制寄存器 SCON=40H,则串行口的工作方式是( )(分数:1.00)A.方式 0B.方式 1C.方式 2D.方式 37.地址指针 DPTR 是( )(分数:1.00)A.4 位的专用寄存器B.8 位的专用寄存器C.16 位的专用寄存器D.32 位的专用寄存器8.在扩展系统中,能够提供地址信号的高 8 位的端口是( )(分数:1.00)A.P0 口B.P1 口C.P2 口D.P3 口9.MCS-51 外部中断 1 固定对应的
3、中断入口地址为( )(分数:1.00)A.0003HB.000BHC.0013HD.001BH10.8051 与 8751 的区别是( )(分数:1.00)A.内部数据存储器的数目不同B.内部数据存储器的类型不同C.内部程序存储器的类型不同D.内部的寄存器的数目不同11.执行下列 3 条指令后,30H 单元的内容是( ) MOV R0,#30H MOV 40H,#0EH MOV R0,40H(分数:1.00)A.40HB.30HC.0EHD.FFH12.单片机的指令地址存放在( )(分数:1.00)A.PSWB.DPTRC.SPD.PC13.用 8 位(bit)二进制能够表示的有符号数的范围是
4、( )(分数:1.00)A.-127+128B.-128+127C.-127+127D.-128+12814.一个 EPROM 的地址有 A0-A11 引脚,它的容量是( )(分数:1.00)A.2KBB.4KBC.11KBD.12KB15.MOV C,00H 指令中源操作数的寻址方式是( )(分数:1.00)A.位寻址B.直接寻址C.立即寻址D.寄存器寻址16.打开文件语句 fp=fopen(“a.dat“,“r“);中 fp 的类型是( )(分数:1.00)A.File *B.fileC.FileD.FILE *二、B填空题/B(总题数:4,分数:8.00)17.int m=5,y=2;则
5、执行表达式 y+ =y- =m *=y 后的 y 值是 1。(分数:2.00)填空项 1:_18.若 a=3,b=4,c=5,则表达式 a|b+cb= =c 的值是 1。(分数:2.00)填空项 1:_19.等差数列的第一项 a=2,公差 d=3,下面程序的功能是在前 n 项和中,输出能被 4 整除的所有项的和。请填空。 #includestdio.h main() int a,d,sum; a=2;d=3;sum=0: dosum+ =a; a+ =d: if(_)printf(“%d/n“,sum); while(sum200); (分数:2.00)填空项 1:_20.求出 2/1,3/2
6、,5/3,8/5,13/8,21/13这个数列的前 20 项之和。请填空。 main() int n,t,number=20; floata=2,b=1,s=0; for(n=1;n=number;n+) s=_; t=a;a=a+b;b=t; printf(“sum is%9.6f/n“,s); (分数:2.00)填空项 1:_三、B改错题/B(总题数:4,分数:8.00)21.main() int a b; a=2; b=3; c=a*b printf(“c=%c“,c); 错误:_ 改正:_(分数:2.00)填空项 1:_22.下面程序的功能是计算 1+2+3+50 的和。 main()
7、 (int i,sum; for(i=1;i=50;i+) sum+ =i; printf(“%d“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_23.main() char s4=“9876“,*p; for(p=s;ps+2;p+)printf(“%s/n“,p); 错误:_ 改正:_(分数:2.00)填空项 1:_24.struct stud char num6; int s4; double ave=0.0; a; main() int i; for(i=0;i4;i+)scanf(“%d“,a.si); for(i=0;i4;i+)a.ave+ =a.si; pri
8、ntf(“%f“,a.ave); 错误:_ 改正:_(分数:2.00)填空项 1:_四、B程序阅读题/B(总题数:4,分数:16.00)25.#include“stdio.h“ main() int a,b,d=241; a=d/100%9; b=(-1)(-1); printf(“%d,%d“,a,b); 程序运行结果是:_(分数:4.00)填空项 1:_26.#includestdio.h main() int x; scanf(“%d“,x); if(x=60)printf(“pass“); else printf(“fail“); 程序运行时输入 60回车,则程序运行结果是:_(分数:
9、4.00)填空项 1:_27.#includestdio.h main() int i,b,k=0; for(i=1;i=5;i+) b=i%2; while(b-=0)k+; printf(“%d,%d“,k,b); 程序运行结果是:_(分数:4.00)填空项 1:_28.#includestdio.h main() int k=0; char c=A: do switch(c+) caseA:k+;break; caseB:k-; caseC:k+ =2;break; caseD:k=k%2;break; caseE:k=k*10;break; default:k=k/3; k+; whi
10、le(cG); printf(“k=%d“,k); 程序运行结果是:_(分数:4.00)填空项 1:_五、B程序设计题/B(总题数:1,分数:8.00)29.请编一个函数 int fun(float s ,int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组 s 中存放 n 位学生的成绩。数组 s 的值由主函数从键盘读入,用-1 来结束输入。(分数:8.00)_六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.MCS-51 的堆栈只可设置在_,其最大容量为_。(分数:2.00)填空项 1:_31.MCS-51 单片机的 P0 口和 P2 口除了可以进行数据
11、的输入、输出外,通常还用来构建系统的_和_。(分数:2.00)填空项 1:_32.执行下列程序段后,(A)=_,(CY)=_。 MOV A,#C5H RL A(分数:2.00)填空项 1:_33.假设两个一字节的十六进制数 9FH,81H 相加的和为 8 位二进制数,那么相加后其进位标志为_,溢出标志为_。(分数:2.00)填空项 1:_34.已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=_,(32H)=_。 PUSH 31H PUSH 32H POP 31H POP 32H(分数:2.00)填空项 1:_35.设(A)=38H,R0=28H,(28H)=18H,执行
12、下列程序后,(A)=_。 ORL A,#27H ANL A,28H XCHD A,R0(分数:2.00)填空项 1:_36.设定 T1 为计数器方式,工作方式 2,则 TMOD 中的值为 1。(分数:2.00)填空项 1:_37.MCS-51 内部的 SFR 共有 1 个。(分数:2.00)填空项 1:_七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.某 8031 单片机时钟频率 12MHz,T1 为工作方式 1,2 毫秒定时中断,其部分初始化程序如下,请指出错误,并改正之。 MOV TMOD,#01H MOV TH1,#0F8H MOV TL1,#30H MOV IP,
13、#8 MOV IE,#88H 错误:_ 改正:_(分数:2.00)填空项 1:_39.下列程序要完成 16 位无符号数相加,两数分别存于 30H,31H 和 40H,41H(低位在前),并把和存于30H,31H 中(设和无进位输出)。请指出错误,并改正之。 MOV A,30H ADD A,40H MOV 30H,A MOV A,31H ADD A,41H MOV 31H,A 错误:_ 改正:_(分数:2.00)填空项 1:_八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.2506H M5: MOV SP,#58H 2509H MOV 10H,#0FH 250CH MOV
14、 11H,#0BH 250FH ACALL XHD;PC+2PC, MOV 20H,11H 2514H M5A:SJMP M5A XHD:PUSH 10H PUSH 11H POP 10H POP 11H RET 执行 M5A:SJMPM5A 后,(SP)=_(20H)=_(分数:4.00)填空项 1:_41.设在 31H 单元存有#23H,执行下面程序:(41H)=_(42H)=_ MOV A,31H ANL A,#0FH MOV 41H,A MOV A,31H ANL A,#0F0H SWAP A MOV 42H,A(分数:4.00)填空项 1:_九、B程序设计题-单片机原理与接口技(总题
15、数:1,分数:8.00)42.片外 RAM2000H 开始的单元中有 5BH 的数据,编程将它们传送到片内 RAM20H 开始的单元中去。(分数:8.00)_十、B十、应用题/B(总题数:1,分数:8.00)一个由 AT89C51 单片机与一片 ADC0809 组成的数据采集系统,ADC08 的地址为 7FF8H7FFFH。硬件逻辑电路图如下,下面程序是利用中断方式,分别对 8 路模拟信号轮流采样一次,转换结果依次存放在首址为30H 的片外数据 RAM 中。完成中断服务程序填空。 ORG 0000H AJMP MAIN ORG 0013H AJMP INT1 MAIN: MOV R1,#30H
16、 MOV R7,#08H MOV DPTR,#07FF8H SET IT1 SET EX1 SET EA HERA: SJMP HERE 中断服务程序: INT1: MOVX A,U /U MOVXU /U,A U /UR1 INCU /U DJNZU /U,READ U /U U /U:MOVXU /U,A RET1(分数:8.00)(1).(分数:1.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_微型计算机原理与接口技术-1 答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1
17、.变量的指针是( )(分数:1.00)A.变量的首地址 B.变量的值C.变量的名D.变量的一个标志解析:解析 指针的概念。2.以下集成块型号中,不属于 MCS-51 系列单片机型号的是( )(分数:1.00)A.8094BH B.83C452C.80C32D.8051AH解析:解析 要熟记单片机型号。3.已知 char ch=B;则以下表达式的值是( ) ch=(ch=Ach=Z)?(ch+32):ch;(分数:1.00)A.AB.aC.b D.Z解析:解析 条件表达式。4.下列选项中,合法的 C 语言关键字是( )(分数:1.00)A.default B.getC.integerD.VAR解
18、析:解析 C 语言关键字。5.控制串行口工作方式的寄存器是( )(分数:1.00)A.TCONB.PCONC.SCON D.TMOD解析:解析 注意不同接口的工作方式寄存器。6.若设串行控制寄存器 SCON=40H,则串行口的工作方式是( )(分数:1.00)A.方式 0B.方式 1 C.方式 2D.方式 3解析:解析 串行口的工作方式。7.地址指针 DPTR 是( )(分数:1.00)A.4 位的专用寄存器B.8 位的专用寄存器C.16 位的专用寄存器 D.32 位的专用寄存器解析:解析 注意专用寄存器的位数。8.在扩展系统中,能够提供地址信号的高 8 位的端口是( )(分数:1.00)A.
19、P0 口B.P1 口C.P2 口 D.P3 口解析:解析 P2 口是系统扩展口。9.MCS-51 外部中断 1 固定对应的中断入口地址为( )(分数:1.00)A.0003HB.000BHC.0013H D.001BH解析:解析 MCS-51 外部中断 1 入口地址固定。10.8051 与 8751 的区别是( )(分数:1.00)A.内部数据存储器的数目不同B.内部数据存储器的类型不同C.内部程序存储器的类型不同 D.内部的寄存器的数目不同解析:解析 注意不同芯片的内部程序存储器。11.执行下列 3 条指令后,30H 单元的内容是( ) MOV R0,#30H MOV 40H,#0EH MO
20、V R0,40H(分数:1.00)A.40HB.30HC.0EH D.FFH解析:解析 寄存器间接寻址。12.单片机的指令地址存放在( )(分数:1.00)A.PSWB.DPTRC.SPD.PC 解析:解析 PC 是存放指令地址的。13.用 8 位(bit)二进制能够表示的有符号数的范围是( )(分数:1.00)A.-127+128B.-128+127C.-127+127 D.-128+128解析:解析 8 位二进制数表示的范围。14.一个 EPROM 的地址有 A0-A11 引脚,它的容量是( )(分数:1.00)A.2KBB.4KB C.11KBD.12KB解析:解析 不同引脚的程序存储器
21、的寻址空间。15.MOV C,00H 指令中源操作数的寻址方式是( )(分数:1.00)A.位寻址 B.直接寻址C.立即寻址D.寄存器寻址解析:解析 指令的寻址方式。16.打开文件语句 fp=fopen(“a.dat“,“r“);中 fp 的类型是( )(分数:1.00)A.File *B.fileC.FileD.FILE * 解析:解析 文件类型。二、B填空题/B(总题数:4,分数:8.00)17.int m=5,y=2;则执行表达式 y+ =y- =m *=y 后的 y 值是 1。(分数:2.00)填空项 1:_ (正确答案:-16)解析:解析 先乘除后加减。18.若 a=3,b=4,c=
22、5,则表达式 a|b+cb= =c 的值是 1。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 注意算术、关系和逻辑运算符的优先顺序。19.等差数列的第一项 a=2,公差 d=3,下面程序的功能是在前 n 项和中,输出能被 4 整除的所有项的和。请填空。 #includestdio.h main() int a,d,sum; a=2;d=3;sum=0: dosum+ =a; a+ =d: if(_)printf(“%d/n“,sum); while(sum200); (分数:2.00)填空项 1:_ (正确答案:sum%4= =0)解析:解析 整除表达式的使用。20.求出 2/
23、1,3/2,5/3,8/5,13/8,21/13这个数列的前 20 项之和。请填空。 main() int n,t,number=20; floata=2,b=1,s=0; for(n=1;n=number;n+) s=_; t=a;a=a+b;b=t; printf(“sum is%9.6f/n“,s); (分数:2.00)填空项 1:_ (正确答案:s+a/b)解析:解析 分数求和的表达式。三、B改错题/B(总题数:4,分数:8.00)21.main() int a b; a=2; b=3; c=a*b printf(“c=%c“,c); 错误:_ 改正:_(分数:2.00)填空项 1:_
24、 (正确答案:错误:printf(“c=%c“,c);)解析:改正:将其修改为 printf(“c=%d“,c); 解析 printf 函数格式错误22.下面程序的功能是计算 1+2+3+50 的和。 main() (int i,sum; for(i=1;i=50;i+) sum+ =i; printf(“%d“,sum); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:int i,sum;)解析:改正:将其修改为 int i,sum=0; 解析 变量 sum 要赋初值23.main() char s4=“9876“,*p; for(p=s;ps+2;p+)printf
25、(“%s/n“,p); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:char s4=“9876“,*p;)解析:改正:将其修改为 char s =“9876“,*p; 解析 字符数组长度不够,字符串结束标志也要占一个字符24.struct stud char num6; int s4; double ave=0.0; a; main() int i; for(i=0;i4;i+)scanf(“%d“,a.si); for(i=0;i4;i+)a.ave+ =a.si; printf(“%f“,a.ave); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答
26、案:错误:double ave=0.0;)解析:改正:将其修改为 double ave; 解析 结构体成员不能在声明时初始化四、B程序阅读题/B(总题数:4,分数:16.00)25.#include“stdio.h“ main() int a,b,d=241; a=d/100%9; b=(-1)(-1); printf(“%d,%d“,a,b); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:2,1)解析:解析 整数除法 241/100=2,2%9=2。逻辑运算中不为 0 为真。26.#includestdio.h main() int x; scanf(“%d“,x); i
27、f(x=60)printf(“pass“); else printf(“fail“); 程序运行时输入 60回车,则程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:pass)解析:解析 条件语句的使用。27.#includestdio.h main() int i,b,k=0; for(i=1;i=5;i+) b=i%2; while(b-=0)k+; printf(“%d,%d“,k,b); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:8,-2)解析:解析 循环嵌套当 i=1,2,3,4,5 时 对应的 b=1,0,1,0,1 k+执行次数 2,1,2,1
28、,228.#includestdio.h main() int k=0; char c=A: do switch(c+) caseA:k+;break; caseB:k-; caseC:k+ =2;break; caseD:k=k%2;break; caseE:k=k*10;break; default:k=k/3; k+; while(cG); printf(“k=%d“,k); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:k=8)解析:解析 c 对应的内容是:A,B,C,D,E,F k 对应的内容是:2,4,7,2,21,8 这里要注意,没有 break;语句的 cas
29、e 情况。五、B程序设计题/B(总题数:1,分数:8.00)29.请编一个函数 int fun(float s ,int n),它的功能是:求高于平均分的人数,并作为函数值返回。数组 s 中存放 n 位学生的成绩。数组 s 的值由主函数从键盘读入,用-1 来结束输入。(分数:8.00)_正确答案:()解析:main() int fun(float s,int n); float s100,x,m,n=0; scanf(“%f“,x) while(X!=-1n100) sn=x;n+; scanf(“%f“,x); m=fun(s,n); printf(“m=%d“,m); /*intfun(f
30、loat s,int n)函数定义如下:*/ int fun(float s,int n) int i,k=0;float aver,y=0; for(i=0;in;i+) y=y+si; aver=y/n; for(i=0;in;i+) if(siaver)k+; return k; 六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.MCS-51 的堆栈只可设置在_,其最大容量为_。(分数:2.00)填空项 1:_ (正确答案:内 RAM 低 128B 区 128B)解析:31.MCS-51 单片机的 P0 口和 P2 口除了可以进行数据的输入、输出外,通常还用来构建系
31、统的_和_。(分数:2.00)填空项 1:_ (正确答案:数据总线 地址总线)解析:32.执行下列程序段后,(A)=_,(CY)=_。 MOV A,#C5H RL A(分数:2.00)填空项 1:_ (正确答案:8BH(或 10001011B) 不影响)解析:解析 循环移位不影响标志位。33.假设两个一字节的十六进制数 9FH,81H 相加的和为 8 位二进制数,那么相加后其进位标志为_,溢出标志为_。(分数:2.00)填空项 1:_ (正确答案:1 1)解析:34.已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=_,(32H)=_。 PUSH 31H PUSH 32H
32、 POP 31H POP 32H(分数:2.00)填空项 1:_ (正确答案:04H 21H)解析:解析 堆栈操作是后进先出。35.设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=_。 ORL A,#27H ANL A,28H XCHD A,R0(分数:2.00)填空项 1:_ (正确答案:18H)解析:36.设定 T1 为计数器方式,工作方式 2,则 TMOD 中的值为 1。(分数:2.00)填空项 1:_ (正确答案:60H(高位为 4 即可))解析:37.MCS-51 内部的 SFR 共有 1 个。(分数:2.00)填空项 1:_ (正确答案:18)解析:七、
33、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.某 8031 单片机时钟频率 12MHz,T1 为工作方式 1,2 毫秒定时中断,其部分初始化程序如下,请指出错误,并改正之。 MOV TMOD,#01H MOV TH1,#0F8H MOV TL1,#30H MOV IP,#8 MOV IE,#88H 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOV TMOD,#01H)解析:改正:MOV TMOD,#10H 解析 T1 方式,高四位为 1,低四位为 0。方式错误。39.下列程序要完成 16 位无符号数相加,两数分别存于 30H,31H 和 40H,
34、41H(低位在前),并把和存于30H,31H 中(设和无进位输出)。请指出错误,并改正之。 MOV A,30H ADD A,40H MOV 30H,A MOV A,31H ADD A,41H MOV 31H,A 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:ADD A,41H)解析:改正:ADDC A,41H 解析 要使用带进位的加法。八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.2506H M5: MOV SP,#58H 2509H MOV 10H,#0FH 250CH MOV 11H,#0BH 250FH ACALL XHD;PC+2PC,
35、 MOV 20H,11H 2514H M5A:SJMP M5A XHD:PUSH 10H PUSH 11H POP 10H POP 11H RET 执行 M5A:SJMPM5A 后,(SP)=_(20H)=_(分数:4.00)填空项 1:_ (正确答案:58H 0FH)解析:解析 SP 的内容不变。XHD=2516H,所以接下来执行堆栈操作则:20H 的内容是 0FH。41.设在 31H 单元存有#23H,执行下面程序:(41H)=_(42H)=_ MOV A,31H ANL A,#0FH MOV 41H,A MOV A,31H ANL A,#0F0H SWAP A MOV 42H,A(分数:
36、4.00)填空项 1:_ (正确答案:03H 02H)解析:解析 执行 ANL A,#0FH 后,A=03H,执行 ANL A,#0FOH 后,A=20H,SWAP 是高四位和低四位互换。九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.片外 RAM2000H 开始的单元中有 5BH 的数据,编程将它们传送到片内 RAM20H 开始的单元中去。(分数:8.00)_正确答案:()解析:MAIN:MOV DPTR,#2000H MOV R1,#20H MOV R0,#05H LOOP:MOVX A,DPTR MOV R1,A INC DPTR INC R1 DJNZ R0,L
37、OOP RET十、B十、应用题/B(总题数:1,分数:8.00)一个由 AT89C51 单片机与一片 ADC0809 组成的数据采集系统,ADC08 的地址为 7FF8H7FFFH。硬件逻辑电路图如下,下面程序是利用中断方式,分别对 8 路模拟信号轮流采样一次,转换结果依次存放在首址为30H 的片外数据 RAM 中。完成中断服务程序填空。 ORG 0000H AJMP MAIN ORG 0013H AJMP INT1 MAIN: MOV R1,#30H MOV R7,#08H MOV DPTR,#07FF8H SET IT1 SET EX1 SET EA HERA: SJMP HERE 中断服务程序: INT1: MOVX A,U /U MOVXU /U,A U /UR1 INCU /U DJNZU /U,READ U /U U /U:MOVXU /U,A RET1(分数:8.00)(1).(分数:1.00)解析:填空项 1:_ (正确答案: R1)解析:填空项 1:_ (正确答案:INC)解析:填空项 1:_ (正确答案:DPTR)解析:填空项 1:_ (正确答案:R7)解析:填空项 1:_ (正确答案:RET1)解析:填空项 1:_ (正确答案:READ)解析:填空项 1:_ (正确答案: DPTR)解析: