2012年微型计算机原理与接口技术自考题模拟(7)
-
下面是两单片机通过串行口进行通信的程序。它能将甲机内部RAM 20H~27H单元的数据发送给乙机,完成程序并填空。
甲机发送程序如下:
MOV ① ;定时器T1工作在8位重装方式
MOV TL1,#0F4H
MOV TH1,#0F4H
SETB TR1
MOV ② ,#40H;语句的作用是设置串口控制字
MOV R0,#20H
MOV R7,#08H
START:MOV A.@R0
MOV ③ ,A;将累加器A中的内容送串口输出缓冲器
WAIT:JBC T1, ④ ;判断T1是否置位,其目的是检查一帧是否发送完
AJMP WAIT
CONT:INC R0
DJNZ R7,START
SJMP $
乙机接收程序如下:
MOV TMOD,#20H
MOV TL1,#0F4H
MOV TH1,#0F4H
SETB TR1
MOV SCON,#40H
MOV R0,#20H
MOV R7,#08H
SETB ⑤ ;将REN置位的目的是使允许中断接受
WAIT:JBC RI, ⑥ ;判断RI是否置位,其目的是检查一帧是否接受完
AJMP WAIT
READ:MOV A, ⑦ ;将串口输入缓冲器的内容送累加器A
MOV @R0,A
INC R0
DJNZ R7, ⑧
SJMP $
答:①______;②______;③______;④______;
⑤______;⑥______;⑦______;⑧______。
-
下面程序是查找在内部RAM的30H~50H单元中出现______的次数,并将查找的结果存入______单元。
MOV 51H,#00H
MOV R1,#30H
MOV R7,#21H
LOOP: CJNE @R1,#0FFH,NEXT
INC 51H
NEXT: INC R1
DJNZ R7,LOOP
SJMP $
-
编程序将片内30H~36H单元内容的高4位清零,保持低4位不变。
-
设单片机的fosc=6MHz,下面程序是100ms延时的子程序。
DELAY: MOV R7,#64H
A0: MOV R6,#0FAH
DJNZ R6,$
DJNZ R7.DELAY
RET
错误:______
改正:______
-
设单片机的晶振频率为fosc=6MHz,使用T1工作于工作方式0,下面程序用查询的方式在______端输出周期为______的连续等宽方波。
MOV TMOD,#00H
MOV TH1,#0FCH
MOV TL1,#03H
MOV IE,#00H
SETB TR1
LOOP: JBC TF1,LOOP1
AJMP LOOP1
LOOP1: MOV TH1,#0FCH
MOV TL1,#03H
CPL P1.0
CLR TF1
SJMP LOOP
-
下面的程序完成5+4+3+2+1=15=0FH。
MOV R3,05H
CLR A
L00P: ADD A,R3
DJNZ @R3,LOOP
SJMP $
错误:______
改正:______
-
MCS-51的相对转移指令最大负跳数是______字节。
-
MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器______进行选择。
-
MCS-51有______个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器______进行选择。
-
8031单片机有4个口,其中______口可以直接应用于I/O口。
-
单片机的内部RAM区中,可以位寻址的地址范围是______,特殊功能寄存器中,可位寻址的地址是______。
-
下列伪指令汇编后,存放25H的单元及LOOP的值分别是______=25H,LOOP=______。
ORG 0100H
TAB: DB 'ABC'
MOON: DS 03
BUF: DB 25H
LOOP EQU 2100H
-
若8255的端口A和端口B工作在方式1输入时,C口的______和______可作为基本输入/输出使用。
-
编程序计算s=1!+2!+3!+4!的和。
-
LED有______和______两种接法。
-
#include<stdio.h>
main()
{inti,j,sum=0,m,n=4;
for(i=1;i<=n;i++)
{m=1;
for(j=1;j<=i;j++)m=m*j;
sum=sum+m;}
printf("sum=%d\n",sum);
}
程序运行结果是:______
-
#include<stdio.h>
main()
{int i=0,j,c[6];
scanf("%d",&j);
do{c[i]=j%10;i++;j=j/10;
}while(j!=0);
for(--i;i>=0;i--)
{printf("%d",c[i]);
if(i>0)printf(",");}
}
程序运行时,输入整数为2345<回车>,则输出为:______
-
#include<stdio.h>
ss(char*s)
{char *p=s:
while(*p)p++;
return(p-s);}
main()
{char *a="abded";
int i;
i=ss(a);
printf("%d\n",i);}
程序运行结果是:______
-
输入两个整数,调用函数stu()求两个数的立方和,返回主函数显示结果。
int stu(int a,int b)
{return a*a+b*b;}
main()
{int x,y;
scanf("%d,%d",&x,&y);
printf("%d",stu(x,y));
}
错误:______
改正:______
-
main()
{int a[]={1,3,5,2,7};
int b[]={5,3,9,4,6};
int c[5],i;
for(i=0;i<5;i++)
c[i]=a[i]*b[i];
for(i=0;i<5;i++)
printf("%d",c[i]);}
程序运行结果是:______
-
学习成绩>=90分的用A表示,60-89分之间的用B表示,60分以下的用C表示。
main()
{int score;
char grade;
printf("please input a score!\n");
scanf("%d",&score);
grade=score>=90?'A':(score<90?'B':'C');
printf("%d belongs to %c",score,grade);
}
错误:______
改正:______
-
求数组中最大元素和最小元素。
main()
{int m[10]={3,-30,20,6,77,2,0,-4,-7,99},
int i,max,min:
max=min=m[0];
for(i=0;i<10;i++)
{if(m[i]>max)max=m[i];
if(m[i]<min)min=m;}
printf("%d,%d",max,min);
}
错误:______
改正:______
-
#include"stdio.h"
main()
{int i,s;
s=0;
for(i=0;i<=10;i++;s=s+i)
printf("%d",s);
}
错误:______
改正:______
-
下面程序的功能是输出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);}
}
-
int x=5,n=5;则表达式x+ =n++的值是______。
-
下面程序的功能是,输出100以内能被3整除且个位数为6的所有整数。请填空。
main()
{int i,j;
for(i=0;i<10;i++)
{j=i*10+6:
if(______)continue;printf("%d",j);}
}
-
若a=7.5,b=2,c=3.6;表达式a>b&&c>a||a<b&&!c>b的值是______。
-
当定时器T0发出中断请求后,中断响应的条件是( )
- A.SETB ET0
- B.SETB EX0
- C.MOV IE,#82H
- D.MOV IE,#61H
-
8051单片机串行口用工作方式0时( )
- A.数据从RDX串行输入,从TXD串行输出
- B.数据从RDX串行输出,从TXD串行输入
- C.数据从RDX串行输入或输出,同步信号从TXD输出
- D.数据从TXD串行输入或输出,同步信号从RXD输出
-
共阴极显示管点亮时输入电平是( )
- A.低电平
- B.低电压
- C.低阻态
- D.高电平
-
单片机中PUSH和POP指令常用来( )
- A.保护断点,恢复断点
- B.保护现场
- C.保护现场,恢复现场
- D.保护断点
-
MCS-51寻址方式,操作数Ri加前缀“@”的寻址方式是( )
- A.寄存器间接寻址
- B.寄存器寻址
- C.基址加变址寻址
- D.立即寻址
-
不是伪指令关键字的是( )
- A.ORG
- B.START
- C.EQU
- D.DATA
-
8051/8031型单片机提供中断源的个数是( )
- A.3
- B.4
- C.6
- D.5
-
MCS-51单片机I/O的数据是( )
- A.同步传输
- B.异步传输
- C.随机传输
- D.实时传输
-
下面不是运算器完成的主要任务是( )
- A.算术运算
- B.位运算
- C.数据处理
- D.指令译码
-
对于8031来说,EA脚总是( )
- A.接地
- B.接电源
- C.悬空
- D.不用
-
下面程序段执行的结果是( )
char*p="abcde";p+=3;printf("%d",p);
- A.cde
- B.de
- C.bcde
- D.c
-
fopen打开新的二进制文件,既能读又能写的方式字符串是( )
- A."ab+"
- B."rb+"
- C."wb+"
- D."ab"
-
C语言中while和do-while循环的主要区别是( )
- A.do-while的循环体至少无条件执行一次
- B.while的循环控制条件比do-while的循环控制条件严格
- C.do-while允许从外部转到循环体内
- D.do-while循环体不能是复合语句
-
为表示关系x大于等于y且大于等于z,C语言表达式是( )
- A.(x>=y)&&(y>= z)
- B.(x>=y)AND(y>=z)
- C.(x>=y)&&(x>=z)
- D.(x>=y)&(y>=z)
-
字符'H'的ASCII码值是( )
- A.72
- B.73
- C.74
- D.75
-
以下集成块型号中属于16位系列单片机型号的是( )
- A.8051
- B.8051AH
- C.8094BH
- D.8052BH