欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机应用项目式教程——基于Keil和Proteus第2版习题答案第2章思考和练习解答.docx

    • 资源ID:1025147       资源大小:59.66KB        全文页数:8页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机应用项目式教程——基于Keil和Proteus第2版习题答案第2章思考和练习解答.docx

    第2章思考和练习解答参阅本书P.34。2.1C51编程与80C51汇编语言相比,主要有什麽优势?答:C51编程与80C5I汇编语言相比,主要的优势是编程相对方便。具体如下:C51软件编程不需过多关注具体的存储单元。用汇编语言编程,几乎每一条指令(除NOP指令)操作都与具体的存储单元有关,80C51单片机的片内存储空间容量有限,编程之初即需安排好片内存储单元的用途,且一般不能重复使用。当一些应用项目较大时,片内存储单元有可能捉襟见肘,稍有不慎就将出错。因此,编程时,不但要注意用哪一条指令正确操作,而且要注意指令在哪一个存储单元操作,编程相对复杂。而C51编程能自动完成变量存储单元的分配和使用,且对函数内局部变量占用的存储单元,仅在调用时临时分配,使用完毕即行释放,大大提高了片内有限存储空间的利用效率。使用者只需专注于软件编程,不需过多关注具体的存储单元及其操作指令。因此,编程相对方便。便于实现各种更杂的运算和程序。C语言有丰富且功能强大的运算符,能以简单的语句方便地实现各种复杂的运算和程序。相比之下,汇编语言要实现较复杂的运算和程序,就比较困难。例如,双字节的乘除法,汇编语言要用许多条指令操作才能完成;而C51只需一条语句便能实现。又例如,循环、查表和散转等程序,C51语句实现起来也相对简单方便。可方便地调用各己有程序模块。已有程序模块包括C51编译器中丰富的库函数、用户自编的常用接口芯片功能函数和以前已开发项目中的功能函数。读者可能会说,汇编程序不也一样可以调用吗?不一样。汇编程序调用时,涉及到模块中具体的存储单元,这些存储单元很可能与主调用程序有重复,会引起冲突而出错。而C51程序函数中的变量一般为局部变量,主函数调用前不占用存储单元,仅在调用时由C51编译器根据空余情况临时分配,使用完毕即行释放,因而一般不会发生冲突而出错。因此,C51程序可方便地调用各已有程序模块,减少重复劳动,大大提高编程效率。(4)编译生成的代码效率比汇编语言低一些;实时时效不如汇编语言快捷;一条C语言指令编译后,会转换成很多机器码,占用单片机片内资源较多。2.2C51基本数据类型有哪几种?其数据长度为多少?答:参阅教材书基础知识4.1,图2-32.3 C51标识符命名有何要求?答:在C51程序中,数据、变量和函数等常用标识符表示。实际上,标识符就是一个代号或名字。C51规定:标识符只能由字母、数字和下划线三种字符组成,且须以字母或下划线开头。标识符不能与“关键词”同名。英文字母区分大小写。即标识符中的英文字母大小写不能通用。2.4 怎样理解变量的存储器类型和编译模式?答:存储器类型和编译模式是确定变量存放在那一存储区域,不同的存储区域与访问速度有关。存储器类型是在变量定义时确定,而未定义存储器类型的变量由编译模式默认。存储种类与变量存放在那一存储区域基本无关(除寄存器类变量),与变量值的生存期和作用范围有关。中、小型程序一般可采用默认的存储种类auto。变量的存储种类与变量的存储器类型、编译模式是两个完全不同的概念,不能混淆。2.5 为什么变量要尽量使用无符号字符型格式?答:C51变量的基本数据类型主要有字符型Cha八整型ini和长整型IOng,又可分别分为有符号Signed和无符号UnSigned。80C51是8位机,本身并不支持有符号运算。若变量使用有符号格式,C51编译器要进行符号位检测并需调用库函数,生成的代码比无符号时长得多,占用的存储空间会变大,程序运行速度会变慢,出错的机会也会增多。80C51单片机主要用于实时控制,变量一般为8bit无符号格式,16bit较少,有符号和有小数点的数值计算也很少。因此,在已知变量长度和正整数的情况下,应尽量采用无符号格式:UnSignedChar。2.6 为什么变量要尽量使用局部变量?答:与80C51汇编语言相比,C51编程的突出优点是能自动完成变量存储单元的分配和使用,对函数内局部变量占用的存储单元,仅在调用时临时分配,使用完毕即行释放,大大提高了片内有限存储空间的利用效率。使用者只需专注于软件编程,不需过多关注具体的存储单元及其操作指令。因此,编程相对方便。使用全局变量的缺点:一是始终占用一个固定的存储单元,降低了内部存储单元的利用率;二是降低了函数的通用性。若函数涉及某一全局变量,该函数移植到其他文件时需同时将全局变量一起移植。否则,若全局变量名与其他文件中的变量同名,就会出现问题。三是过多使用全局变量,降低了程序的清晰度。若程序较大,人们较难清晰地判断程序执行过程中每个瞬间全局变量的变化状况,易出错。因此,应尽量减少全局变量的使用,能不用就尽量不用。2.7 for循环语句括号内3个表达式分别表示什麽含义?能否缺位?答:第一个表达式是循环变量初值,第二个表达式是循环终止条件,第三个表达式是循环变量更新。3个表达式之间必须用分号“;”分隔,允许有一个或多个缺位。2.8 while(1)和for(;)表示什麽含义?答:While(I)和for(;)均表示一个循环条件始终满足的无限循环。若后面有循环体语句,则反复无限执行循环体语句;若后面无循环体语句,则表示程序在原地踏步。2.9 什麽是数组?如何定义和表示?答:数组是一组具有相同类型数据的有序集合。例如:inta(10=10,11.22,33.44,55.66,77,88,99;上式表示:数组名为a,数组内的数据类型为int,元素个数(也称为数组长度,即数组内数据的个数)有10个。10个数组元素分别为:a0=10,al=ll,a2=22,a3=33,a4=44,a5=55,a6=66,a7=77,a8=88,a9=99°需要注意的是,数组定义时,方括号内是数组元素个数;数组元素引用时,方括号内是数组元素的序号。而且,数组元素序号是从0开始编号的。因此,上述数组a10中没有a10这个数组元素,其最后一个数组元素是a9。2.10 函数参数传递,值传递与地址传递有什麽不同?答:函数的实参传递给形参,称为值传递。值传递是单向的,即不会影响主调用函数中实参值的变化。指针变量或数组作为实参传递给形参时,是将一个变量的地址传送到另一个函数中去,称为地址传递,其结果具有双向性。若在被调用函数中该地址存储单元中的内容发生了变化,在调用结束后这些变化将被保留下来,即其结果会被返回到主调用函数。P17.'P1680C5LPl2PLb"PLOUSO5限11录而笆毕N1=1黄徐N11-5VQ图双键控3灯电路.2.11 已知双键控3灯电路如图211所示,要求实现:So单独按下,红灯亮,其余灯灭;Sl单独按下,绿灯亮,其余灯灭;So、Sl均未按下,黄灯亮,其余灯灭;So、Sl均按下,红绿黄灯全亮。试按任务4.1中3种形式编写C51程序,画出ProteusISIS虚拟电路,并仿真调试。解:if-else语句include<rcg5l.h>头文件包含访问瓯库函数rcg51.hsO=P17;定义位标识符So为P1.7s1=P16;定义位标识符Sl为Pl.6R=P12;定义位标识符R为PL2G=P11;定义位标识符G为PI.1Y=P10;定义位标识符Y为PLOmain()无类型主程序while(l)无限循环if(sO!=O)(sl!=O)Y=0;R=G=I;)/SO、Sl均未按下,黄灯亮,其余灯灭elseif(sO!=l)&&(sl!=O)R=O;G=Y=1;/SO单独按下,红灯亮,其余灯灭elseif(sO!=0)&&(sl!=l)G=0;R=Y=1;/Sl单独按下,绿灯亮,其余灯灭elseR=G=Y=05/SO、Sl均按下,3灯均亮if语句嵌套include <reg5 l.h sbit sO=P17;shit SI=PIA6;sbit R=P12;sbit G=P11;sbit Y=P10;void main () while(l)if(s!=l)头文件包含访问或库函数reg51.h定义位标识符§0为PL7定义位标识符Sl为PL6定义位标识符R为PI.2定义位标识符G为PLI定义位标识符Y为PLO无类型主程序/无限循环若SO按下if(sl!=l)R=G=Y=0J/SO、Sl均按下,3灯均亮elseR=0;G=Y=IJS0按下,Sl未按下,则红灯亮,其余灯灭else若SO未按下if(81!=l)G=0;R=Y=1;/SO未按下,Sl按下,则绿灯亮,其余灯灭elseY=0;R=G=l;S0、Sl均未按下,则黄灯亮,其余灯灭(3)switch语句include <reg5 l.h>void main ()unsigned char x:Pl=Pl0xc7;while(l)x=Pl0xc0;switch (x)case 0: Pl=Pl&0xf8 OxcOzbreak;头文件包含访问政库函数reg5Lh无类型主程序定义无符号字符型变量X,.置PL7、PL6输入态,红球黄灯灭,其余端口状态不变无限循环读PI口中PI.7、P1.6开关状态“switch语句开头,根据表达式X的值判断/SOsSl均按下,3灯均亮,终止SWitCh语句CaSeoX80:PI=Pl&0xf80xc5;break;Sl单独按下,球灯亮,其余灯灭,终止SWitCh语句CaSeOX40:PI=Pl&Oxf8Oxc3;break;SO单独按下,红灯亮,其余灯灭,终止SWitCh语句default:Pl=Pl&0xf8|0xc6;/SO.SI均未按下,黄灯亮,其余灯灭2.12 求:SiIm=I+3+5+99。试用“while循环”编写、输入源程序并调试运行。解:void main () unsigned char n=l;unsigned int SUm=0;while (n<=99) sum=sum+n;n=n+2;WhiIe(1);无类型主程序定义无符号字符型变量n,并赋初值定义无符号整型变量Sum,并赋初值循环条件判断:当nW99时循环,否则跳出循环循环体语句:累加求和修正循环变量,n=n+2,并返回循环条件判断原地等待2.13 求:SUm=2+4+6+100。试用"dowhile循环”编写、输入源程序并调试运行。解:voidmain()/主程序*,unsignedcharn=2:-定义无符号字符型变量n,并赋初值”Unsignedintsum=0:定义无符号整型变量SUm,并赋初值Pdosum=sum+n:n=n+2:)/.循环体语句:累加求和,并修正循环变量Pwhile(n<=100);/循环条件判断:当nW100时循环,否则跳出循环Pwhile(l);)-/原地等待,include <reg5 l.h 彳 include <stdio.h>void main () unsigned char n=l;unsigned long fec=l;unsigned long sum=0;fbr(; n<=10; n+)j*=

    注意事项

    本文(单片机应用项目式教程——基于Keil和Proteus第2版习题答案第2章思考和练习解答.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开