建立一个和这个C文件同名的H文件,把这个C文件中的函数都包含到这个H文件中就ok!

例如:有这样一个serial.C文件:

/********************************************************************************

*程序名称:serial.c

*程序描述:单片机串口通信,所用单片机为Philiph的P89C52*2

*编    制:LZS

*备    注:编译器keil C51 V7.06;时间2008.2.11;版本V1.0

*          定时计数器T1作为波特率发生器

*          波特率为4800;接收采用中断方式;发送采用查询方式

*********************************************************************************/

#include "reg51.h"

/**********************************************************************

*函数名称:void Init_SerialComm(void)

*函数描述:串口初始化

*入口参数:无

*出口参数:无

*备    注:

***********************************************************************/

void Init_SerialComm(void)

{

TMOD=0x20;  //定时计数器T1工作在方式2,8bit自动重装

TH1=0xEB;

TL1=0xEB;   //波特率为1200;晶振频率为9.6MHZ

SCON=0x50;  //串口工作在方式1

PCON=0x80;

EA=1;

ES=1;

TR1=1;

}

/*****************************************************************************

*函数名称:void UartSendChar(unsigned char ch)

*函数描述:向串口发送一个字节的数据

*入口参数: unsigned char ch

*出口参数:无

*备    注:无

******************************************************************************/

void UartSendChar(unsigned char ch)

{

SBUF=ch;

while(TI==0);

TI=0;

}

/*********************************************************************************

*函数名称:void UartSendString(unsigned int *p,unsigned int string)

*函数描述:向串口发送strlong个字节的数据

*入口参数:unsigned int *p 指向发送数据的指针,unsigned int strlong发送数据的字节数

*出口参数:无

*备    注:无

**********************************************************************************/

void UartSendString(unsigned char *p,unsigned int strlong)

