本帖最后由 APT 于 2012-10-19 16:08 编辑
//本楼的例程太长看得眼花,别看了,重新写了段简短的例程在3楼,请指教,谢谢!
//用个例子来表述我的问题,假设现有一个程序,这个程序由一个文件组成:
//文件内容:
#include "reg51.h"
unsigned char bdata bA;//全局的位寻址变量
sbit bA_0=bA^0;//定义特殊功能寄存器
unsigned char cB;//全局变量
sbit OUT1=P3^0;
sbit OUT2=P3^1;
void fun1()//函数fun1
{ cB=P0;
bA=cB;
OUT1=bA_0;
}
void fun2()//函数fun2
{ cB=P1
bA=cB;
OUT2=bA_0;
}
void main()//主函数
{ P0=P1=0xff;
fun1();
fun2();
}
//旧文件完结
//现在,由于版本编译和视觉的原因,我要将上述的文件拆分成多个文件
//初步拆分成如下述的几个文件:
//专门声明变量的文件V.h,文件内容如下:
unsigned char bdata bA;//全局的位寻址变量
unsigned char cB;//全局变量
//专门说明外部变量的eV.h,文件内容如下
extern unsigned char bdata bA;
extern unsigned char cB;
//专门声明sbit的sb.h,文件内容如下
#include "reg51.h"
sbit OUT1=P3^0;
sbit OUT2=P3^1;
//函数fun1.c,文件内容如下
#include "eV.h"
#include "sb.h"
void fun1()//函数fun1
{ cB=P0;
bA=cB;
OUT1=bA_0;
}
//函数fun2.c,文件内容如下
#include "eV.h"
#include "sb.h"
void fun2()//函数fun2
{ cB=P1
bA=cB;
OUT2=bA_0;
}
//主函数main.c,文件内容如下
#include "reg51.h"
#include "V.h"
#include "sb.h"
void fun1();
void fun2();
main()
{ P0=P1=0xff;
fun1();
fun2();
}
//现在拆完了,但是还欠一句"sbit bA_0=bA^0;"不知道该放哪.
//如果放在V.h或main.c里,则编译器在fun1.c和fun2.c里会找不到bA_0;
//如果放在sb.h,或者放在fun1.c或者fun2.c里则编译器会认为bA是不正确的描述;
//请教:该怎么写才正确,且清晰有条理????谢谢!
|