Keil_C51里面lib文件生成和调用方法

发布者:钱老李最新更新时间:2016-10-12 来源: eefocus关键字:Keil  C51  lib文件  调用方法 手机看文章 扫描二维码
随时随地手机看文章
一、工程说明: 
.xh工程是生成C51lib文件的工程项目。 
2.BLINKY工程是调用生成的lib文件的工程。 
3.此工程是根据keil下的samples的BLINKY工程改编而来。 
4.生成lib的方法是要在.c和.h文件中都要把函数声明为extern开头的函数。 5.文件中的函数要声明在 #ifndef  ... ....... 
#define  ... .......... #endif 中。 6. 
在引用工程中要将lib文件添加到工程文件中,并在程序中添加生成lib文件的.h文件。 7、xh.h和xh.c是产生的xh.lib的源代码;BLINKY.C是调用xh.lib的源代码。  
二、工程源代码:  
1、xh.h      
#ifndef __xh_H__ #define __xh_H__  
extern void xhhs(void);      /*在此声明lib的函数名,注意必须加上extern才能在以 
                             后的引用中使用;不加上extern表明是内部函数,加上之         后表明是对外提供的一个接口,可以被外部的程序引用,         此处与C++的公有属性和私用属性有相似之处*/    
#endif   
2、xh.c      
 #include  #include  
void wait (void)  {                   /* wait function */ 
  ;                                   /* only to delay for LED flashes */ } 
extern void xhhs (void) {     /*声明的功能函数,要加上extern*/   unsigned int i;                     /* Delay var */   unsigned char j;                    /* LED var */  
  while (1) {                         /* Loop forever */ 
    for (j=0x01; j< 0x80; j<<=1) {   /* Blink LED 0, 1, 2, 3, 4, 5, 6 */       P1 = j;                        /* Output to LED Port */       for (i = 0; i<20000; i++)  {  /* Delay for 10000 Counts */        wait ();                       /* call wait function */             }       }      }   }   3、  
* BLINKY.C - LED Flasher for the Keil MCBx51 Evaluation Board with 80C51 device*/                    #include   
#include           /*对生成lib库文件时的.h文件的引用*/  
// When you have enabled the option Stop Program Execution with Serial // Interrupt, the Monitor-51 uses the serial interrupt of the UART. 
// It is therefore required to reserve the memory locations for the interrupt // vector.  You can do this by adding one of the following code lines:  
// char code reserve [3] _at_ 0x23;   // when using on-chip UART for communication // char code reserve [3] _at_  0x3;   // when using off-chip UART for communication  
void main (void){     
 xhhs();            /*调用lib库中的函数*/    }    
三、附:Keil C里面 lib文件生成方法(由网络上搜索而来)  
 
包含关系 
LCD1602.C里面包含LCD1602.H 
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
LCD1602.H的文件格式 
 
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
 
设置生成lib文件 
 
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
   
Lib文件调用 
 
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
添加lib文件对话框 
 
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
   
添加后的lib文件
Keil_C51里面lib文件生成和调用方法(转载) - 悠悠明月心 - 悠悠明月心博客
关键字:Keil  C51  lib文件  调用方法 引用地址:Keil_C51里面lib文件生成和调用方法

上一篇:伪指令segment和RSEG和CSEG AT使用
下一篇:51单片机移植UCOS-II的方法与改进

推荐阅读最新更新时间:2024-03-16 15:15

