c语言实验报告实验一 c语言实验报告范文

c语言实验报告实验一 c语言实验报告范文

因为在C语言草创的年代,UNIX是最好的大型机系统.下面是为大家带来的c语言实验报告范文,希望可以帮助大家。

c语言实验报告范文范文1:

1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。这样可以大大降低内存占用空间。定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;

6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。如指针p是指向data区,则应定义为: char data *p;。还可指定指针本身的存放内存类型,如:char data * xdata p;。其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:

从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别

data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)

xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题

"单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲."这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.

答:

其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE

四、如何将一个INT型数据转换成2个CHAR型数据?

经keil优化后,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写??

右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX

六、typedef 和 #define 有何不同??

typedef 和 #define 有何不同》》》 如

typedef unsigned char UCHAR ;

#define unsigned char UCHAR ;

typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了

一个新的名字.

#define只是一个标号的定义.

你举的例子两者没有区别,但是#define还可以这样用

#define MAX 100

#define FUN(x) 100-(x)

#define LABEL

等等,这些情况下是不能用typedef定义的

七、请问如何设定KELC51的仿真工作频(时钟)用右键点击左边的的target 1,然后在xtal一栏输入

八、不同模块怎样共享sbit变量,extern不行?把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件

九、C51中对于Px.x的访问必须自己定义吗?

是的。

如sbit P17 = 0x97;即可定义对P1.7的访问

c语言实验报告范文范文2:

一、 实验目的

1、掌握指针的概念、会定义和使用指针变量

2、掌握指向数组的指针变量

3、掌握字符串指针的使用

二、 实验内容

1、 输入3个字符串,按由小到大的顺序输出。(习题10.2)

2、 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(习题10.6)

3、 完善程序,要求使用函数功能:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。

#include

#include

long fun(char *p)

填写程序

void main()

char s[6];

long n;

printf("Enter a string:n");

gets(s);

n=fun(s);

printf("%ldn",n);

三、 实验步骤与过程

四、程序调试记录

c语言实验报告范文范文3:

一、 实验目的

1、掌握c语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握c程序的结构化程序设计方法,能使用c语言开发简单的应用程序。

3、掌握c程序的运行、调试方法等。

二、 实验内容

编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、 使用函数方法定义各个模块。

三、 实验步骤与过程

物理实验报告 ·化学实验报告 ·生物实验报告 ·实验报告格式 ·实验报告模板

四、程序调试记录

  

爱华网本文地址 » http://www.aihuau.com/a/242761/647241813.html

更多阅读

在家做实验一 --神奇的圣诞树 十大最神奇的化学实验

2010.11.29子淳最近在家做了好几个实验,很遗憾,有些实验过程我没有很好地帮他照片记录下来,而我有拍了一卷,结果在照片处理时又不小心被误删。这个先自我批评一下。今天要记录的这个实验一开始连我也不清楚是什么化学药水起的作用,不知

§1.7 实验一:研究匀变速直线运动

§1.7 实验一:研究匀变速直线运动【考点自清】     晶品质心_新浪博客  一、实验目的  1.练习使用打点计时器,学习利用打上点的纸带研究物体的运动.  2.掌握判断物体是否做匀变速运动的方法.  3.测定匀变速直线运动的加速度.

EDA实验一:十进制计数器

实验一QuartusII的VHDL输入设计---应用QuartusII完成基本时序电路的设计姓名:李静学号:1023019857 日期:2013-05-22(一)实验目的: 熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。(二)实验仪器: 计算机一台,

西安市公安局门户网站 关于西安门户网站的分析报告(一)

关于西安门户网站的分析报告(一)       一个新生事物的发展必然会有一个曲折的过程,网络广告的发展依然如此,虽然广告主由怀疑到猜疑再到半信半疑的在互联网上投入广告,虽然网络广告呈现了其欣欣向荣之势。但是对于谨慎的广告主

孟德尔的豌豆杂交实验 孟德尔的豌豆杂交实验(一)教学反思

反思一:孟德尔的豌豆杂交实验(一)教学反思本节课我们重点学习了孟德尔两对相对性状的遗传试验及对试验的解释,通过学习应该掌握子二代出现新性状是由于遗传过程中不同对基因之间发生了组合。应该对子二代中9种基因型和4种表现型的规

声明:《c语言实验报告实验一 c语言实验报告范文》为网友加盐的咖啡分享!如侵犯到您的合法权益请联系我们删除