第10章思考题和习题解答.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章思考题和习题解答

第十章 思考题和习题解答 1. C51语言和汇编语言相比有什么优点? 答:使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势: ① 编程调试灵活方便; ② 生成的代码编译效率高; ③ 模块化开发; ④ 可移植性好; ⑤ 便于项目的维护;2.简述单片机C语言的特点 答:单片机的C语言的特点主要体现在以下几个方面: ① 无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构; ② C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源; ③ C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高; ④ C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充; ⑤ C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差; ⑥ C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率; ⑦ 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。3.C51编译器支持哪些变量类型? 答:C51编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。4.C51 的data、bdata、idata 有什么区别? 答:data、bdata、idata是表明数据的存储类型, data是指片内RAM的低128字节,可在一个周期内直接寻址; bdata是指片内RAM的位寻址区,16字节; idata是指片内RAM的256字节,必须采用间接寻址。5.试说明xdata型的指针长度为何要用2个字节。 答:xdata的地址范围为0x0000到0xFFFF(共64K),它需要两个字节记录,216=64K。 6.把带有条件运算符的表达式max=(ab)?a:b改用if-else语句来写。 解:if(ab) max=a’ else max=b;7~9题答案见课本中相关知识10.用C51编程,将外部RAM的30—35H单元的内容传送到内部RAM的30~35H. 解: #includeabsacc.h main() { char i; for(i=0x30;i0x36;i++) DBYTE[i]=XBYTE[i]; }11.设单片机振荡频率为12MHz,试用51编写一个延时1S的延时子程序。 解: void delay1s(void) { unsigned char h,i,j,k; for(h=5;h0;h--) for(i=4;i0;i--) for(j=116;j0;j--) for(k=214;k0;k--); } 产生的汇编 C:0x0800 7F05 MOV R7,#0x05 C:0x0802 7E04 MOV R6,#0x04 C:0x0804 7D74 MOV R5,#0x74 C:0x0806 7CD6 MOV R4,#0xD6 C:0x0808 DCFE DJNZ R4,C:0808 C:0x080A DDFA DJNZ R5,C:0806 C:0x080C DEF6 DJNZ R6,C:0804 C:0x080E DFF2 DJNZ R7,C:0802 C:0x0810 22 RET 12.用C51编程一个控制程序,让接在P1.0引脚上的发光二极管闪烁发光。 解:程序如下: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit P1_0=P1^0; //延时程序,由Delay参数确定延迟时间 void mdelay(uint Delay) { uint i; for(;Delay0;Delay--) { for(i=0;i124;i++) {;} } } void main() { for( ; ; ) { P1_0=!P1_0; //取

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档