原创 一个关于单片机库函数编写的问题(原创)

2006-11-16 14:00 3927 7 9 分类: MCU/ 嵌入式
 当你调用一些函数时,为了避免反复复制和粘贴(在这个过程中经常还会导致拷贝错误,并且难以发现错误所在)的问题,我们最好是将经常用的一些函数或者协议编写成库函数,然后在主函数声明一下,就可以随便提取运用了。
  但是,当你用的时候,却频频提示错误,为什么?

 首先,你的库函数中肯定要用一些其他的库函数,然后在主程序中,你又调用了这些库函数。KEIL 51编辑器,只允许调用一次库函数,这样你当然会遇到提示错误

  另外,我们知道库函数的一些参数对于我们能够灵活运用单片机开发,具有很深远的意义。

比如,我们可能会在打开的库函数文件里看到如下的定义

   RSM  0x0014;

它的意思是,RSM它的操作地址是0014,当我们用C语言编程时,不用去知道RSM这个引脚或者寄存器的地址0014,只需对RSM就可以直接操作了。

(说明,上面的例子,原理的确是这样的,不过具体上的操作是有错误的

现看这个例子:如果有一款新的单片机,除了指令内核于51兼容外,多了T3MOD,T3CON,T3L和T3H四个寄存器空间来控制T3,其地址分别是0xC0,0xC1,0xC2和0xC3。如果厂商不提供起存起定义头文件,改写REG52.H使之能用于该单片机

  我们可以这么写

 sfr T3MOD="0xc0";

 sfr T3CON="0xc1";

 sfr T3H="0xc3";

 sfr T3L="0xc2";

 从上面的定义方法来说,我们最上面的定义方法是错了

应该改为:sfr RSM="0x0014";

     )

   理解这个原理,我们可以自己动手将库函数升级,用于不同型号单片机的开发。
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2012-11-16 16:11

不错 要是举个编程的实例就好了!关于第一个问题的实例。

用户1053025 2006-11-20 13:19

谢谢博主的原创文章,辛苦了。

相关推荐阅读
用户51143 2006-12-27 14:15
标准的PID处理例程(转载自“漫漫人生路”)
/*==================================================================================================...
用户51143 2006-12-16 23:42
和你们在一起真的很开心
    一个偶尔的机会进入了vc++开发原地,可以说这里面的人都是初学者,虽然是初学,但是我们彼此享受着开发程序代给我们的快乐。我们不知道“高手”这个词代表着什么,也许对我们来说有点遥远,然而在这个漫...
用户51143 2006-12-11 20:50
学习系统开发之一“建立引导式的窗口”
  这个窗口是引导式的,所以,我们在这个窗口里不会添加任何的菜单选项,在进入窗口时,应该提示“现在开始吗”选项如果是“是”,那么就进入我们的系统。   显示你上次的问题,你所在的开发小组,小组成员,你...
用户51143 2006-12-05 12:09
单片机开发程序大全
我这里有单片机试验,带原理图,带C语言,汇编语言的(这里只是很少一部分,如果想要全的,请吧PID控制算法的C语言程序发给我,我会把余下的文件发给你,谢谢)  发到这个邮箱:jianmin5xin@16...
用户51143 2006-11-16 13:55
关于一个提高效的执行代码(原创)
这么一个问题,假设有两个寄存器m和n(有可能地址不相邻),分别存放着一个16位数值的,高八位和低八位的数值。那么让你将这个十六位数值打印出来,该如何操作?我们通常的做法是:  int a;  a="m...
EE直播间
更多
我要评论
2
7
关闭 站长推荐上一条 /3 下一条