发新帖我要提问
12
返回列表
打印

keil中制作LIB

[复制链接]
楼主: myfaith
手机看帖
扫描二维码
随时随地手机跟帖
21
ayb_ice| | 2008-5-21 20:39 | 只看该作者 回帖奖励 |倒序浏览

不好意思这是第一张

使用特权

评论回复
22
ayb_ice| | 2008-5-21 20:40 | 只看该作者

第三张

使用特权

评论回复
23
wxj1952| | 2008-5-22 13:20 | 只看该作者

明白.

我试试。

使用特权

评论回复
24
wxj1952| | 2008-5-23 08:45 | 只看该作者

原理性,概念。

把库文件中全局变量名说明为extern。


//  led.c

#include <REG52.h>

bdata char  LED_PORT;
sbit LED = LED_PORT^6;

void test(void);

void main(void)
{

while(1)
test();
}

***************************************************************

//   led_port.c 库文件

#include <reg51.h>

extern bdata char LED_PORT;
extern bit LED;

void test()
{

 LED_PORT=P0;
LED=!LED;
P0=LED_PORT;

}

使用特权

评论回复
25
ayb_ice| | 2008-5-23 08:55 | 只看该作者

变量当然好处理

SFR怎么办呢

使用特权

评论回复
26
aolin| | 2008-5-23 10:42 | 只看该作者

我有办法的,嘿嘿...

使用特权

评论回复
27
wxj1952| | 2008-5-23 11:58 | 只看该作者

回26楼

LZ的目标是改变同一端口的管脚。2个程序均能实现。

你的意思还要改变端口?例如当P1变为P0时?不太明白。

使用特权

评论回复
28
ayb_ice| | 2008-5-23 14:59 | 只看该作者

我的意思

比如程序操作一IO位,然后程序做成库,在加库的情况可以改为任意位寻址空间。。。
期待高手。。。

使用特权

评论回复
29
wxj1952| | 2008-5-23 17:24 | 只看该作者

原理性,概念。

主函数
#include <REG52.h>

bdata char LED_PORT;
sbit LED = LED_PORT^4;   // 通过这里,可以在库函数TEST.C 中修
                       改同一SFR地址中的不同位SFR^0~SFR^7。

char  test( char);

void main(void)
{
init();

while(1)
P1=test(P1);   //   通过这里可以改变SFR寄存器名

}
***************************************************************

库函数TEST.C,做成库TEST.LIB即可。

 #include <reg51.h>

extern bdata char LED_PORT;
extern bit LED;

char test(char ax)
{
data char i;
 LED_PORT=ax;
LED=!LED;     // 修改位值。
i=LED_PORT;
return i;    // 返回已修改值。     

}

所长的回调函数很好。值得研究。

使用特权

评论回复
30
lhj200304| | 2009-12-28 09:32 | 只看该作者
怀念所长啊

使用特权

评论回复
31
xlsbz| | 2011-5-30 22:06 | 只看该作者

使用特权

评论回复
32
stz123| | 2013-5-22 16:37 | 只看该作者
我也特别纠结一个问题 就是单片机程序 的执行那个过程 C语言 会一些 好些东西 不知道怎么去用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则