一、1.单项选择题
0. 以下集成块型号中属于MCS-96系列单片机型号的是( )
A.83C51FB
B.80C196KR
C.83C52
D.83C51FA
1. 字符"9"的ASCII码值是( )
A.55
B.54
C.56
D.57
2. 下面输入整型变量格式的语句是( )
A.scanf("%f",&b);
B.scanf("%d",&b);
C.scanf("%c",&b);
D.scanf("%s",&b);
3. 若int a[10];则对数组正确引用的是( )
A.a[10-10]
B.a[10]
C.a[2*5]
D.a[9-10]
4. 下列程序段的执行结果是( ) int x=3: while(x<=5) {printf("%d",x-3);x++;}
A.0
B.112
C.123
D.12
5. 对下面说明叙述正确的是( ) typedef struct stu {int n;char ch[8]; }student;
A.student是结构体类型名
B.student是结构体变量
C.typedef struct是结构体类型
D.struct是结构体类型名
6. MCS-51单片机只具备单一功能的I/O接口是( )
A.P0
B.P1
C.P2
D.P3
7. 不是常用的汇编语言程序结构的是( )
A.顺序
B.分支
C.循环
D.随机
8. 下面表示中断允许控制寄存器的是( )
A.TCON
B.IE
C.IP
D.SCON
9. 不是MCS-51单片机:I/O的数据传输方式的是( )
A.无条件
B.查询
C.中断
D.DMA
10. 共阴极显示管显示字型“F”编码是( )
A.86H
B.71H
C.90H
D.FFH
11. 单片机8031的ALE引脚是( )
A.输出高电平
B.输出矩形脉冲,频率为fosc的1/6
C.输出低电平
D.输出矩形脉冲,频率为fosc的1/2
12. 对于8031单片机,其内部RAM( )
A.只能位寻址
B.既可位寻址又可字节寻址
C.只能字节寻址
D.少部分只能位寻址
13. 单片机的堆栈指针SP始终是指示( )
A.堆栈底
B.堆栈顶
C.堆栈地址
D.堆栈中间位置
14. 在MCS-51指令中,下列指令中无条件转移指令是( )
A.LCALL addr16
B.DJNZ direct.rel
C.SJMP rel
D.ACALL addr11
15. 下列指令能使R0低4位不变,高4位置F的是( )
A.ANL R0,#0F0H
B.ORL R0,#0F0H
C.ORL 0,#0FH
D.ORL 00H,#0F0H
二、2.填空题
0. intx=5,n=5;则表达式x+ =n++的值是______。
1. 若a=7.5,b=2,c=3.6;表达式a>b&&c>a||a<b&&!c>b的值是______。
2. 下面程序的功能是,输出100以内能被3整除且个位数为6的所有整数。请填空。
main()
{int i,j;
for(i=0;i<10;i++)
{j=i*10+6:
if(______)continue;printf("%d",j);}
}
3. 下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数。请填空。
main()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++)
{k=1;s=0;m=n;
while(m)
{k*=m%10;S+ =m%10;
______;}
if(k>S)printf("%d",n);}
}
三、3.改错题
0. #include"stdio.h"
main()
{int a,b;
scanf("%d,%d"a,b);
printf("%d %d ",a,b);
}
错误:______
改正:______
1. 以下程序是给数组a所有元素赋值。
main()
{int a[10],i;
for(i=1;i<10;i++)
scanf("%d",&a[i]);}
错误:______
改正:______
2. 程序的功能是计算1~100之间的奇数和与偶数和。
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);
}
错误:______
改正:______
3. 下面程序是求1+2+3……+100的和。
main()
{int sum,k;
sum=0;k=1;
while(k<=100)
sum=sum+k;k++;
printf("sum=%d ",sum);}
错误:______
改正:______
四、4.程序阅读题
0. #include<stdio.h>
main()
{int i,j;
inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9};
for(i=0;i<5;i++)
for(j=0;j<6;j++)
if(*(a+i)==*(b+j)printf("%d",*(a+i));
printf(" ");
}
程序运行结果是:______
1. #include<stdio.h>
main()
{int c;
while((c=getchar())!=" ")
{switch(c-"2")
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
case 4:putchar(c+2);break;}}
printf(" ");
}
程序运行时,输入2743<CR>,则运行结果是:______
2. main()
{int i=3,*p1;
int a[3]={15,30,45},*p2;
pl=&i;p2=a;
pl=p2+2:
printf("%d,%d ",*p1,*p2);
}
程序运行结果是:______
3. #include<stdio.h>
int f(int x,int y)
{return(x>y)?x:y);}
main()
{int a,b;
scanf("%d,%d",&a,&b);
printf("%d ",f(a,b));
}
程序运行时,从键盘输入9,8<回车>,则运行结果是:______
五、5.程序设计题
0. 输入三个整数x,y,z,请把这三个数由小到大输出。
六、6.填空题-单片机原理与接口技术
0. MCS-51的堆栈只可设置在______,其最大容量为______。
1. MCS-51单片机的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的______和______。
2. 执行下列程序段后,(A)=______,(CY)=______。
MOV A,#C5H
RL A
3. 假设两个一字节的十六进制数9FH,81H相加的和为8位二进制数,那么相加后其进位标志为______,溢出标志为______。
4. 已知(31H)=21H,(32H)=04H,执行下列指令组后(31H)=______,(32H)=______。
PUSH 31H
PUSH 32H
POP 31H
POP 32H
5. 设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=______。
ORL A,#27H
ANL A,28H
XCHD A,@R0
6. 设定T1为计数器方式,工作方式2,则TMOD中的值为______。
7. MCS-51内部的SFR共有______个。
七、7.改错题-单片机原理与接口技术
0. 下面程序将片内40H-46H单元内容的高位清零,保持低位不变。
ORG 1000H
MOV R7,#07H
MOV R0,40H
L00P: MOV A,@R0
ANL A,@0FH
MOV @R0,A
INC R0
DJNZ R7,LOOP
SJMP $
END
错误:______
改正:______
1. 已知:(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H,执行程序后,(R0)=35H,(A)=7FH,(4BH)=20H,(40H)=7FH
MOV A,@R0
MOV @R0,40H
MOV 40H,ACC
MOV R0,#35H
错误:______
改正:______
八、8.程序阅读题-单片机原理与接口技术
0. 下面程序是在______中存放一个压缩的BCD码,将它拆成二个BCD字节,结果存于______开始的单元中(低位在前)
MOV R0,#SUM
MOV A,R2
ANL A,#0FH
MOV @R0,A
MOV A,R2
ANL A,#0F0H
SWAP A
INC R0
MOV @R0,A
RET
1. 以下程序是将存于外部RAM______开始的50H数据传送到______的区域。
MOV DPTR,#8000H
MOV R0,#10H
MOV R2,#50H
L00P:MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP
RET
九、9.程序设计题-单片机原理与接口技术
0. RAM中60H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R6中。
十、10.微型计算机原理与接口技术-应用题
0. 如下图所示,用8255A芯片扩展单片机的I/O口,8255的A口作输入,A口的每一位接一个开关,用B口作为输出,输出的每一位接一个发光二极管。现要求某个开关接高电平(为1)时,相应位上的发光二极管就亮(输出低电平0)。设8255的A口地址为70H,B口地址为71H,C口地址为72H,控制口地址为73H。完成下面程序填空。
START:MOV DFTR, ①
MOV A, ②
MOVX ③ ,A
MOV DPTR, ④
MOVX A, ⑤
CPL ⑥
INC ⑦
MOVX @DPTR, ⑧
AJMP START
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。