全国自考(微型计算机原理与接口技术)模拟试卷3
-
43. 下面程序段利用D/A转换器产生三角波,请完成程序段。
MOV ① ,#7FFFH
MOV ② ,#00H
UP: MOVX ③ ,A
INC A
JNZ ④
MOV A, ⑤
DOWN: MOVX ⑥ ,A
DEC ⑦
JNZ ⑧
SJMP UP
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
41. 已知单片机的晶振频率为6MHz,下面程序用单片机内部定时器T0工作在方式1下,从P1.0输出周期为______的方波脉冲信号,时间常数为______。
ORG 3000H
START:MOV TMOD, #01H
MOV TL0,#OCH
MOV THO, #OFEH
SETB TR0
LOOP: JBC TFO,DONE
SJMP LOOP
DONE:MOV TL0,#OCH
MOV THO,#OFEH
CPL P1.0
SJMP LOOP
-
42. 片外RAM2000H开始的单元中有5BH的数据,编程将它们传送到片内RAM20H开始的单元中去。
-
40. 晶振6MHz,下面中断初始化程序是使用T1,工作方式_______,在P1.0引脚输出等宽矩形波周期为______微秒的。
MOV TMOD,#20H
MOV TL1,#06H
MOV TH1,#06H
SETB EA
SETB ET1
SETB YR0
SJMP $
-
39. 下面程序段是将外部RAM1000H单元的内容送内部RAM20H单元。
MOVX DPTR,#1000H
MOVX A,@DPTR
MOV 20H,A
错误:______
改正:______
-
38. 下面程序段是将外部RAM30H单元的内容送到R0。
MOV R0,#30H
MOV A,@R0
MOV R0,A
错误:______
改正:______
-
36. 串行控制寄存器SCON的单元地址是______。
-
37. PCON寄存器中与串行通信有关的只有D7位(SMOD),该位为波特率倍增位。当SMOD=______时,串行口波特率增加一倍。
-
35. 当定时/计数器工作方式寄存器______中的功能选择位为0时,工作于内部定时方式。
-
34. MCS-51系列单片机片内数据存储器工作寄存器区32个字节被均匀地分为4个组:第0组工作寄存器,地址为______;第1组工作寄存器,地址为______;第2组工作寄存器,地址为10H~17H;第3组工作寄存器,地址为18H~1FHH。
-
33. MCS-51系列单片机内设有______个可编程的______位定时器/计数器。
-
31. MCS-51系列单片机P0和P1口,当既作输入口又作______时,在输出转输入时应先给端口写入______然后再读取。
-
32. 数码管要显示字形“5”,则______、c、d、f、g段亮,______、e段灭。
-
30. MCS-51系列单片机有40个引脚其中:______为时钟引脚、______为复位引脚。
-
29. 编程序计算s=1!+2!+3!+4!的和。
-
#include"stdio.h"
main()
{inti,k=0,s[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
if(i%2)k+=s[i];
intfor(i=i-1;i>=0;i--)
if(i%5==0)printf("%d",s[i]);
printf("%d\n",k);
}
程序运行结果为:______
-
#include<stdio.h>
#include<string.h>
func(char str[])
{int num=0;
while(*(str+num)!='\0')num++;
retum(num);
}
main()
{char str[10],*p=str;
getchar(p);printf("%d\n",func(p));
}
程序运行时,从键盘上输入ABCDE<回车>,则输出结果是:______
-
main()
{inta=2,b=3,c;
c=a+b:
b=a++-1:
printf("%d,%d,%d\n",a,b,c);
b=--c+1:
printf("%d,%d,%d\n",a,b,e);
程序运行结果是:______
-
24. 输入10个整数存入一维数组,再按逆序重新存放后再输出。
#include<stdio.h>
main()
{int i,j,a[10],k;
for(i=0;i<=9;i++)scanf("%d",&a[i]);
for(i=0,j=9;i<=4;i++,j--)
{k=a[i];a[i]=a[j];a[j]=k;}
for(i=0;i<=9;i++)printf("%d",a);
}
错误:______
改正:______
-
main()
{intp[8]={11,12,13,14,15,16,17,18},i=0,k=0;
while(i<8)
{if(p[i]%2)k+=p[i];
i++;}
printf("%d\n",k);
程序运行结果是:______
-
23. 以下程序计算1×2×3×……×10的和。
#include"stdio.h"
main()
{int i,s=1;
do
{s=s+i;i++;
}while(i<=10)
printf("%d\n",s);
}
错误:______
改正:______
-
22. 以下程序运行时从键盘输入字符串ABCDE按回车键结束输入,使输入字符串中的A和B转换为字符#输出,其他字符输出为*。
#include"stdio.h"
main()
{char c:
while((c=getchar())!='\0')
{switch(c)
{case'A':
case'B':putchar('#');break;
default:putchar('*');}
}
}
错误:______
改正:______
-
#include<stdio.h>
#include<conio.h>
main()
{
int i,j;
int sum,k=0;
for(i=0;i<5;i++);
{
printf("input a number:");
scanf("%d",k);
sum+=k:
}
printf("the sum is%d",sum);
}
错误:______
改正:______
-
20. 以下程序的功能是对10个整数从小到大排序。请填空。
#include<stdio.h>
sort(int arr[],int n);
main()
{int a[10],*p,i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\nthe original array is:");
for(p=a;P<a+10;p++)
printf("%d",*p);
sort(a,10);
printf("\nthe present array is:");
for(P=a;P<a+10;P++)
printf("%d",*p);
}
sort(int arr[],int n)
{int*p1,*p2,temp;
for(p1=arr;p1<arr+(n-1);p1++)
for(p2=p1+1;p2<arr+n;p2++)
if(______)
{temp=*p1;*p1=*p2;*p2=temp;}
}
-
18. 若a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值是______。
-
19. 以下程序的功能是计算字符串的长度。请填空。
#include<stdio.h>
main()
{char str[100],*sp=str;
int nlen=0;
scanf("%s",str);
for(;*sp!='\0';sp++)______;
printf("%d",nlen);
}
-
17. inta,b,c;则表达式a=(b=4)+(c=2)的值是______。
-
16. 8051单片机系统扩展时使用的锁存器用于锁存( )
- A.高8位地址
- B.低8位地址
- C.8位数据
- D.ALE信号
-
13. JZ rel指令中,操作数rel的寻址方式是( )
- A.立即寻址
- B.直接寻址
- C.位寻址方式
- D.相对寻址方式
-
15. 下列对SCON的相关位描述不正确的是( )
- A.当REN=1时,禁止串行口接收数据
- B.在方式0时,SM2必须为0
- C.RI位由软件清零
- D.IT1=1,表示帧发送结束
-
14. 通过串行口发送或接收数据时,在程序中应使用( )
- A.MOV指令
- B.MOVX指令
- C.MOVC指令
- D.SWAP指令
-
12. ANL20H,#30H指令中,源操作数的寻址方式是( )
- A.立即寻址
- B.直接寻址
- C.位寻址
- D.相对寻址
-
11. 用户可以直接使用的8031单片机I/O接口是( )
- A.P0
- B.P2
- C.P1
- D.P3
-
9. 下面不属于中断处理过程的是( )
- A.保护现场号恢复现场
- B.开中断与关中断
- C.中断向量
- D.中断服务与中断返回
-
10. MCS-51单片机的定时器/计数器工作方式1是( )
- A.16位计数器结构
- B.8位计数器结构
- C.13位计数器结构
- D.两个8位计数器结构
-
7. MCS-51布尔处理机的存储空间指的是( )
- A.00H~0FH
- B.10H~1FH
- C.20H~2FH
- D.30H~3FH
-
8. 不影响程序状态字PSW的指令关键字是( )
- A.ADD
- B.ADDC
- C.SUBB
- D.RRC
-
6. 对以下定义正确的表述是( )
union node {
int num;
char name[10];
}stud;
- A.stud是一个联合体类型
- B.stud是一个联合体变量
- C.node是一个联合体数据
- D.node是一个联合体变量
-
4. 不能把字符串Hello!赋给数组b的语句是( )
- A.char b[10];b=”Hell0 !";
- B.char b[10]={'H','e','l','l','o','!'};
- C.char b[10];strcpy(b,"Hello !");
- D.char b[10]="Hello !";
-
5. 若有定义int a[10],*p=a;则p+5表示的是( )
- A.a[5]的值
- B.a[6]的值
- C.a[5]的地址
- D.a[6]的地址
-
1. 以下集成块型号中不属于16位系列单片机型号的是( )
- A.8095BH
- B.8096BH
- C.83C452
- D.9097BH
-
2. 用16位(bit)二进制能够表示的无符号数的范围是( )
- A.65536
- B.65535
- C.65537
- D.65534
-
3. 以下说法中正确的是( )
- A.C语言程序总是从第一个定义的函数开始执行
- B.要调用的函数必须在main()函数中定义
- C.C语言程序总是从main()函数开始执行
- D.main()函数必须放在程序的开始部分