收藏 分销(赏)

9月27日工信部单片机考试题A带答案教案资料.doc

上传人:快乐****生活 文档编号:3808252 上传时间:2024-07-19 格式:DOC 页数:7 大小:32.50KB 下载积分:6 金币
下载 相关 举报
9月27日工信部单片机考试题A带答案教案资料.doc_第1页
第1页 / 共7页
9月27日工信部单片机考试题A带答案教案资料.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
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 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 ;寄存器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 ;累加器高低字节交换指令 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.() B.+ C.&& D.% 7.下面这段程序的运行结果为( A )。 01 #include <stdio.h> //头文件 02 void main() //主函数 03 { 04 int a,b,c,d,e; //声明变量 05 float f1,f2; 06 a=7; //变量赋值 07 b=9; 08 c=!a; //计算逻辑表达式 09 d=a||b; 10 f1=2.3; 11 f2=5.7; 12 e=(f1!=f2); 13 printf("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语言的规则( 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.联合变量、枚举变量和位域变量的声明方法为(多选)( 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.#line指令用于改变( 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 )来实现。 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.电阻式硬件消抖 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.1 B.0 C.2 D.3 编程题(每题10分,共40分) 1、编写一个单片机硬件加法的程序,从计算机串口输入两个整型数据,在单片机中相加,然后向计算机返回计算结果。 #include<string.h> //头文件 #include<stdio.h> #include <reg51.h> void main(void) //主函数 { int a; int b; long c; SCON=0x50; //串口模式1,允许接收 TMOD|=0x20; //初始化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端口引脚电平延时的程序。 01 #include <REG51.h> //头文件 02 void main() //主函数 03 { 04 while(1) 05 { 06 P2=0x00; //P2端口输出 07 #pragma asm //嵌入汇编语句 08 NOP 09 NOP 10 SETB P2.0 //置P2.0为高电平 11 NOP 12 NOP 13 #pragma endasm //结束汇编语句嵌入 14 P2=0x00; //P2端口输出 15 } 16 } 3、编写一个成绩等级的程序。要求输入学生的成绩范围为0~100,当为90~100时,输出字符A;当为80~90时,输出字符B;当为60~80时,输出字符C。当小于60时,输出字符D。 答: #include <stdio.h> //头文件 void main( ) //主函数 { float score=92; if(score>=90) { printf(“A”); } else if(score<90 && score>=80) { printf(“B”); } else if(score<80 && score>60) { printf(“C”); } else { printf(“D”); } } 4、开发一个单片机程序,接收计算机通过串口发送的数据流,将其中的小写字符转换为大写字符,并回送给计算机。 答: #include<string.h> //头文件 #include<stdio.h> #include <reg51.h> void main(void) //主函数 { char a; char c; SCON=0x50; //串口模式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); } } 收集于网络,如有侵权请联系管理员删除
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服