1、 9月27日工信部单片机考试题A带答案 精品文档 A卷 选择题(每题2分,共60分) 1.8051单片机的一个机器周期由( D )个时钟周期构成。 A.3 B.4 C.5 D.6 2.51系列单片机可以寻址( A )的程序存储空间。 A.64KB B.32KB C.8KB D.4KB 3.下列指令哪个不可以用作分支结构( C )。 A.JB B.JC C.ADD D.JZ 4.在下面程序运行后,RAM存储单元20H~24H中数值分别变为( A )。 01
2、ORG 0000H 02 JMP START 03 ORG 1000H 04 START: MOV A,#04H ;累加器A赋值 05 MOV 20H,#20H ;RAM的20H单元赋值 06 XCH A,20H ;直接寻址整字节交换指令 07 MOV R2,#05H ;寄存器R2赋值 08 XCH A,R2 ;寄存器寻址整字节交换指令 09 MOV 21H,A ;保存数据05H到RAM的21H单元 10 MOV 10H,#06H ;RAM单元赋值 11 MOV R0,#10H
3、 ;寄存器R0赋值 12 XCH A,@R0 ;寄存器间接寻址整字节交换指令 13 MOV 22H,A ;保存数据06H到RAM的22H单元 14 MOV A,#00H ;累加器A赋值 15 MOV 11H,#0FH ;RAM单元赋值 16 MOV R1,#11H ;寄存器R1赋值 17 XCHD A,@R1 ;半字节交换指令 18 MOV 23H,A ;保存数据到RAM的23H单元,数据应该为0FH 19 MOV A,#0FH ;累加器A赋值 20 SWAP A ;累加器高低字节
4、交换指令 21 MOV 24H,A ;保存数据到RAM的23H单元,数据应该为F0H 22 RET 23 END A.0x04H、0x05H、0x06H、0x0FH和0xF0H B.0x01H、0x05H、0x01H、0x0FH和0xF0H C.0x04H、0x05H、0x02H、0x0FH和0xF0H D.0x04H、0x05H、0x06H、0x0FH和0xFFH 5.以下哪个不是C51的关键字( D )。 A.if B.case C.return D.ch 6.以下哪个运算符的优先级最高( A )。 A.()
5、 B.+
C.&& D.%
7.下面这段程序的运行结果为( A )。
01 #include
6、"c=%d,d=%d,e=%d\n",c,d,e); //输出结果 14 } A.c=0,d=1,e=1 B.c=1,d=1,e=1 C.c=0,d=1,e=0 D.c=1,d=0,e=0 8.break语句不能应用于那个语句内部( A )。 A.if B.for C.while D.do-while 9.下列哪个不可以用于声明数组( D )。 A.char B.int C.float D.void 10.如果p是指向数组ch的指针变量,设n为一个正整数,则下述运算那个不符合C51语言的规则(
7、 D )。 A.p+n B.p++ C.p-- D.p*n 11.位结构中的数据类型可以为( A )。 A.unsigned B.float C.void D.struct 12.结构指针变量成员的引用方法可以为(多选)( ABCD )。 A.(*结构指针变量). 成员名 B.*结构指针变量. 成员名 C.结构指针变量->成员名 D.以上三种都可以 13.struct关键字可以用于定义(多选)( AB )。 A.结构 B.位域 C.枚举 D.联合 14.联合变量、枚举变量和位域
8、变量的声明方法为(多选)( ABCD )。 A.先定义后声明 B.定义同时声明 C.直接声明 D.以上都可以 15.使用指针作为函数参数,在函数执行后,实参变量( A )。 A.变了 B.不变 C.有可能变 D.有可能不变 16.整型变量的循环左移函数为( A )。 A._irol_ B._lrol_ C._iror_ D._cror_ 17.双分支条件编译指令不包括( B )。 A.#if指令 B.#error指令 C.#else指令 D.#endif命令 18.#li
9、ne指令用于改变( A )。 A.当前行的行号 B.当前列的列号 C.函数名称 D.以上都不对 19.下述那个不是C51的存储类型( A )。 A.int B.sfr C.bdata D.code 20.T1不可以工作如下那个模式( D )。 A.工作模式0 B.工作模式1 C.工作模式2 D.工作模式3 21.以下哪个工作模式为16位计数器方式( B )。 A.工作模式0 B.工作模式1 C.工作模式2 D.工作模式3 22.单片机的外部中断源由( C )来实现。
10、A.P3.0 B.P3.1 C.P3.2 D.P3.3 23.外部中断0的入口地址为( C )。 A.0081H B.0082H C.0083H D.0084H 24.波特率倍增位对那个模式无效( )。 A.模式0 B.模式1 C.模式2 D.模式3 25.如下那个寄存器可位寻址( A )。 A.SCON B.PCON C.SBUF D.以上都可以 26.如下哪些方法可以实现按键去抖(多选)( ABD )。 A.软件延时 B.电容式硬件消抖 C.
11、电阻式硬件消抖 D.双稳态电路消抖 27.键盘程序设计需要注意的问题为(多选)( ABCD )。 A.按键消抖 B.读取键值 C.多按键处理 D.避免重复响应 28.7段共阴极LED数码管显示字符“0”的段码为( B )。 A.C0H B.3FH C.00H D.AAH 29.静态驱动多个LED数码管有哪些(多选)( ABD )。 A.直接驱动 B.串行接口扩展I/O接口驱动 C.动态扫描 D.使用外部扩展RAM地址来驱动 30.当方向位R/为( A )时,表示主器件读取从器件中的数据。 A.
12、1 B.0
C.2 D.3
编程题(每题10分,共40分)
1、编写一个单片机硬件加法的程序,从计算机串口输入两个整型数据,在单片机中相加,然后向计算机返回计算结果。
#include
13、T1为定时功能,模式2 PCON|=0x80; //设置SMOD=1 TL1=0xF4; //波特率4800bit/s,初值 TH1=0xF4; IE|=0x90; //中断 TR1=1; //启动定时器 printf ("Enter two number\n"); scanf ("%d %d", &a, &b); //输入整型数据 c=a+b; printf ("a=%d,b=%d,c=%ld\n",a,b,c); } 2、使用嵌套汇编的方法编写一个可以精确控制P2端口引脚电平延
14、时的程序。
01 #include
15、/P2端口输出
15 }
16 }
3、编写一个成绩等级的程序。要求输入学生的成绩范围为0~100,当为90~100时,输出字符A;当为80~90时,输出字符B;当为60~80时,输出字符C。当小于60时,输出字符D。
答:
#include
16、else if(score<80 && score>60)
{
printf(“C”);
}
else
{
printf(“D”);
}
}
4、开发一个单片机程序,接收计算机通过串口发送的数据流,将其中的小写字符转换为大写字符,并回送给计算机。
答:
#include
17、串口模式1,允许接收 TMOD|=0x20; //初始化T1为定时功能,模式2 PCON|=0x80; //设置SMOD=1 TL1=0xF4; //波特率4800bit/s,初值 TH1=0xF4; IE|=0x90; //中断 TR1=1; //启动定时器 while(1) { printf ("Enter a char\n"); scanf ("%c", &a); //输入数据 c= toupper(a); printf ("a=%c,c=%c \n",a,c); } } 收集于网络,如有侵权请联系管理员删除






