一、工程说明:
.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
LCD1602.H的文件格式
设置生成lib文件
Lib文件调用
添加lib文件对话框
添加后的lib文件
关键字:Keil C51 lib文件 调用方法
引用地址:
Keil_C51里面lib文件生成和调用方法
推荐阅读最新更新时间:2024-03-16 15:15
第十七课 C51结构、联合和枚举的使用
前面的文章中介绍了 C 语言的基本数据类型,为了更有效的处理更复杂的数据,C 语 言引入了构造类型的数据类型。构造类型就是将一批各种类型的数据放在一起形成一种特殊 类型的数据。之前讨论过的数组也算是一种构造类型的数据,单片机c语言 中的构造类型还有结构、 枚举和联合。 结构 结构是一种数据的集合体,它能按需要将不一样类型的变量组合在一起,整个集合体用 一个结构变量名表示,组成这个集合体的各个变量称为结构成员。理解结构的概念,能用 班级和学生的关系去理解。班级名称就相当于结构变量名,它代表所有同学的集合,而每个 同学就是这个结构中的成员。使用结构变量时,要先定义结构类型。一般定义格式如下: struct 结构名 {结构元素表};
[单片机]
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
[单片机]
keil 中文乱码的一种解决办法
我安装的是keil uvision4 可是,当我打开uvision2是的工程的时候,突然发现中文注释的那些地方竟然全是乱码。 在网上搜的时候,上面说是在安装路径下的一个Tool.ini文件,在uv选项下加上一句ANSI=1,后来我试了试,不行, 无意间,当我代开keil那个设置字体的的对话框的时候,我发现我多点了一个对号,也不知道是啥意思,图形如下: 后来我去掉了那个对号,重新打开,就正常了,方正我的情况是这样,如果你的出现乱码,可能原因就是处在了这(如果你的版本是在uvision3以上的话)
[单片机]
【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
[单片机]
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将镜像文件下载
[单片机]
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服务子程序 **********************
[单片机]