{

unsigned char tmp=0;

for(tmp=0;tmp

{

UartSendChar(*(p+tmp));

}

}

/*************************************************************************

4.bcc异或校验法(block check character)

实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。

它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最

后的结果就是校验值,通常把她附在通讯数据的最后一起发送出去。

接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验

值一致就说明收到的数据是完整的。校验值计算的代码类似于:

unsigned uCRC=0;//校验初始值

for(int i=0;i适用范围:适用于大多数要求不高的数据通讯。

应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。

********************************************************************************/

它对应的头文件如下:

#ifndef __serial_H__

#define __serial_H__

void Init_SerialComm(void);

void UartSendChar(unsigned char ch);

void UartSendString(unsigned char *p,unsigned int strlong);

//static void UartIntrruptService(void);

#endif

这样就可以用#include来包含调用这个C文件中的函数了哦!呵呵!for example:

#include "serial.h"

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

#define InBufferLong 20

uchar counter;

uchar trdata[InBufferLong];

uchar checksum;

uint i;

bit Read_Flag=0;

/***************************************************************************************

*函数名称:int main(void)

*函数描述:主函数

*入口参数:无

*出口参数:无

*备    注:无

*****************************************************************************************/

int main(void)

{

Init_SerialComm();

while(1)

{

if(Read_Flag==1)

{

UartSendString(trdata,InBufferLong);

Read_Flag=0;

}

}

}

/****************************************************************************************

*函数名称:void UartIntrruptService(void)

*函数描述:串口中断服务函数

*入口参数:无

*出口参数:无

*备    注:无

*******************************************************************************************/

static void UartIntrruptService(void) interrupt 4 using 3

{

if(RI)

{

RI=0;

i=SBUF;

if(i>127) //当接收到的数值大于127时

{

counter=0;

trdata[counter]=i; //把接收到的数值保存在trdata[0]

checksum=i-128;   //和校验等于接收到的数值-128

}

else

{

counter++;

trdata[counter]=i;

checksum^=i;

if((counter==(InBufferLong-1))&&(1)) //接收满并且checksum=0时

{

Read_Flag=1;

counter=0;

}

}

}

}

在这应注意:1.被调用的C文件中只包含头文件即可,每个函数都使用局部变量

2.所有的全局变量都在主C文件中定义

3.中断要放到主C文件中

c语言如何调用外部文件的函数调用,keil 中如何调用其他文件的函数相关推荐

  1. win7搜索文件怎么搜索文件名中带圆括号的文件?

    win7搜索文件怎么搜索文件名中带圆括号的文件? System.FileName:~="(" 这样就行. 括号上加个引号 ~= 是包含的意思, ~< 是以什么为开头, = 是 ...

  2. R语言如何从外部读取数据到R中

    R语言可以从键盘,文本,excel,access,数据库,专业处理软件sas 一.使用键盘的输入 mydata<-data.frame(age=numeric(0),gender=charact ...

  3. vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。

    Eclipse软件怎么导入Java工程文件?有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面教大家如何在Eclipse软件中导入Java工程文件. 解决方法: 1.在 ...

  4. pythonstaticmethod调用外部变量_在Python中,是否可以从staticmethod引用实例变量?

    我知道以前有人问过这个问题,但我发现自己碰到了一个最适合使用staticmethod的情况,但也需要在这个类中引用一个实例变量.例如,假设我有以下类:class ExampleClass(object ...

  5. java 怎么调用js代码_在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: " ...

  6. ipython下怎么运行py文件_在IPython中执行Python程序文件的示例

    简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的Python shell环境了.简单的接触发现了不少我喜欢的功 ...

  7. html中异步上传文件实现示例,HTML_html中异步上传文件实现示例,复制代码代码如下: form actio - phpStudy...

    html中异步上传文件实现示例 复制代码代码如下: 复制代码代码如下: 这是html中最常见最简单的表单提交方式,但是这种方式必须会切换页面,也许有些时候我们希望可以在同一个页面与服务器进行交互,并不 ...

  8. python 复制替换文件_在Python中复制和替换文件

    python 复制替换文件 The python language provides a built-in module "shutil", which offers numero ...

  9. MDK keil中如何调用malloc函数

    默认调用malloc函数出错现象 这是因为我们没声明下C的标准库 解决如下 (1)使用的代码文件中需要包含头文件 <stdlib.h> (2)在工程的属性设置中需要把 Use MicroL ...

最新文章

  1. python和sass区别_CSS 的预处理程序(Sass、LESS、Stylus 等)分别都有哪些优缺点?...
  2. 【jetson nano】 aarch64安装pycharm pytorch cuda
  3. OpenRTSP的使用
  4. 自定义组件--创建mxml组件
  5. Ballast,一种精准控制 Go GC 提高性能的方法
  6. 软件测试基础知识整理(详细版)
  7. Conficker.AE病毒局域网扫描工具
  8. 家庭购药新指南:2020-2021年中国家庭常备药上榜品牌榜单公布
  9. 解决:Intellij idea导入MyEclipse Web项目时,服务器搭建运行正常,但无法访问WebRoot下的页面
  10. 0基础可不可以学大数据
  11. cascading基本概念
  12. CyberCat赛博猫,进阶版AXIE
  13. VC2010 中 MFC 的改进导致 XTP 停靠窗体无法显示的解决方法
  14. 查看思科交换机出厂时间
  15. scratch 有趣的加减法
  16. 电子学会2020年9月青少年软件编程(图形化)等级考试试卷(一级)答案解析
  17. 【Python】未知来源的Python 2020期末考试试题,大家可以来答题学习了
  18. 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )
  19. 二本大一新生拒绝摆烂,2个月后的觉醒
  20. centos7:麒麟开源堡垒机的搭建部署

热门文章

  1. 谷歌紧急更新,Chrome 今年第二个零日漏洞曝光
  2. 韩国成功研发变色龙软体机器人;曝新iPhone将推出摄影版“人像模式”;Android 12 Beta 4发布|极客头条...
  3. 超过 1 亿 Android 用户的数据遭泄露!
  4. 把斯坦福大学土地租出去?特曼坦言:目的就是赚钱
  5. WebAssembly 将成为互联网的终结?
  6. 中国自主可免费使用的一站式 IoT 集成开发环境 RT-Thread Studio 发布!
  7. 英特尔发布边缘软件中心,抢滩 650 亿美元智能边缘市场!
  8. 手把手带你深入解析静态分派 动态分派原理 | 原力计划
  9. 结束 Java、Python 之战,如何学习所有编程语言?
  10. 想从远程办公进入 toB 蓝海?它可以,你未必