我在TypeDefine.h头文件中定义了一个类型,代码如下:<br />#ifndef DATA_TYPE<br />#define DATA_TYPE<br /><br />#define uint unsigned int<br />#define uchar unsigned char<br />#define ulong unsigned long<br /><br />typedef union<br />{<br /> struct<br /> {<br /> unsigned char b0: 1;<br /> unsigned char b1: 1;<br /> unsigned char b2: 1;<br /> unsigned char b3: 1;<br /> unsigned char b4: 1;<br /> unsigned char b5: 1;<br /> unsigned char b6: 1;<br /> unsigned char b7: 1;<br /> }bit_def;<br /> uchar all;<br />}byte_def;<br /><br />#define ubat_fault_value 108<br />#define setbit(var,bit) (var|=(0x01<<(bit)))<br />#define clrbit(var,bit) (var&=(~(0x01<<(bit))))<br />#define checkbit(var,bit) (var&(0x01<<(bit)))<br /><br />#define CHNL_1 RA5=0,RA4=0,RA2=0<br />#define CHNL_2 RA5=0,RA4=0,RA2=1<br />#define CHNL_3 RA5=0,RA4=1,RA2=0<br />#define CHNL_4 RA5=0,RA4=1,RA2=1<br />#define CHNL_5 RA5=1,RA4=0,RA2=0<br />#define CHNL_6 RA5=1,RA4=0,RA2=1<br />#define CHNL_7 RA5=1,RA4=1,RA2=0<br />#define CHNL_8 RA5=1,RA4=1,RA2=1<br />#define BUZZ_RING RC3=1<br />#define BUZZ_OFF RC3=0<br /><br />#define LED_OFF RC1=1<br />#define LED_ON RC1=0<br />#define KEY RC2<br /><br />#define Enable_Int GIE=1,PEIE=1<br />#define Disable_Int GIE=0,PEIE=0<br /><br />#define CHARGE_OPEN RC4<br />#define CHARGE_SHORT RC5<br />#define OUT1_OPEN RB0<br />#define OUT1_SHORT RB1<br />#define OUT2_OPEN RB2<br />#define OUT2_SHORT RB3<br />#define OUT3_OPEN RB4<br />#define OUT3_SHORT RB5<br />#define OUT4_OPEN RB6<br />#define OUT4_SHORT RB7<br /><br />#endif<br />在Battery Check.h头文件中声明了fault_battery、ubat、n_bat、n_fault这四个变量,代码如下:<br />#ifndef BATTERY_DEF<br />#define BATTERY_DEF<br /><br />#if 1==BATTERY_OP<br />#define BATTERY_EXT<br />#else<br />#define BATTERY_EXT extern<br />#endif<br /><br />#include <pic.h><br />#include "TypeDefine.h"<br /><br />BATTERY_EXT byte_def fault_battery;<br />#define fault fault_battery.all<br />#define f1 fault_battery.bit_def.b0<br />#define f2 fault_battery.bit_def.b1<br />#define f3 fault_battery.bit_def.b2<br />#define f4 fault_battery.bit_def.b3<br />#define f5 fault_battery.bit_def.b4<br />#define f6 fault_battery.bit_def.b5<br />#define f7 fault_battery.bit_def.b6<br />#define f8 fault_battery.bit_def.b7<br /><br />BATTERY_EXT uchar ubat,n_bat,n_fault;<br /><br />BATTERY_EXT void AD_Intial(void);<br />BATTERY_EXT void fault_check(void);<br /><br />#endif<br />在Battery Check.c中定义这些变量:<br />#define BATTERY_OP (1)<br /><br />#include "Battery Check.h"<br />#include "Interrupt.h"<br /><br />void AD_Intial(void)<br />{<br /> TRISA = 0x37; //RA0,RA1,RA2,RA4,RA5:input<br /> PORTA = 0x00;<br /> ADCON1 = 0x05; //RA0,RA1 are used as analog input,RA3 is Vref.<br /> ADCON0 = 0x40; //A/D conversion clock is Fosc/8,Fosc=4MHz.<br /> <br /> uchar ubat=0x00,n_bat=1,n_fault=0x00;<br /> byte_def fault_battery=0x00;<br />}<br />编译提示:<br />Executing: "C:\HT-PIC\BIN\PICC.EXE" -C -E"Main.cce" "Main.c" -O"Main.obj" -I"C:\HT-PIC\include" -Zg9 -O -ASMLIST -Q -MPLAB -16F73<br />Executing: "C:\HT-PIC\BIN\PICC.EXE" -C -E"Battery Check.cce" "Battery Check.c" -O"Battery Check.obj" -I"C:\HT-PIC\include" -Zg9 -O -ASMLIST -Q -MPLAB -16F73<br />Error[000] E:\microchip\C Language\Battery Check.c 13 : probable missing '}' in previous block<br />Error[000] E:\microchip\C Language\Battery Check.c 15 : no identifier in declaration<br />Warning[000] E:\microchip\C Language\Battery Check.c 15 : missing basic type: int assumed<br />Error[000] E:\microchip\C Language\Battery Check.c 15 : ; expected<br />Halting build on first failure as requested.<br />BUILD FAILED: Thu Apr 12 13:42:44 2007<br />这是为什么?程序书写没有问题啊!<br />我第一次用PICC编译器,希望各位大虾指点!多谢! |
|