最全单片机参考答案(姜志海)

更新时间:2024-05-12 04:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机的C语言概述

1.写出一个单片机的C语言程序的构成。

答:一个单片机的C语言程序构成如下: #include < > long fun1( ); float fun2( ); int x,y; float z; fun1( ) { } main( ) { } fun2( ) { }

...

/*功能函数2*/

...

/*主函数*/

...

/*功能函数1*/

/*预处理命令*/ /*函数说明*/

2.标准C语言有那些特点?

答:(可以参照第3题)

3.标准C语言程序主要的结构特点是什么?

答:标准C语言的主要结构特点有以下几点: ① 语言简洁、紧凑,使用方便、灵活

标准C语言共有32个关键字、9种控制语句。程序书写形式自由,与其他高级语言相比较,程序简练、简短。

② 运算符、表达式丰富

1

标准C语言包括34种运算符,而且把括号、赋值、强制类型转换等都作为运算符处理。表达式灵活、多样,可以实现各种各样的运算。

③ 数据结构丰富,具有现代化语言的各种各样的数据结构

标准C语言的数据类型有整型、实型、字符型、数组类型、指针类型等,并能用来实现各种复杂的数据结构。

④ 可进行结构化程序设计

标准C语言具有各种结构化的程序语句,如if...else语句、while语句、do...while语句、switch语句、for语句等。

⑤ 可以直接对计算机硬件进行操作

标准C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以对硬件直接进行操作。

⑥ 生成的目标代码质量高,程序执行效率高

众所周知,汇编语言生成的目标代码的效率是最高的。但据统计表明,对于同一个问题,用C语言编写的程序生成目标代码的效率仅比汇编语言编写的程序低10%~20%。而C语言编写程序比汇编语言编写程序方便、容易得多,可读性强,开发时间也短得多。

⑦ 可移植性好

不同的计算机汇编指令不一样,用汇编语言编写的程序用于另外型号的机型使用时,必须改写成对应机型的指令代码。而标准C语言编写的程序基本上都不用修改就可以用于各种机型和各类操作系统。

4.简述C51语言和汇编语言的比较

使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势: ① 编程调试灵活方便; ② 生成的代码编译效率高; ③ 模块化开发; ④ 可移植性好; ⑤ 便于项目的维护;

5.简述单片机的C语言和标准C的比较

2

答:单片机的C语言和标准C的比较主要有以下几点不同: ① C51中定义的库函数和标准的C语言定义的库函数不同; ② C51中的数据类型和标准C的数据类型也有一定的区别; ③ C51变量的存储模式与标准C中变量的存储模式不一样; ④ C51与标准C的输入/输出处理不一样;

⑤ C51与标准C语言在函数使用方面有一定的区别。

6.简述单片机的C语言的特点

单片机的C语言的特点主要体现在以下几个方面:

① 无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构;

② C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源;

③ C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高; ④ C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充;

⑤ C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差;

⑥ C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率;

⑦ 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。

7.简述使用KeilC51开发工具开发软件的流程

使用Keil Software工具时,用户的项目开发流程和其它软件开发项目的流程极其相似,主要包括以下几个步骤:

① 创建一个项目,从器件库中选择目标器件并配置工具软件的设置; ② 用C语言或汇编语言创建源程序; ③ 用项目管理器生成用户的应用; ④ 修改源程序中的错误; ⑤ 调试链接后的应用。

3

一个完整的8051工具集的框图可以很好地表述此开发流程,如图1-1所示。

4

第2章 C51语言程序设计基础

1.哪些变量类型是51单片机直接支持的?

答:C51编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。

C51编译器支持的数据类型、长度和值域如表2-1所示。

表2-1 C51的数据类型

数据类型 bit unsigned char signed char unsigned int signed int unsigned long signed long float double 一般指针 长度/bit 1 8 8 16 16 32 32 32 64 24 长度/byte 1 1 2 2 4 4 4 8 3 值域 0,1 0~255 -128~127 0~65 535 -32 768~32 767 0~4 294 967 295 -2 147 483 648~2 147483 647 ±1.176E-38~±3.40E+38(6位数字) ±1.176E-38~±3.40E+38(10位数字) 存储空间 0~65 535

2.简述C51的数据存储类型

答:我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节(从0x80到0xFF)只能间接寻址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。

外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据

5

6.编程实现由DAC0832输出的幅度和频率都可以控制的三角波,即从0上升到最大值,再从最大值下降到0,并不断重复。

/*产生幅值为125,频率为2Hz的三角波*/ #include

#define uchar unsigned char

#define CYCLE 2000 //此波形的得到是通过定时2ms中断,在中断中当数据加到125个数时,再递减到0.如此循环。可得三角波。其T=125*2*2ms=500ms.所以f=2Hz.

uchar xdata DA_data; /*定义变量指向0832的数据输出地址*/

void main(void)

{ TMOD=0x10; /*定时器1工作于方式1*/ TH1=-CYCLE/256; TL1=-CYCLE%6; TR1=1; IE=0x88; while(1); }

void timer1(void) interrupt 2 using 1 { static uchar s_Counter;

static bit flag; //定义递减标志位 if(flag==0)

{ if(s_Counter++>=124) //当增到125时开始递减 { flag=1; } } else

26

{ if(s_Counter--<=0) //当减到0时开始递增 { flag=0; } }

DA_data=s_Counter; //输出需要转换的数据 TH1=-CYCLE/256; TL1=-CYCLE%6; }

27

本文来源:https://www.bwwdw.com/article/eo6g.html

Top