当你调用一些函数时,为了避免反复复制和粘贴(在这个过程中经常还会导致拷贝错误,并且难以发现错误所在)的问题,我们最好是将经常用的一些函数或者协议编写成库函数,然后在主函数声明一下,就可以随便提取运用了。
但是,当你用的时候,却频频提示错误,为什么?
首先,你的库函数中肯定要用一些其他的库函数,然后在主程序中,你又调用了这些库函数。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";
)
理解这个原理,我们可以自己动手将库函数升级,用于不同型号单片机的开发。
用户377235 2012-11-16 16:11
用户1053025 2006-11-20 13:19
谢谢博主的原创文章,辛苦了。