单片机C51编程_考证.doc_第1页
单片机C51编程_考证.doc_第2页
单片机C51编程_考证.doc_第3页
单片机C51编程_考证.doc_第4页
单片机C51编程_考证.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.10 习题一、填空题1最早的单片机是 4 位的。5如果某个特殊功能寄存器 能被8整除 ,那么这个特殊功能寄存器便可以进行位寻址。6单片机的时钟模式包括 片内时钟模式 和 片外时钟模式 两种。二、选择题751系列单片机可以寻址( A )的程序存储空间。A64KBB32KBC8KBD4KB8算术逻辑部件(ALU)不可以执行如下哪个操作( D )。A加法B减法C逻辑运算D傅立叶变换2.4 习题一、填空题2AT89S51具有 32 个通用I/O引脚, 6 个中断源, 2 个定时器/计数器。3Keil Vision3集成开发环境中,编译当前文件的快捷键为 Ctrl+F7 。二、选择题1AT89S51是( A )公司的产品。AAtmelBCypressCMaximDFreescale3.9 习题一、填空题4多分支结构一般采用 JMP 来实现。二、选择题3在下面程序运行后,RAM存储单元20H24H中数值分别变为( A )。01ORG0000H02JMPSTART03ORG1000H04START:MOVA,#04H;累加器A赋值05MOV 20H,#20H;RAM的20H单元赋值06XCH A,20H;直接寻址整字节交换指令07MOV R2,#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;累加器高低字节交换指令21MOV24H,A;保存数据到RAM的23H单元,数据应该为F0H22RET23ENDA0x04H、0x05H、0x06H、0x0FH和0xF0HB0x01H、0x05H、0x01H、0x0FH和0xF0HC0x04H、0x05H、0x02H、0x0FH和0xF0HD0x04H、0x05H、0x06H、0x0FH和0xFFH4.11 习题二、选择题4下面这段程序的运行结果为( A )。01#include /头文件02void main()/主函数0304int a,b,c,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=0四、编程题编写一个成绩等级的程序。要求输入学生的成绩范围为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”);5.13 习题一、填空题1在C51语言的程序中,循环语句一般采用 for 、 do-while 和 while 来实现。2字符在C51语言的程序中,跳转语句一般采用 goto 、 break 和 continue 来实现。二、选择题2break语句不能应用于那个语句内部( A )。AifBforCwhileDdo-while3下面这段程序的运行结果为( A )。01#include /头文件02void main()/主程序0304char ch;05ch=a;/赋值06switch(ch)/开关语句0708case a:/如果为a,则输出A09printf(ch的大写字符为A);10break;11case b:/如果为b,则输出B12printf(ch的大写字符为B);13break;14default:/否则输出这里15printf(Not a and b);16break;1718Ach的大写字符为ABch的大写字符为BCNot a and bD都不是四、编程题编写一个子函数来实现如下函数的计算,其中,x为整数,并计算x=5时的函数值。01#include /头文件02int Fun(int x)0304int i,y;05if(x0) /判断x的值0607y=1;08for(i=1;i=x;i+) /阶乘运算0910y=y*(i+1);1111y=y-1;1213else1415y=3*x*x+2*x+1; /计算数学表达式1617return y; /返回语句1819void main()/主函数2021int x=5,y;22y=Fun(x);/函数调用23printf(y=%dn,y);/打印输出结果246.8 习题一、填空题3在程序中声明 字符串数组 时,其长度必须比要存的字符串多一个元素,最后一位元素用来存储 空字符“0” 。5在C51语言中,虽然不能动态分配 数组的大小 ,但是可以动态分配 数组元素的值 。二、选择题3访问多维数组元素的时间要( A )访问一维数组元素的时间。A大于B等于C小于D不确定4在下面程序运行结果为( C )。01#include /头文件02#include /提供字符串操作的头文件03void main()/主函数0405char a10=a,b;/声明字符串数组,并赋值06char b=good;07char s30;08strcat(a,b);/将字符串b追加到a的末尾09strcpy(s,a);/将字符串a复制到字符串s10printf(s=%sn,s);/输出字符串s11As=abBs=goodCs=abgoodDs=abgoodn7.9 习题一、填空题3指针变量的专用运算符包括 & 和 * 。4指针变量可以参与 关系 和 算术 运算。二、选择题3在下面程序可能的运行结果为( A )。01#include /头文件02void main()/主程序0304int ch34=1,1,3,3,5,6,7,8,9,10,1,2;/定义并初始化二维数组ch05printf(ch=%d,ch);/输出ch的值06printf(*ch=%dn,*ch);/输出*ch的值07Aa=1000,*a=1000Ba=1000,*a=2000Ca=2000,*a=1000Da=1010,*a=20008.10 习题二、选择题4下面这段程序的运行结果为( A )。01#include /头文件02struct student/声明结构0304int num;/学号05char name20;/姓名06char sex2;/性别07int age;/年龄08float score;/分数09 class15=/声明结构数组并初始化10100Alice, F, 24, 90.5,11101,Bob, M , 24, 88.0,12102,Jack, M , 25, 95.5,13103,Twis, M , 23, 69.5,14104,Bohm, M , 21, 82.515;16void main()/主函数1718int i;19for(i=0;i=95.0)/判断分数是否大于90,如果大于则输出22printf(%d %s %s %d %f n, 23class1i.num,, 24class1i.sex,class1i.age, class1i.score);2526A100 Alice F 24 90.500000B102 Jack M 25 95.500000C101 Bob M 24 88.000000D103 Twis M 23 69.5000009.7 习题一、填空题2从 数据存储 角度来说,结构和联合变量的区别主要在于 联合变量的成员 占用同一个内存空间,而 结构变量中的成员 分别独占自己的内存空间,互相不干扰,二、选择题2位域中的一个位段可以存储在( A )。A一个字节B多个字节C相邻两个字节D以上都可以10.9 习题一、填空题3在C51语言中,除了 main 函数外,各个函数都是平行的。4函数的调用方式包括 赋值调用 、 引用调用 、 递归调用 和 嵌套调用 。二、选择题2toascii(245)的结果为( A )。AuB245CUD12711.8 习题4在下面程序运行结果为( A )。01#include /头文件02#define SCORE 85/宏定义03void main()/主函数0405#ifdef SCORE/条件编译06printf(SCORE existed!);/如果宏SCORE存在,则执行该语句07#else08printf(No SCORE!);/如果宏SCORE不存在,则执行该语句09#endif10#ifndef GREED11printf(GREED is not defined!);/如果宏GREED存在,则执行该语句12#else13printf(GREED is defined!);/如果宏GREED不存在,则执行该语句14#endif15ASCORE existed! GREED is not defined!BNo SCORE! GREED is not defined!CSCORE existed! GREED is defined!DNo SCORE! GREED is defined!四、编程题使用嵌套汇编的方法编写一个可以精确控制P2端口引脚电平延时的程序。01#include /头文件02void main()/主函数0304while(1)0506P2=0x00;/P2端口输出07#pragmaasm/嵌入汇编语句08NOP09NOP10SETB P2.0/置P2.0为高电平11NOP12NOP13#pragma endasm/结束汇编语句嵌入14P2=0x00;/P2端口输出151612.7 习题一、填空题4在Keil Vision编译系统中,支持的8051系列单片机存储模式共有如下三种 Small模式 、 Compact模式 和 Large模式 。二、选择题2bdata不可用于那个类型的声明( C )。AintBshort13.8 习题一、填空题2T0和T1都具有 定时 和 计数 的功能,可以通过特殊功能寄存器来选择。3寄存器TMOD的 C/ 位又称为 工作方式选择位 ,可以选择定时功能或者计数功能。二、选择题1T1不可以工作如下那个模式( D )。A工作模式0B工作模式1C工作模式2D工作模式32以下哪个寄存器可以位寻址( B )。ATMODBTCONCTH0DTL03以下哪个工作模式为16位计数器方式( B )。A工作模式0B工作模式1C工作模式2D工作模式3451系列单片机最多可以使用( B )个定时器/计数器。A2B3C1D414.10 习题一、填空题151系列单片机提供了三类中断源,即 外部中断源 、 串行中断源 和 定时中断源 。2单片机外部中断源,分别为 外部中断0 和 外部中断1 。二、选择题451系列单片机对中断的查询次序为( C )。A外部中断1T0外部中断0T1串行中断B外部中断0T1外部中断1T0串行中断C外部中断0T0外部中断1T1串行中断D外部中断1T1外部中断0T0串行中断15.9 习题2 SM0 和 SM1 是串行通信接口工作方式选择位。二、选择题3如下那个寄存器可位寻址( A )。ASCONBPCONCSBUFD以上都可以4波特率= fosc2SMOD/64是如下那个串口工作模式的波特率公式( C )。A模式0B模式1C模式2D模式316.7 习题一、填空题3中断法是将键盘扫描程序放置在单片机的 中断服务例程 中的方法。只有当按键按下的时候,才触发 中断 ,进而 扫描键值 。4 阵列式按键键盘 是将各个开关排列成行和列的阵列结构,其中,单片机的I/O接口一部分作为 行 ,一部分作为 列 ,按键布置在行线和列线的 上。5直接式按键键盘就是采用 单独的按键开关 ,直接连接到一个单片机的输入引脚上,每个按键占用 一个单片机的I/O接口 。四、编程题编写一个程序,单片机外接44阵列式按键键盘和蜂鸣器,根据按键键值的不同使蜂鸣器响相应的次数。答:#include /头文件#include/头文件int row;/定义行号int tier; /定义列号int KeyScan(); /子函数声明void Delay();void main() /主函数int Key,i;while(1)/开始循环扫描键盘Key=KeyScan();/键盘扫描子函数for(i=0;i0;i-);/可以根据系统的时钟频率来调整int KeyScan() /键盘扫描子函数P1=0xF0;/列输出全0if(P1&0xF0)!=0xF0) /扫描行,如果不全为0,则进入switch(P1) /获得行号case 0x70:row=1;break;case 0xB0:row=2;break;case 0xD0:row=3;break;case 0xE0:row=4;break;default:break;Delay();/延时去抖动P1=0x0F; /行输出全0if(P1&0x0F)!=0x0F)/扫描列,如果不全为0,则确认按键按下switch(P1)/获得列号case 0x07:tier=1;break;case 0x0B:tier=2;break;case 0x0D:tier=3;break;case 0x0E:tier=4;break;default:break;return 4*(row-1)+tier; /扫描到按键,返回键值elsereturn 0;/未扫描到按键按下,返回017.7 习题一、填空题17段共阳极LED数码管,其中包括了7个 条形发光二极管 和一个 小数点位 。7个发光二极管构成 字形“8” ,可以用来显示数字,另一个发光二极管构成 小数点 。2共阴极7段LED数码管有发光二极管的 阴极 为公共端,接 GND 。如果发光二极管的阳极为 高电平 的时候,发光二极管导通,该字段发光;反之,如果发光二极管的阳极为 低电平 的时候,发光二极管截止,该字段不发光。5LED驱动器MAX7219片内具有14个内部 数字 和 控制 寄存器。二、选择题17段共阳极LED数码管显示字符“A”的段码为( A )。A88HB77HC66HD99H27段共阴极LED数码管显示字符“0”的段码为( B )。AC0HB3FHC00HDAAH3下列哪个不是MAX7219的特点( D )。A可以级联B驱动8个7段共阴极LED显示器C采用三线串行方式D高速率4静态驱动多个LED数码管有哪些(多选)( ABD )。A直接驱动B串行接口扩展I/O接口驱动C动态扫描D使用外部扩展RAM地址来驱动18.8 习题一、填空题1I2C总线全称为 芯片间总线(Inter Integrate Circuit BUS) ,其是Philips公司推出的一种 双向二线制 总线。3 引脚地址 是由I2C总线外围器件的地址引脚 (A2,A1,A0) 决定,根据其在电路中接电源正极、接地或悬空的不同,形成不同的地址代码。4I2C总线上的数据是伴随着 时钟脉冲 ,一位一位地传送的,每位数据占一个时钟脉冲。在I2C总线启动后或应答信号后的 第18个时钟脉冲 ,对应于要传送字节的8位数据,数据位由 低 到 高 传送。5AT24C08是Atmel公司典型的 I2C串行 总线的EEPROM,其具有 10248 位的存储容量,工作于 从器件模式 模式。四、编程题开发一个写I2C总线接口EEPROM的程序,并提供检验功能,当检验失败的时候提供报警。答:利用单片机的P1.0、P1.1作为I2C串行总线的SCL、SDA接口,向AT24C08写入8个字节的数据,然后再将写入的数据读出,并比较。如果读写的数据完全一致,则置P3.7引脚为高电平,发光二极管亮;否则置P3.7引脚为低电平,发光二极管灭。程序代码示例如下:#include /*/#define WriteDeviceAddress 0xa0/写器件地址#define ReadDviceAddress 0xa1/读器件地址/*/sbit SCL=P10;/I2C时钟线SCLsbit SDA=P11;/I2C数据线SDAsbit DOG=P37;/程序运行标志及数/据读写正确标志/*/*这部分是前面的各个C语言读写子程序,这里省略*/*/void main()unsigned char writeByte8=0xC0,0x34,0x12,0x11,0x22,0x01,0x00,0x00;/需要写的8个字节USB数据IDunsigned char readByte8;/用于存读入的8个字节数据unsigned char *addw;/写数据指针操作unsigned char *addr;/读数据指针操作unsigned char i;unsigned char ok=0;bit write=1;/读写标志DOG=0;while(1)if(write=1)/当write=1时,执行写和读操作addw=writeByte;/写地址映射addr=readByte;/读地址映射WriteI2C(addw,0x00,8);/写数据ReadI2C(addr,0x00,8);/读数据for(i=0;i8;i+) /判断每个字节读写是否一致if(writeBytei=readBytei)ok+;if(ok=8)DOG=1;/当读写一致时,P3.7输出高电平elseDOG=0;/当读写不一致时,P3.7输出低电平write=0;/置write=0,读写完毕19.6 习题一、填空题2RS-485标准也是一种 平衡传输 方式的串行接口标准,在工业领域应用的尤其广泛。RS-485标准是一种 多发送器 的电路标准,允许在双导线上有多个发送器,也允许一个发送器驱动 多个负载设备 。4RS-423A标准是一种采用 非平衡数据传输 的方式。二、选择题2当单片机为3.3V供电时,应采用( B )接口芯片。AMAX323ACPEB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论