RainKing 发表于 2013-9-18 17:05:09

关于PIC系列单片机寄存器和源文件的关系....求解答..

由于以前写的程序也就1000行左右吧,不需要多个源文件,现在由于程序越来越大,需要多个源文件,遇到了一个问题,描述如下:
假设我作如下定义:
#define Test_aPORTAbits.RA0      //这个定义在a.c源文件里
#define Test_bPORTAbits.RA0   //这个定义在b.c源文件里
请问我在各自的源文件操作这个脚时,是操作的一个脚么,还有这样使用合法么;最后,如果我在a.c源文件里设置了这个脚的数据输入输出方向,那么我在另外一个b.c源文件使用同一个脚时,我还需要再次设置这个脚的数据输入输出方向么....

jlian168 发表于 2013-9-19 12:29:25

1.in the port.h:
#define Test_ra0PORTAbits.RA0      //only one

2.do it in the a.c & b.c:
需要再次设置这个脚的数据输入输出方向.

RainKing 发表于 2013-9-19 16:57:56

jlian168 发表于 2013-9-19 12:29
1.in the port.h:
#define Test_ra0PORTAbits.RA0      //only one



哦……我明白了

RainKing 发表于 2013-9-20 10:14:31

jlian168 发表于 2013-9-19 12:29
1.in the port.h:
#define Test_ra0PORTAbits.RA0      //only one



突然想了想,还是有点不明白,如果我把一个函数写在一个源文件里,那我岂不是在主函数每次调用的时候都要设置数据的输入,输出方向???

wangqh1983 发表于 2013-9-20 10:19:07

程序弄的比较乱,对硬件I/O操作写入一个函数就可以了,其他源文件直接外部应用就可以了。

RainKing 发表于 2013-9-20 16:41:04

wangqh1983 发表于 2013-9-20 10:19
程序弄的比较乱,对硬件I/O操作写入一个函数就可以了,其他源文件直接外部应用就可以了。 ...

因为以前我把io口的设置放在初始化函数的,现在看来是要另外写一个函数,或者在操作io口前设置了

jlian168 发表于 2013-9-21 09:13:26

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;

RainKing 发表于 2013-9-22 23:05:44

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里面设置里就可以了吧。

RainKing 发表于 2013-9-22 23:29:15

我查阅了一下资料,我个人认为是不需要在设置的,只要在主函数里面初始化之后就可以了...理由如下:(纯理论)
在使用寄存器时,我们都会用到pic18.h这个头文件,并且在每个源件里面都会写,那么此时的这个寄存器的变量应该是个全局性变量,在多个源文件里面是可以使用的,而且修改的时候是修改的同一个变量,所以我觉得只要在初始化函数里面设置后,在以后就不许要在设置了,除非你改脚的输入输出方向时。。。。。。
页: [1]
查看完整版本: 关于PIC系列单片机寄存器和源文件的关系....求解答..