您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机d-习题4答案
1习题41.用于程序设计的语言分为哪几种?它们各有什么特点?答:用于程序设计的语言有汇编语言和高级语言。汇编语言是能够利用单片机所有特性直接控制硬件的语言,它直接使用CPU的指令系统和寻址方式,从而得到占用空间小、执行速度快的高质量程序。对于一些实时控制要求高的场合,汇编语言是必不可少的。但对于较复杂的单片机应用系统,它的编写效率很低。为了提高软件的开发效率,编程人员采用高级语言C语言来开发单片机应用程序。目前许多C编译器的效率已接近汇编语言的水平,对于较复杂的应用程序,C语言产生的代码效率甚至超出了汇编语言。但机器语言是计算机唯一能识别的语言,用汇编语言和高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(称为目标程序),计算机才能识别。2.80C51单片机共有哪几种寻址方式?各有什么特点?答:共有7种寻址方式,分别是直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、基址加变址、位寻址、相对寻址3.80C51单片机按功能可以分为哪几类?每类指令的作用是什么?答:分为5类,分别是数据传送类、算术操作类、逻辑运算类、控制转移类、位操作类4.访问SFR,可使用哪些寻址方式?答:直接寻址方式是访问特殊功能寄存器的唯一寻址方式。5.判断以下指令的正误:(1)MOV28H,@R2(2)DECDPTR(3)INCDPTR(4)CLRR0(5)CPLR5(6)MOVR0,R1(7)PHSHDPTR(8)MOVF0,C(9)MOVF0,Acc.3(10)MOVXA,@R1(11)MOVC,30H(12)RLCR0答:(1)×(2)×(3)(4)×(5)×(6)×(7)×(8)(9)×(10)(11)(12)×6.判断下列说法是否正确。(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。(B)指令周期是执行一条指令的时间。(C)指令中直接给出的操作数称为直接寻址。答:(A)(B)(C)×7.在基址加变址寻址方式中,以()作变址寄存器,以()或2()作基址寄存器。答:A,DPTR或PC8.已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后:POPDPHPOPDPLMOVDPTR,#4000HRLAMOVB,AMOVCA,@A+DPTRPUSHAccMOVA,BINCAMOVCA,@A+DPTRPUSHAccRETORG4000HDB10H,80H,30H,50H,30H,50H问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。答:A=(50H),SP=(52H),(51H)=(30H),(52H)=(50H),PC=(5030H)。9.简述单片机的C51语言的特点。答:C51是专门运行于单片机平台的的C语言。它是由C语言继承而来的,具有C语言结构清晰的优点,便于学习,同时又具有其自身的特点,它和ANSIC语言的区别有如下几点:(1).头文件不同。(2).数据类型不同。(3).数据存储类型不同。(4).在函数的使用上有所不同。(5).在编译上有所不同。10.C51编译器能识别的数据类型有哪些?答:C51编译器能识别的数据类型如下图所示;C语言数据类型基本类型构造类型指针类型空类型(void)数值类型字符类型(char)枚举类型(cnum)整型实型短整型(short)整型(int)长整型(long)单精度型(float)双精度型(double)数值类型共用体类型(union)结构体类型(struct)C51的数据类型311.C51编译器能识别的存储器类型有哪些?答:C51编译器可识别的存储器类型如下表所示:存储器类型对应的存储空间说明data直接寻址的片内数据存储器的低128B,访问速度最快bdata可位寻址的片内数据存储器(地址20H~2FH共16B),允许位与字节混合访问idata间接寻址片内数据存储器256B,可访问片内全部RAM空间pdata分页寻址片外数据存储器的256B,使用指令MOVX@Ri访问,页地址由P2口提供xdata片外数据存储器64KB,使用指令MOVX@DPTR访问code寻址程序存储器64KB,使用MOVC指令访问12.按照给定的数据类型和存储类型,写出下列变量的说明形式:(1)在data区定义字符变量val1(2)在idata区定义整型变量val2(3)在xdata区定义无符号字符型数组val3[4]。(4)在xdata区定义一个指向char类型的指针px。(5)定义可位寻址变量flag。(6)定义特殊功能寄存器变量P3。答:(1)chardatavall;(2)intidataval2;(3)unsignedxdataval3[4];(4)charxdata*px;(5)bitflag;(6)sfrP3=0xB0;13.假设x=6,y=9,则执行下列语句后x、y、z的值分别为多少?(1)z=(x++)﹡(--y)(2)z=(++x)-(--y)(3)z=(x++)﹡(y--)(4)z=(++x)+(y--)答:(1)x=7,y=8,z=48;(2)x=7,y=8,z=-1;(3)x=7,y=8,z=54;(4)x=7,y=8,z=16;14.假设x=5,y=8,则分别执行下列语句后z的值为多少?(1)z=x/y(2)z=x%y(3)z=x+(++y)(4)z=x+(y++)(5)z=x&y4(6)z=x|y(7)z=x3(8)z=xy?x:y答:(1)0(2)5(3)14(4)13(5)0(6)15(7)28(8)815.C51语言常用的访问绝对地址的方法有哪几种?答:C51提供了三种访问绝对地址的方法。(1).采用预定义宏(2).采用扩展关键字_at_(3).采用指针变量16.编写程序实现下列功能:在P1.0端口接一个发光二极管L1,使L1不停地一亮一灭,亮灭的时间间隔为0.2秒(假设P1端口输出高电平,发光二极管灭)。要求用proteus仿真验证。解:程序流程图如下:参考程序为:#includereg51.hsbitL1=P1^0;voiddelay02s(void)//延时0.2秒子程序5{unsignedchari,j,k;for(i=20;i0;i--)for(j=20;j0;j--)for(k=248;k0;k--);}voidmain(void){while(1){L1=0;delay02s();L1=1;delay02s();}}17.编写程序实现下列功能:开关K1接在P3.0端口上,用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭(假设P1端口输出高电平,发光二极管灭)。要求用proteus仿真验证。解:程序流程如图如下:参考程序为:#includereg51.hsbitK1=P3^0;sbitL1=P1^0;voidmain(void){while(1){if(K1==0){L1=0;//灯亮}else{L1=1;//灯灭}6}}18.编写程序实现下列功能:利用单片机的P0.0~P0.3接四个发光二极管L1~L4,P0.4~P0.7接四个开关K1~K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。要求用proteus仿真验证。解:开关状态检测:对于开关状态检测,相对单片机来说,是输入关系,可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,也可以一次性检测四路开关状态,然后让其指示。源代码为:方法1#includereg51.hunsignedchartemp;voidmain(void){while(1){temp=P14;temp=temp|0xf0;P1=temp;}}方法2#includereg51.hsbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;voidmain(void){while(1){if(P1_4==0){P1_0=0;}else{P1_0=1;}if(P1_5==0){7P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}elseP1_3=1;}}
本文标题:单片机d-习题4答案
链接地址:https://www.777doc.com/doc-4794080 .html