第十七课 C51结构、联合和枚举的使用
前面的文章中介绍了 C 语言的基本数据类型,为了更有效的处理更复杂的数据,C 语 言引入了构造类型的数据类型。构造类型就是将一批各种类型的数据放在一起形成一种特殊 类型的数据。之前讨论过的数组也算是一种构造类型的数据,单片机c语言 中的构造类型还有结构、 枚举和联合。 结构 结构是一种数据的集合体,它能按需要将不一样类型的变量组合在一起,整个集合体用 一个结构变量名表示,组成这个集合体的各个变量称为结构成员。理解结构的概念,能用 班级和学生的关系去理解。班级名称就相当于结构变量名,它代表所有同学的集合,而每个 同学就是这个结构中的成员。使用结构变量时,要先定义结构类型。一般定义格式如下: struct 结构名 {结构元素表};
[单片机]
第十七课 <font color='red'>C51</font>结构、联合和枚举的使用
4×4键盘C51单片机程序源码分享
/*MCU:AT89S52*/ #include #include #define uchar unsigned char int key; int del; void Key_Scan(void); /************主程序*************/ void main(void) { void Key_Scan(void); void delay(int); while(1) { Key_Scan(); delay(2000); } } /********矩键查寻键值4*4程序******/ void Key_Scan(void) { uchar readkey; uchar x_temp,y_temp; P
[单片机]
4×4键盘<font color='red'>C51</font>单片机程序源码分享
keil 中文乱码的一种解决办法
我安装的是keil uvision4 可是,当我打开uvision2是的工程的时候,突然发现中文注释的那些地方竟然全是乱码。 在网上搜的时候,上面说是在安装路径下的一个Tool.ini文件,在uv选项下加上一句ANSI=1,后来我试了试,不行, 无意间,当我代开keil那个设置字体的的对话框的时候,我发现我多点了一个对号,也不知道是啥意思,图形如下: 后来我去掉了那个对号,重新打开,就正常了,方正我的情况是这样,如果你的出现乱码,可能原因就是处在了这(如果你的版本是在uvision3以上的话)
[单片机]
<font color='red'>keil</font> 中文乱码的一种解决办法
C51单片机】数码管实现99秒倒计时
C51单片机之数码管实现99秒倒计时(结合定时器)—STC89C52单片机 代码如下: #include reg52.h typedef unsigned char u8; typedef unsigned int u16; sbit b1 = P2^2; sbit b2 = P2^3; sbit b3 = P2^4; u8 duan = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; u16 count = 99; u16 digit = 0; //延时函数 void
[单片机]
c51单片机驱动AD9954的程序及调试
第一次用51单片机写AD9954程序,仔细读了一遍datasheet、并参考前面同学的示例程序之后,只简单的实现了单频输出(Single-tone Mode)。 一开始调试,先要正确控制SYNC_CLK,因为这个输出引脚就是内部DDS时钟的4分频(假设DDS时钟最高为400MHz,那么SYNC_CLK此时应当输出100MHz;反之,通常用SYNC_CLK来推测DDS系统时钟)。前提是必须复位Control Function Register No.1(CFR1:0x00)中的bit1(SYNC_CLK Disable)。 然后根据输入时钟的频率正确设置CFR2中的倍频系数REFCLK Multiplier和VCO Range(0
[单片机]
<font color='red'>c51</font>单片机驱动AD9954的程序及调试
S3C2410启动代码从ADSv1.2移植到KEIL For ARM uV4的方法
深圳旋极ARM9实验箱上面的ARM9实验教程是基于ADSv1.2 和 Mult-ICE2.2并口仿真器的,大概是04~09年期间流行的开发方式。目前ARM公司主推RVMDK(KEIL For ARM uVsion4)和ULINK(中国ARM玩家主要是JLINK V8)仿真器了,怎么把原来的ADS程序移植到KEIL上面呢? 经过分析ADS工程下面的文件,可以看到,原来的工程文件主程序是main.C,其他必须的汇编文件、C头文件、C源文件都放在common和include目录下。首先我们需要把这些工程都需要的基本文件都copy出来,放到一个“基本文件”目录下。 里面的“DebugInRAM.ini“文件,是通过JTAG将镜像文件下载
[单片机]
S3C2410启动代码从ADSv1.2移植到<font color='red'>KEIL</font> For ARM uV4的<font color='red'>方法</font>
C51填坑记:MOVX指令异常
1.现象描述 51单片机开发过程中发现,程序总是概率性出现异常。经调试发现,“movx A, @Rx”指令读到内容与实际内存内容不一致,从而导致跳转逻辑错误。代码如下: MOV R1, #00H MOVX A, @R1 JNZ LABEL 这段代码读取外部内存地址为0x00的内容到累加器A,如果内容非零,则跳转到“LABEL”运行。调试发现MOVX指令执行之后,累加器A的值为0(实际XRAM地址为0的区域非零)。 2.解决 上网检索之后,发现有类似描述“外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG, 建议少用”。但是没有具
[单片机]
外部中断、定时中断、串口中断C51程序
/******************************** 文件所用资源 1.外部中断0、1 定时中断0、1 串口中断 2.端口:P3.0,P3.1,P3.3,P3.4,P3.5 ********************************/ sfr ISP_CONTR = 0xe7; /*************************** 外部中断0服务子程序 ****************************/ /*void Int0() interrupt 0 { }*/ /*************************** 定时中断0服务子程序 **********************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved