2012年微型计算机原理与接口技术自考题模拟(8)
-
编程实现在P1.0引脚接一驱动放大电路驱动扬声器,利用T1产生1000Hz的音频信号从扬声器输出。设fosc=12MHz。
-
编程查找在内部RAM的30H~3FH单元中出现0AH的次数,并将查找的结果存入50H单元。
-
下面程序是对8255进行初始化,使其A口按方式0______,B口按方式0输出,C口上半部按方式0______,C口下半部按方式1输入。
MOV DPTR,#7FFFH
MOV A,#95H
MOVX @DPTR,A
-
下面程序是将片外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
-
下面程序段是将ROM2000H单元的内容送R1。
MOV#DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV R1,A
错误:______
改正:______
-
下面程序段是将外部RAM30H单元的内容送内部RAM20H单元。
MOV R1,#30H
MOVX A,@R1
MOV 20H,ACC
错误:______
改正:______
-
PCON寄存器中与串行通信有关的只有D7位(SMOD),该位为波特率倍增位。当SMOD=______时,串行口波特率增加一倍。
-
串行控制寄存器SCON的单元地址是______。
-
MCS-51系列单片机内设有______个可编程的______位定时器/计数器。
-
当定时/计数器工作方式寄存器______中的功能选择位为0时,工作于内部定时方式。
-
MCS-51系列单片机片内数据存储器工作寄存器区32个字节被均匀地分为4个组:第0组工作寄存器,地址为______;第1组工作寄存器,地址为______;第2组工作寄存器,地址为10H~17H;第3组工作寄存器,地址为18H~1FHH。
-
数码管要显示字形“5”,则______、c、d、f、g段亮,______、e段灭。
-
MCS-51系列单片机P0和P1口,当既作输入口又作______时,在输出转输入时应先给端口写入______然后再读取。
-
#include<stdio.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(x<a[i]){i=im/2-1;m=m/2;}
elseif(x>a[i]){i=i+m/2+1;m=m/2;}
else break;}
printf("place=%d",i+1);
}
程序运行结果是:_____
-
编程序对输入的1000以下的整数,求出其相应的个位数、十位数和百位数。
-
MCS-51系列单片机有40个引脚其中:______为时钟引脚、______为复位引脚。
-
main()
{int k,p;
int s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])k=p;
printf("%d\n",k);
}
程序运行结果是:______
-
#include<stdio.h>
main()
{inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i>=0;i--){s=s+a[i]*j;j=j*10;}
printf("s=%d\n",s);
}
程序运行结果是:______
-
main()
{inta[]={1,2,3,4,5,6,7,8,9,10},s=0,i;
for(i=0;i<10;i++)
if(a[i]%2==0)s=s+a[i];
printf("s=%d",s);
}
程序运行结果是:______
-
下面程序是求1+2+3……+100的和。
main()
{int sum,k;
sum=0;k=1;
while(k<=100)
sum=sum+k;k++;
printf("sum=%d\n",sum);}
错误:______
改正:______
-
以下程序是给数组a所有元素赋值。
main()
{int a[10],i;
for(i=1;i<10;i++)
scanf("%d",&a[i]);}
错误:______
改正:______
-
程序的功能是计算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);
}
错误:______
改正:______
-
#include"stdio.h"
main()
{int a,b;
scanf("%d,%d"a,b);
printf("%d\t%d\n",a,b);
}
错误:______
改正:______
-
下列程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值:t=1-1/(2×2)-1/(3×3)-…-1/(m×m)请填空。
#include<conio.h>
#include<stdio.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));}
-
以下程序是求数组a中偶数的个数和偶数的平均值。请填空。
main()
{int a[10]={1,15,16,18,14,17,24,23,12};
int k,i,j;float ave;
for(k=i=j=0;j<10;j++)
{if(a[j]%2!=0)continue;
i+=______;
k++;}
if(k!=0){ave=i/j;printf("%d,%f\n",k,ave);}
}
-
下列指令判断若累加器A的内容不为0就转LP的是( )
- A.JB A,LP
- B.JNZ A,LP
- C.JZ LP
- D.CJNE A,#0,LP
-
intx=12,n=5;则表达式x%=(n%=2)的值是______。
-
当a=5,b=4,c=2时,表达式a>b!=c的值是______。
-
执行指令MOVX A,@DPTR时,、脚的电平是( )
- A.高电平,高电平
- B.低电平,高电平
- C.高电平,低电平
- D.低电平,低电平
-
执行如下三条指令后,30H单元的内容是( )
MOV R1,#30H
MOV 40H,#0EH
MOV @R1,40H
- A.40H
- B.0EH
- C.30H
- D.FFH
-
逻辑“异或”操作指令的助记符是( )
- A.ORL
- B.ANL
- C.XRL
- D.MOV
-
短转移指令的助记符是( )
- A.AJMP
- B.ANL
- C.SJMP
- D.LJMP
-
MCS-51单片机的定时器/计数器工作方式1是( )
- A.16位计数器结构
- B.8位计数器结构
- C.13位计数器结构
- D.2个8位计数器结构
-
用户可以直接使用的8031单片机I/O接口是( )
- A.P0
- B.P2
- C.P1
- D.P3
-
下面不属于中断处理过程的是( )
- A.保护现场与恢复现场
- B.开中断与关中断
- C.中断向量
- D.中断服务与中断返回
-
MCS-51布尔处理机的存储空间指的是( )
- A.00H~0FH
- B.10H~1FH
- C.20H~2FH
- D.30H~3FH
-
不影响程序状态字.PSW的指令关键字是( )
- A.ADD
- B.ADDC
- C.SUBB
- D.RRC
-
fscanf函数的正确调用形式是( )
- A.fscanf(fp,格式字符串,输出列表);
- B.fscanf(格式字符串,输出列表,fp);
- C.fscanf(格式字符串,文件指针,输出列表);
- D.fscanf(文件指针,格式字符串,变量地址列表);
-
对于循环for(i=1;0;i++)可以认为是( )
- A.逻辑错误
- B.语法错误
- C.不进入循环
- D.死循环
-
int a=30,b=20,c=10,d;d=a>b>c;则d的值是( )
- A.10
- B.1
- C.30
- D.0
-
以下正确的函数定义形式是( )
- A.double fun(int x;int y)
- B.double fun(int x,int y)
- C.double fun(int x,int y);
- D.double fun(int x,y);
-
以下说法不正确的是( )
- A.C语言具有一些汇编语言的功能
- B.C语言是面向对象的程序设计语言
- C.C语言具有多种存储类型
- D.C语言具有预处理功能
-
以下集成块型号中属于8位系列单片机型号的是( )
- A.80C196MC
- B.80C196KR
- C.80196KC
- D.83C51FC