1、9月27日工信部单片机考试题A带答案精品文档A卷选择题(每题2分,共60分)18051单片机的一个机器周期由( D )个时钟周期构成。A3B4C5D6251系列单片机可以寻址( A )的程序存储空间。A64KBB32KBC8KBD4KB3下列指令哪个不可以用作分支结构( C )。AJBBJCCADDDJZ4在下面程序运行后,RAM存储单元20H24H中数值分别变为( A )。01ORG0000H02JMPSTART03ORG1000H04START:MOVA,#04H;累加器A赋值05MOV 20H,#20H;RAM的20H单元赋值06XCH A,20H;直接寻址整字节交换指令07MOV R2
2、,#05H;寄存器R2赋值08XCHA,R2;寄存器寻址整字节交换指令09MOV21H,A;保存数据05H到RAM的21H单元10MOV10H,#06H;RAM单元赋值11MOVR0,#10H;寄存器R0赋值12XCHA,R0;寄存器间接寻址整字节交换指令13MOV22H,A;保存数据06H到RAM的22H单元14MOVA,#00H;累加器A赋值15MOV11H,#0FH;RAM单元赋值16MOVR1,#11H;寄存器R1赋值17XCHDA,R1;半字节交换指令18MOV23H,A;保存数据到RAM的23H单元,数据应该为0FH19MOVA,#0FH ;累加器A赋值20SWAPA;累加器高低字
3、节交换指令21MOV24H,A;保存数据到RAM的23H单元,数据应该为F0H22RET23ENDA0x04H、0x05H、0x06H、0x0FH和0xF0HB0x01H、0x05H、0x01H、0x0FH和0xF0HC0x04H、0x05H、0x02H、0x0FH和0xF0HD0x04H、0x05H、0x06H、0x0FH和0xFFH5以下哪个不是C51的关键字( D )。AifBcaseCreturnDch6以下哪个运算符的优先级最高( A )。A()B+C&D%7下面这段程序的运行结果为( A )。01#include /头文件02void main()/主函数0304int a,b,c
4、,d,e;/声明变量05float f1,f2;06a=7;/变量赋值07b=9;08c=!a;/计算逻辑表达式09d=a|b;10f1=2.3;11f2=5.7;12e=(f1!=f2);13printf(c=%d,d=%d,e=%dn,c,d,e);/输出结果14Ac=0,d=1,e=1Bc=1,d=1,e=1Cc=0,d=1,e=0Dc=1,d=0,e=08break语句不能应用于那个语句内部( A )。AifBforCwhileDdo-while9下列哪个不可以用于声明数组( D )。AcharBintCfloatDvoid10如果p是指向数组ch的指针变量,设n为一个正整数,则下述运
5、算那个不符合C51语言的规则( D )。Ap+nBp+Cp-Dp*n11位结构中的数据类型可以为( A )。AunsignedBfloatCvoidDstruct12结构指针变量成员的引用方法可以为(多选)( ABCD )。A(*结构指针变量). 成员名B*结构指针变量. 成员名C结构指针变量-成员名D以上三种都可以13struct关键字可以用于定义(多选)( AB )。A结构B位域C枚举D联合14联合变量、枚举变量和位域变量的声明方法为(多选)( ABCD )。A先定义后声明B定义同时声明C直接声明D以上都可以15使用指针作为函数参数,在函数执行后,实参变量( A )。A变了B不变C有可能变
6、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 )。AintBsfrCbdataDcode20T1不可以工作如下那个模式( D )。A工作模式0B工作模式1C工作模式2D工作模式321以下哪个工作模式为16位计数器方式( B )。A工作模式0B工作模式1C工作模式2D工作模式322单片机的外部中断源由( C
7、 )来实现。AP3.0BP3.1CP3.2DP3.323外部中断0的入口地址为( C )。A0081HB0082HC0083HD0084H24波特率倍增位对那个模式无效( )。A模式0B模式1C模式2D模式325如下那个寄存器可位寻址( A )。ASCONBPCONCSBUFD以上都可以26如下哪些方法可以实现按键去抖(多选)( ABD )。A软件延时B电容式硬件消抖C电阻式硬件消抖D双稳态电路消抖27键盘程序设计需要注意的问题为(多选)( ABCD )。A按键消抖B读取键值C多按键处理D避免重复响应287段共阴极LED数码管显示字符“0”的段码为( B )。AC0HB3FHC00HDAAH2
8、9静态驱动多个LED数码管有哪些(多选)( ABD )。A直接驱动B串行接口扩展I/O接口驱动C动态扫描D使用外部扩展RAM地址来驱动30当方向位R/为( A )时,表示主器件读取从器件中的数据。A1B0C2D3编程题(每题10分,共40分)1、编写一个单片机硬件加法的程序,从计算机串口输入两个整型数据,在单片机中相加,然后向计算机返回计算结果。#include /头文件#include#include voidmain(void) /主函数int a;int b;long c;SCON=0x50;/串口模式1,允许接收TMOD|=0x20;/初始化T1为定时功能,模式2PCON|=0x80;
9、/设置SMOD=1TL1=0xF4;/波特率4800bit/s,初值TH1=0xF4;IE|=0x90;/中断TR1=1;/启动定时器printf (Enter two numbern);scanf (%d %d, &a, &b);/输入整型数据c=a+b;printf (a=%d,b=%d,c=%ldn,a,b,c);2、使用嵌套汇编的方法编写一个可以精确控制P2端口引脚电平延时的程序。01#include /头文件02void main()/主函数0304while(1)0506P2=0x00;/P2端口输出07#pragmaasm/嵌入汇编语句08NOP09NOP10SETB P2.0/
10、置P2.0为高电平11NOP12NOP13#pragma endasm/结束汇编语句嵌入14P2=0x00;/P2端口输出15163、编写一个成绩等级的程序。要求输入学生的成绩范围为0100,当为90100时,输出字符A;当为8090时,输出字符B;当为6080时,输出字符C。当小于60时,输出字符D。答:#include /头文件void main( )/主函数 floatscore=92;if(score=90)printf(“A”);else if(score=80)printf(“B”);else if(score60)printf(“C”);elseprintf(“D”);4、开发一
11、个单片机程序,接收计算机通过串口发送的数据流,将其中的小写字符转换为大写字符,并回送给计算机。答:#include /头文件#include#include voidmain(void) /主函数char a;char c;SCON=0x50;/串口模式1,允许接收TMOD|=0x20;/初始化T1为定时功能,模式2PCON|=0x80;/设置SMOD=1TL1=0xF4;/波特率4800bit/s,初值TH1=0xF4;IE|=0x90;/中断TR1=1;/启动定时器while(1)printf (Enter a charn);scanf (%c, &a);/输入数据c= toupper(a);printf (a=%c,c=%c n,a,c);收集于网络,如有侵权请联系管理员删除