关于PIC系列单片机寄存器和源文件的关系....求解答..
由于以前写的程序也就1000行左右吧,不需要多个源文件,现在由于程序越来越大,需要多个源文件,遇到了一个问题,描述如下:假设我作如下定义:
#define Test_aPORTAbits.RA0 //这个定义在a.c源文件里
#define Test_bPORTAbits.RA0 //这个定义在b.c源文件里
请问我在各自的源文件操作这个脚时,是操作的一个脚么,还有这样使用合法么;最后,如果我在a.c源文件里设置了这个脚的数据输入输出方向,那么我在另外一个b.c源文件使用同一个脚时,我还需要再次设置这个脚的数据输入输出方向么.... 1.in the port.h:
#define Test_ra0PORTAbits.RA0 //only one
2.do it in the a.c & b.c:
需要再次设置这个脚的数据输入输出方向.
jlian168 发表于 2013-9-19 12:29
1.in the port.h:
#define Test_ra0PORTAbits.RA0 //only one
哦……我明白了 jlian168 发表于 2013-9-19 12:29
1.in the port.h:
#define Test_ra0PORTAbits.RA0 //only one
突然想了想,还是有点不明白,如果我把一个函数写在一个源文件里,那我岂不是在主函数每次调用的时候都要设置数据的输入,输出方向??? 程序弄的比较乱,对硬件I/O操作写入一个函数就可以了,其他源文件直接外部应用就可以了。 wangqh1983 发表于 2013-9-20 10:19
程序弄的比较乱,对硬件I/O操作写入一个函数就可以了,其他源文件直接外部应用就可以了。 ...
因为以前我把io口的设置放在初始化函数的,现在看来是要另外写一个函数,或者在操作io口前设置了 RainKing 发表于 2013-9-20 16:41 static/image/common/back.gif
因为以前我把io口的设置放在初始化函数的,现在看来是要另外写一个函数,或者在操作io口前设置了 ...
1.port.h:
#define Test_ra0PORTAbits.RA0 //only one
#define Test_dira0TRISAbits.RA0 //The name i forgot it...
2.a.c=output:
dira0=0,
test_ra0=0/1;//out=0 or=1;
3.b.c=input:
#define swra0XXXbits.0 //ex
dira0=1;
swra0=test_ra0;
jlian168 发表于 2013-9-21 09:13 static/image/common/back.gif
1.port.h:
#define Test_ra0PORTAbits.RA0 //only one
#define Test_dira0TRISAbits.RA0 / ...
我的意思是说,这个脚的数据方向是设置在那个地方,我举个例子:
1 port.h:
#define Test_ra0PORTAbits.RA0 //only one
#define Test_dira0TRISAbits.RA0
2a.c //这个是主函数,调用b.c里面的函数
3b.c// 这个是函数
void set ()
{
}
void set1()
{
}
这两个函数都用到RA0脚,那么在主函数在调用这个两个函数时,每个函数里面各自都要设置RA0的数据方向么;如果是set调用set0的,是不是只需要在set里面设置里就可以了吧。 我查阅了一下资料,我个人认为是不需要在设置的,只要在主函数里面初始化之后就可以了...理由如下:(纯理论)
在使用寄存器时,我们都会用到pic18.h这个头文件,并且在每个源件里面都会写,那么此时的这个寄存器的变量应该是个全局性变量,在多个源文件里面是可以使用的,而且修改的时候是修改的同一个变量,所以我觉得只要在初始化函数里面设置后,在以后就不许要在设置了,除非你改脚的输入输出方向时。。。。。。
页:
[1]