一、1.单项选择题
0. 无符号的数10111011B所对应的十进制数是 ( )
A.186D
B.187D
C.188D
D.189D
1. 二进制数11111111与二进制数00000000进行按位“与”运算的结果是 ( )
A.00000000
B.11111111
C.10000000
D.00000001
2. 计算机的外部设备(键盘、显示器、打印机等)与CPU相连接的方式是 ( )
A.直接相连
B.通过电缆线
C.通过虚拟设备
D.通过I/0接口
3. 正数用原码和补码表示时,其最高位是符号位,则该符号位的值分别是 ( )
A.1,1
B.1,0
C.0,1
D.0,0
4. 表达式3+7.2+"A"的运算结果是 ( )
A.75.2
B.10.2A
C.A10.2
D.107.2
5. 语句FILE*filePtr=fopen("myFile.dat","a");打开文件后的作用是 ( )
A.从文本文件读数据
B.向文本文件写数据
C.向文本文件末尾追加数据
D.向二进制文件末尾追加数据
6. MCS-51系列单片机扩展外部存储器时,有一个I/O口作为低8位地址和数据线的分时复用口,此:I/O 口是( )
A.P3口
B.P2口
C.P1口
D.P0口
7. 8051单片机内部具有定时器/计数器的个数和位数分别是 ( )
A.1个,16位
B.2个,16位
C.2个,8位
D.3个,8位
8. MCS-51系列单片机的一个机器周期包含时钟周期的个数是 ( )
A.8个
B.10个
C.12个
D.16个
9. 程序计数器PC和堆栈指针SP两个寄存器的位数分别为 ( )
A.PC-8位 SP-8位
B.PC-8位 SP-16位
C.PC-16位 SP-8位
D.PC-16位 SP-16位
10. 执行MOV A,#98H:及ADDA,#81两条指令后,累加器A及进位标志CY的内容分别为( )
A.(A)=19H,(CY)=0
B.(A)=19H,(CY)=1
C.(A)=79H,(CY)= 0
D.(A)=79H,(CY)=1
11. 已知(SP)=40H,片内RAM(60H)=0FH,执行PUSH 60H和POP 50H两条指令后,SP及50H中内容各为 ( )
A.(SP)=39H,(50H)=23H
B.(SP)=40H,(50H)=0FH
C.(SP)=41H,(50H)=0FH
D.(SP)=40H,(50H)=60H
12. 已知(CY)=1,(A)=0FH,要使结果为(CY)=1,(A)=1EH,则需执行指令 ( )
A.RLC A
B.RRC A
C.RL A
D.RR A
13. PSW.4位和PSW.3位是工作寄存器区的选择位。执行下列指令组后,选择的工作寄存器组是 ( ) CLR PSW.4 SETB PSW.3
A.0组
B.1组
C.2组
D.3组
14. 某半导体存储器有8根数据线,13根地址线,则它的存储容量是 ( )
A.8K×8位
B.16K×8位
C.32K×8位
D.64K×8位
15. RS232接口,表示逻辑1的信号电平是 ( )
A.1OV
B.2V
C.0V
D.-10V
二、2.填空题
0. 微处理器是微型计算机的核心芯片,是将计算机中的运算器和控制器集成在一个很小的硅片上制成的集成电路,通常用英文字母简写为______。
1. 执行了printf("The file name is d:data.db");语句,将输出______。
2. 执行scanf("%d/%d/%d",&x,&y,&z);语句时,希望把三个数据2008、1和1分别输给整型变量x、y、z,则应该在键盘键入______。
3. 如果把数组名作为实参传递给对应的形参,则实际上传递的是该数组的______。
三、3.改错题
0. 本程序在运行时从键盘输入2个整数,如果输入的第一个数大于第二个数,则两数互换,否则不互换。
#include<stdio.h>
main()
( int num1,num2,x;
scanf("%d%d",&numl,&num2);
if(num1>num2)
x=Bum1;numl=num2;num2=x;
printf("%d<%d ",num1,num2);
}
错误:______
改正:______
1. 以下程序的功能是:求30个学生某门课程的平均成绩。
#include<stdio.h>
main()
{ int n=30,i=0,t;
float aver=0;
while(i<n)
{scanf("%d",&t);
aver=aver+t;
}
aver=aver/n;
printf("平均成绩为:%5.1f ",aver);
}
错误:______
改正:______
2. 以下程序的功能是:把键盘输入的10个整数显示在屏幕上。
#include<stdio.h>
main()
{ int a[10],i;
for(i=0;i<10;++i)
scanf("%d",a[i]);
for(i=0;i<10;++i)
printf("%d",a[i]);
}
错误:______
改正:______
3. #include<stdio.h>
#include<string.h>
struct number
{ int i;
float x;
char c[50];
}num=(1954,"University",7.98};
main()
( struct number numl;
num1.i=999;
num1.x=123.123:
strcpy(num1.c,"Beijing");
pfintf("%d,%f,%s ",hum.i,num.x,num.c);
pfintf("%d,%f,%s ",numl.i,num1.x,num1.c);
}
错误:______
改正:______
四、4.程序阅读题
0. #include <stdio.h>
main()
{ int num,s;
scanf("%d",&num);
if(Bum>=0&&num<=100)
{s=num/10;
switch(S)
{case 6:printf("%d- - -及格 ",num);break;
case 7:printf("%d- - -中 ",nun);break;
case 8:printf("%d- - - 良 ",Bum);break;
case 9:
case 10:printf("%d- - -优 ",num);break;
default:pfintf("%d- - -差 ",Bum);
}
}
}
程序运行两次,第一次输入值为85,第二次输入值为45。
则程序第一次运行结果为:
程序第二次运行结果为:
1. #include <stdio.h>
main()
{ int a=0,b,c=0,i;
for(i=0;i<=4;i+=2)
{a+=i;
b=i+1:
c+=b:
}
printf("a=%d ",a);
printf("C=%d ",c);
}
程序运行结果为:
2. #include <stdio.h>
main()
( int a[6]={1,2,3,4,5,6},i;
float aver=0,t=0;
for(i=0;i<6;i++)
t=t+a[i];
aver=1.0*t/6:
printf("%4.1f ".aver);
for(i=0;i<6;i++)
if(a[i]>aver)
printf("%d ",a[i]);
}
程序运行结果为:
3. #include <stdio.h>
main()
(inta=100,b=200,c=300,d,*p1=&a,*p2=&b,*p3=&c;
d=*p1+*p2:
printf("d=%d ",d);
p1=&d:
d=a+c;
printf("d=%d ",*p1);
p1=p2=&c:
a=*p1+*p2:
printf("a=%d ",a);
c=a+b:
printf("c=%d ",*p3);
}
程序运行结果为:
五、5.程序设计题
0. 下面的程序是利用公式
求π的近似值,直到最后一项的值小于10-7为止;最后输出π的近似值。请根据题义编写计算π的函数。
#include<stdio.h>
#include<math.h>
double fpi();
main()
{double pi,n;
printf("请输入计算精度");
scanf("%lf",&n);
pi=fpi(n);
printf("π=%f ",pi);
}
/*以下为定义函数部分*/
六、6.填空题-单片机原理与接口技术
0. 8051单片机共有______个中断源,可以设置______个中断优先级。
1. 片内RAM的位寻址区的地址范围为______H~______H。
2. 两条指令MOV 15H,R1及MOV 15H,@R1源操作数的寻址方式,前者为______,后者为______。
3. 执行下列指令组后,程序计数器PC的内容为______H。
2301H ANL A, #00H
2303H JZ rel; rel为30H
2305H ……
……
4. 执行调用子程序指令LCALL addr时,其断点地址存放在______中。
5. 已知累加器A中存放一个十进制数的ASCII码,要将其转换为BCD码,可执行一条逻辑运算指令______。
6. 8031单片机时钟频率12MHz,如将T1设定为方式2,定时时间100μS,则TH1应为______。
7. 8031单片机IE=9DH,IP=06H时,CPU能响应的优先权最高的中断源是______。
七、7.改错题-单片机原理与接口技术
0. 下列程序段欲重复执行LOOP开始的程序段50次。
MOV A, #32H
LOOP: ……
DEC A
DJNZ ACC,LOOP
错误:______
改正:______
1. 8031单片机时钟频率12MHz,T1为工作方式2,50μS定时,允许中断。试指出以下初始化程序的错误并改正。
MOV TMOD,#20H
MOV TH1,#206
MOV TL1,TH1
SETB TR1
MOV IE,#82H
错误:______
改正:______
八、8.程序阅读题-单片机原理与接口技术
0. 如8031单片机时钟频率6MHz,在P1.0口接一个红外LED发光二极管,P1.0低电平时亮。运行以下程序后,INT0每中断一次(两次中断间隔时间足够大),LED将发送宽度为______ms的光脉冲______个。
0RG 0000H
LJMP BEG
ORG 0003H ;外中断0中断入口
MOV R7,#20
SETB TR1
RETI
ORG 001BH ;定时器1中断入口
CPL P1.0
DJNZ R7,RRT
CLR TR1
SETB P1.0
RT: RETI
BEG: MOV TMOD,#20H
MOV TH1,#56
MOV TL1,#56
MOV IE,#89H
SJMP $
1. 已知:(30H)=37H,(31H)=21H,(50H)=75H,(51H)=10H执行以下子程序:
MOV R0,#30H
MOV R1,#50H
MOV R7,#2
CLR C
LOOP:MOV A,@R0
ADDC A.@R1
DA A
MOV @R0.A
INC R0
INC R1
DJNZ R7,LOOP
RET
则结果为:(30H)=______H,(31H)=______H,(R1)=______H,(R7)=______H。
九、9.程序设计题-单片机原理与接口技术
0. 累加器A中的数,如大于等于50H则减去20H后,差值存于片内RAM 40H中,如该数小于50H则加20H后,其和存于片内RAM 40H中。请接着以下指令,补全缺少的部分。
CJNE A,#50H,NEXT
SJMP $
十、10.微型计算机原理与接口技术-应用题
0. 交通灯控制实验电路如题43图所示,875l单片机时钟频率6MHz,P1.5~P1.0经电阻接六个发光二极管,其中红1、黄1、绿1,为南北向指示灯;红2、黄2、绿2,为东西向指示灯。以下程序用定时器TD产生0.1秒中断为计时标准,按以下四种状态,交替循环。(1)红1、绿2,亮20秒;(2)红1、黄1、黄2,亮1秒;(3)绿1、红2亮15秒;(4)黄1、红2、黄2亮1秒。试填满程序中的缺少部分。
题43图
ORG 0000H
AJMP START
ORG ① ;定时器T0入口地址
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ 30H, ②
MOV A,R7
INC A
ANL A,# ③ H
MOV R7,A
ADD A,#T0_5-1D_1
MOVC ④
T0_1: MOV P1,A
MOV 30H,#10 ;第2和第4种状态的计数次数
CJNE R7,#0,T0_2
MOV 30H,# ⑤ ;第1种状态的计数次数
SJMP T0_3
T0_2: CJNE R7,#2,TD_3
MOV 30H,# ⑥ ;第3种状态的计数次数
T0_3: RETI
T0_5: DB 0DEH, ⑦ H,0F3H,0E5H
;每种状态的显示代码(没用到的引脚输出应为“1”)
START: MOV TMOD,#01H
MOV TL0,#0BOH
MOV TH0,#3CH
MOV 30H,#200
MOV R7,#0
MOV IE,#82H
SETB ⑧
MOV P1,#0DEH
LOOP: SJMP LOOP
①______; ②______; ③______; ④______;
⑤______; ⑥______; ⑦______;⑧______。
附:有关特殊功能寄存器各位内容: