科研实践 开发板C语言程序

合集下载

实验三、c语言程序实验和c语言调用汇编程序实验

实验三、c语言程序实验和c语言调用汇编程序实验

实验三:C语言程序实验和C语言调用汇编程序实验一、实验目的通过实验了解使用ADS 1.2 编写C 语言程序,并进行调试。

二、实验设备硬件:PC 机一台软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境三、实验内容编写一个汇编程序文件和一个C 程序文件。

汇编程序的功能是初始化堆栈指针和初始化C 程序的运行环境,然后调跳转到C 程序运行,这就是一个简单的起动程序。

C 程序使用加法运算来计算1+2+3+...+(N-1)+N 的值(N>0)。

四、实验预习要求仔细阅读教材中的ARM 指令系统的内容;熟悉ADS 工程编辑和AXD 调试的内容。

(本实验使用软件仿真)五、实验步骤1. 启动ADS 1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC。

2. 建立源文件Startup.S 和Test.c,编写实验程序,然后添加到工程中。

3. 设置工程连接地址RO Base 为0x40000000,RW Base 为0x40003000。

设置调试入口地址Image entry point 为0x40000000。

4. 设置位于开始位置的起始代码段,如图3.8所示。

图 3.8 设置位于开始位置的起始代码段5. 编译连接工程,选择【Project】->【Debug】,启动AXD 进行软件仿真调试。

6. 在Startup.S 的“B Main”处设置断点,然后全速动行程序。

7. 程序在断点处停止。

单步运行程序,判断程序是否跳转到C 程序中运行。

8. 选择【Processor Views】->【Variables】)打开变量观察窗口,观察全局变量的值,单步/全速运行程序,判断程序的运算结果是否正确。

六、实验参考程序C 语言实验的参考程序见程序清单3.3。

汇编起动代码见程序清单3.4。

程序清单3.3 C 语言实验参考程序#define uint8 unsigned char#define uint32 unsigned int#define N 100uint32 sum;// 使用加法运算来计算1+2+3+...+(N-1)+N 的值。

实验2 C语言开发

实验2 C语言开发

实验内容和步骤1.设置CCS运行环境(1)启动CCS配置程序。

双击桌面快捷图标(Setup CCStudio v3.3),弹出对话框,如图所示;(2)清除以前定义的配置。

点击按钮(Remove All),弹出清除命令对话框,单击“是”,清除以前配置。

(3)选择与目标系统相匹配的配置文件。

例如本实验中使用C54x软件仿真器(C54xx Simulator),则在栏中选择如下:Family项选择C54xxPlatform项选择SEEDXDS510PLUS emulator然后再列表中选择C5402 SEEDXDS510PLUS Emulator点击(<<add)按钮,将选择的目标芯片加入列表中(4)保存系统配置。

点击按钮(Save & Quit),在弹出对话框中选择“是”,确认退出。

稍等片刻后,系统自动进入CCStudio v3.3 程序。

注:左下角若为绿色表示连接成功,红色则连接不成功。

2.打开工程文件。

(1)在CCStudio v3.3程序界面中单击菜单(Project),选择Open命令。

弹出对话框打开fir文件夹,选择lcd.pjt文件,点击;此时,Files下打开了一个工程。

点击lcd.pjt前的加号即可展开,双击lcd.c,即可以看到lcd的C程序代码。

3.编译、链接源文件。

编译、链接源文件是指对lcd.c进行编译、链接,单击如下图中所示的rebuild快捷键。

如果有错误则应该修改C程序代码,直到出现“0 Errors”为止。

4.载入(.out)文件如果编译、链接没有出现错误,则在菜单File中找到Load Program,单击一下鼠标左键,出现“Load Program”对话框选择Debug文件夹下的lcd.out文件,点击打开。

双击文件列表栏中lcd.c,打开lcd.c文件,找到main函数在初始化函数(GUILCD_drawChart(64,64,&a[0],1))处点击鼠标,使光标停在该函数前面。

C语言程序设计实验报告——实验1 C程序的运行环境和运行C程序的方法

C语言程序设计实验报告——实验1 C程序的运行环境和运行C程序的方法

凯里学院 C 语言程序设计 实验报告××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日实验一 C 程序的运行环境和运行C 程序的方法一、实验目的:(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个C 程序。

(3)通过运行简单的C 程序,初步了解C 程序的特点。

二、实验内容: (1) 检查所用的计算机系统是否已安装了C 编译系统并确定它所在的子目录。

(2) 进人C 的工作环境 (3)熟悉集成环境的界面和有关菜单的使用和方法。

(4)输人并运行一个简单的、正确的程序。

(5)输入并编辑一个有错误的C 程序。

三、实验步骤:(1) 检查所用的计算机系统是否已安装了C 编译系统并确定它所在的子目录。

(2) 进人C 的工作环境(3) 熟悉集成环境的界面和有关菜单的使用和方法。

(4) 输人并运行一个简单的、正确的程序。

在屏幕上输出“This is a C program.”。

(教材第1章例1.1)程序:#include <stdio.h>void main(){printf ("This is a C program.\n");}该程序的作用就是在屏幕上输出这样一句话:“This is a C program.”。

下面编写、编译并运行该程序:程序输出结果为:(5) 输入并编辑一个有错误的C 程序。

求两数和,并将其输出。

(教材第1章中例1.2,故意漏打或错打几个字符)程序:#include <stdio.h>int main ()装订线 装订线{int a,b,suma=123; b=456;sum=a+bprintf ("sum is %d\n", sum);}很明显,有两个语句缺少“;”,语法有错误。

c语言开发环境构建及简单的c程序设计

c语言开发环境构建及简单的c程序设计

实验x C语言开发环境构建及简单的C程序设计一、实验目的1、熟悉字符模式下的C程序编译和调试环境,基本掌握麒麟Linux字符模式下的编译工具和调试工具的使用;2、本实验需要综合使用麒麟Linux基本文件命令、编辑器的使用,练习在麒麟Linux 的字符模式下,编辑、编译及调试一个C程序的基本方法。

二、预备知识1、GNU C编译器目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。

GCC 不仅功能非常强大,结构也异常灵活。

最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。

gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

(1)使用GCC通常后跟一些选项和文件名来使用GCC编译器。

GCC命令的基本用法如下:gcc [options] [filenames]命令行选项指定的编译过程中的具体操作(2)GCC常用选项在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。

Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。

如果不给出这个选项,gcc就给出预设的可执行文件a.out。

-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。

c程序实验报告

c程序实验报告

c程序实验报告C程序实验报告引言在计算机科学领域中,C语言是一种被广泛使用的编程语言,它具有高效、灵活和可移植等特点。

为了更好地掌握C语言的基本概念和编程技巧,我们进行了一系列的C程序实验。

本实验报告将对实验过程、实验结果和实验心得进行详细描述和分析。

实验一:Hello World在第一个实验中,我们编写了一个简单的C程序,输出了"Hello World"这个经典的字符串。

通过这个实验,我们熟悉了C语言的基本语法和编译运行的流程。

这个简单的程序为我们后续的实验打下了坚实的基础。

实验二:计算器在第二个实验中,我们设计了一个简单的计算器程序。

该程序可以进行基本的加、减、乘、除运算,并能够根据用户的输入进行相应的计算。

通过这个实验,我们学会了如何使用变量、运算符和控制语句来实现简单的计算功能。

同时,我们也了解了C语言中的数据类型和输入输出函数的使用。

实验三:学生成绩管理系统在第三个实验中,我们开发了一个学生成绩管理系统。

该系统可以实现学生信息的录入、查询和统计功能。

我们使用了结构体和数组来存储学生信息,并通过循环和条件语句实现了不同功能的选择。

这个实验让我们更深入地了解了C语言中的复合数据类型和数组的使用。

实验四:文件操作在第四个实验中,我们学习了C语言中的文件操作。

我们通过编写一个简单的文件管理系统,实现了文件的创建、读取、写入和删除等功能。

通过这个实验,我们掌握了C语言中文件操作函数的使用方法,并了解了文件的打开和关闭过程。

实验五:排序算法在第五个实验中,我们研究了几种常见的排序算法,包括冒泡排序、插入排序和快速排序。

我们通过编写这些排序算法的C程序,对它们的原理和实现进行了深入的分析。

这个实验让我们更加熟悉了C语言中的循环和条件语句,并提高了我们的编程能力。

实验六:链表在第六个实验中,我们学习了链表这种常见的数据结构。

我们编写了一个简单的链表程序,实现了链表的创建、插入和删除等操作。

(完整版)c实验报告

(完整版)c实验报告

(完整版)c实验报告实验名称: C语言实验报告实验内容:本次实验主要针对C语言编程进行实验。

通过实验的设计和完成,检验和加深对C语言的理解和应用能力。

实验步骤:1. 实验准备在开始实验之前,需要准备好以下必要的工具和材料:- 计算机- C语言编译器(比如GCC、Clang等)- 文本编辑器(比如Notepad++、Sublime Text等)2. 实验环境搭建在计算机上安装C语言编译器,并配置好相应的环境变量。

这样可以在终端或命令提示符中执行相关的C程序。

3. 编写实验代码根据实验要求,使用文本编辑器编写C语言代码。

根据实验的要求和功能需求,合理设计和组织代码结构,包括头文件的引用、变量的定义、函数的声明和定义等。

4. 编译和运行代码在命令行或终端中使用编译器对编写好的C语言代码进行编译,并生成可执行文件。

编译命令的具体格式根据不同的编译器而有所差异,但一般形式如下:```gcc -o output_file input_file.c```其中,"output_file"表示生成的可执行文件名,"input_file.c"表示待编译的C源代码文件名。

编译成功后,通过命令行或终端执行生成的可执行文件,检查程序的运行结果是否符合预期。

5. 实验结果分析根据实际运行结果,对实验数据进行分析和归纳。

可以通过输出结果、打印特定信息或观察程序的行为来判断程序是否正确地实现了预期的功能。

6. 实验总结在实验报告中对本次实验的过程、方法、结果进行总结,并提出实验中遇到的问题和解决方法。

同时,对所学习的C语言相关知识点进行总结和归纳,以加深对相关知识的理解和记忆。

实验结果:通过本次实验的设计和实现,我成功完成了对C语言编程的实验,达到了预期的目标。

通过编写实际的代码,我巩固了对C语言语法和基本概念的理解。

在实验过程中,我遇到了一些问题,通过查阅资料和与同学的讨论,我成功解决了这些问题。

实验一C语言编程环境及简单程序设计

实验一C语言编程环境及简单程序设计

实验一C语言编程环境及简单程序设计一、实验目的1.学习搭建C语言编程环境;2.掌握C语言编译、链接和运行的基本方法;3.熟悉C语言的基本语法和数据类型;4.能够编写简单的C语言程序。

二、实验器材和软件1. 计算机,操作系统为Windows/MacOS/Linux等;2. GCC编译器:在Windows环境下可以使用MinGW,MacOS在终端中执行gcc命令,Linux环境下可以直接使用gcc命令。

三、实验内容1.搭建C语言编程环境:在Windows环境下,可以使用MinGW工具包来搭建C语言编程环境。

具体步骤如下:b)双击安装包进行安装,选择默认安装路径。

c) 完成安装后,将MinGW的bin目录添加到系统的环境变量中,方法是在系统设置中找到“环境变量”,然后将MinGW的bin目录添加到系统的Path变量中。

d) 打开命令行终端(CMD),输入“gcc -v”命令,如果显示gcc的版本信息,则表示安装成功。

在MacOS和Linux环境下,C语言编程环境已经自带gcc编译器,可以在终端中直接使用gcc命令进行编译和运行。

2.编写简单的C语言程序在搭建好C语言编程环境之后,我们可以开始编写简单的C语言程序了。

以下是一个简单的例子:```c#include <stdio.h>int maiint a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数的和为:%d\n", sum);return 0;```这个程序的功能是接收用户输入的两个整数,然后计算它们的和并输出结果。

具体的代码逻辑如下:a) `#include <stdio.h>`:包含头文件stdio.h,这个头文件声明了标准输入输出库中常用的函数,例如printf、scanf等。

C语言程序设计实验报告

C语言程序设计实验报告

C语言程序设计实验报告一、实验目的增强学生对C语言函数的理解和应用能力,提高编程能力。

二、实验要求利用C语言函数实现对一些文件中的数据进行读取、处理和输出,并设计函数完成相应的功能。

三、实验内容和方法本次实验将设计一个程序,实现对一个文本文件中的数据进行读取、处理和输出的功能。

设计思路:1.打开指定的文件,并判断文件是否能够成功打开。

2.读取文件中的数据,并存储到相应的变量中。

3.根据需要进行数据的处理和计算。

4.将处理后的数据输出到文件或屏幕上。

具体步骤:1.首先定义一个函数,用于打开文件,并判断文件是否成功打开。

函数的参数为文件名,返回一个文件指针。

2.定义一个函数,用于读取文件中的数据,并将数据存储到相应的变量中。

函数的参数为文件指针和数据存储变量。

3.定义一个函数,根据需要进行数据的处理和计算,并将结果存储到相应的变量中。

函数的参数为输入数据和输出数据的变量。

4.定义一个函数,将处理后的数据输出到指定的文件或屏幕上。

函数的参数为要输出的数据和输出文件的指针。

四、实验过程1.实验环境准备确保系统中已安装C语言的编程环境,如Code::Blocks等。

2.创建源文件在编程环境中创建一个源文件,命名为experiment.c。

3.编写源代码```c#include <stdio.h>FILE* openFile(char* filename)FILE* fp = fopen(filename, "r");if (fp == NULL)printf("Open file failed.\n");return NULL;}return fp;void readFile(FILE* fp, int* data)for (int i = 0; i < 3; i++)fscanf(fp, "%d", &data[i]);}void processData(int* input, int* output) for (int i = 0; i < 3; i++)output[i] = input[i] * input[i];}void printData(int* data, FILE* fp)for (int i = 0; i < 3; i++)fprintf(fp, "%d ", data[i]);}fprintf(fp, "\n");int maiFILE* inputFile = openFile("input.txt"); int input[3];int output[3];if (inputFile != NULL)readFile(inputFile, input);processData(input, output);FILE* outputFile = fopen("output.txt", "w");if (outputFile != NULL)printData(output, outputFile);fclose(outputFile);} elseprintf("Open output file failed.\n");}fclose(inputFile);}return 0;```五、实验结果与分析程序运行后,会打开一个名为input.txt的文件,从文件中读取3个整数,并将它们的平方结果写入output.txt文件中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define wei P3 // 定义四个数码管P3选择
#define seg P0 // 定义七节显示码由P0输出
#define led P1 //定义led灯p1输出
sbit bell=P1^2; //定义蜂鸣器由P1^2输出
sbit relay = P1^1; //继电器由P1^1输出
void delay1ms(uint); //声明延迟函数
void RELAY(void); //声明继电器吸合函数
void BELL(void); //声明蜂鸣器函数
void SMG(void); //声明led数码管显示函数
void LIGHT(void); //声明二极管函数
char code disp[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90}; //数字0-9
char code segctrl[4]={0xef,0xdf,0xbf,0x7f}; //选择位
char code number[]={1,0,0,2,0,5,0,6,0,0,0}; // 显示学号
/**************************************主函数**************************************/
main()
{
IE=0x85;//
IT0=1;//
IT1=1;//
SMG();
}
/**************************************中断程序**************************************/
//key3控制led灯左移1次,奇偶位交替
void my_int0(void) interrupt 0 using 1
{
LIGHT();
}
//key4控制继电器吸合,蜂鸣器
void my_int1(void) interrupt 2 using 2//key4
{
P0=0xff;
RELAY();
RELAY();
BELL();
BELL();
/**************************************子函数**************************************/
/* 1s继电器吸合,1s断开,P1^1 */
void RELAY(void)
{
relay=1;
delay1ms(1000); //延时1s
relay=0; //
delay1ms(1000); //延时1s
}
/* 蜂鸣器发声持续2s,5s报警一次P1^2 */
void BELL(void)
{
bell=1; //输出高态
delay1ms(5000); //延迟5s
bell=0; //输出低态
delay1ms(2000); //延迟2s
}
/* 数码管动态显示学号*/
void SMG(void)
{
while(1) //无穷循环
{
uchar i,j,k;
P1=0xfb; //关闭二极管
for(i=0;i<8;i++) //8种显示状态循环
{ for(j=0;j<50;j++) //一种状态显示五十次
{ for(k=0;k<4;k++)
{ wei=segctrl[3-k]; //输出数码管位选信号到P3口
seg=disp[number[i+k]]; //输出字符显示学号
delay1ms(2); //延时
}
}
}
}
/* 二极管左移1次,奇偶交替*/
void LIGHT(void)
{
uchar j,k;
k=0xfe;
P0=0xff;
for(j=0;j<8;j++)
{ P1=k;
k=(k<<1)|0x01;
delay1ms(500);
}
P1=0Xaa;
delay1ms(1000);
P1=0X55;
delay1ms(1000);
P1=0xff;
}
/* 延迟函数,延迟约x 1ms */
void delay1ms(uint x)
{ uint i,j;
for (i=0;i<x;i++) // 计数x次,延迟x 1ms for (j=0;j<120;j++); // 计数120次,延迟1ms } // 延迟函数结。

相关文档
最新文档