打印

中断函数的定义问题

[复制链接]
4485|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机电源|  楼主 | 2007-4-10 14:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中断函数可以定义成void Interrupt ISR(void);吗?

为什么在定义了之后,编译时提示出错:

Clean: Deleting intermediary and output files.
Clean: Deleted file "E:microchipC LanguageBattery Check.obj".
Clean: Deleted file "E:microchipC LanguageBattery Check.cce".
Clean: Deleted file "E:microchipC LanguageMain.obj".
Clean: Deleted file "E:microchipC LanguageMain.cce".
Clean: Deleted file "E:microchipC LanguageStatus_Check.obj".
Clean: Deleted file "E:microchipC LanguageStatus_Check.cce".
Clean: Deleted file "E:microchipC LanguageInterrupt.cce".
Clean: Done.
Executing: "C:HT-PICBINPICC.EXE" -C -E"Battery Check.cce" "Battery Check.c" -O"Battery Check.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Executing: "C:HT-PICBINPICC.EXE" -C -E"Main.cce" "Main.c" -O"Main.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Error[000] E:microchipC LanguageInterrupt.h 23 : only functions may be void
Error[000] E:microchipC LanguageInterrupt.h 23 : , expected
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: count_ad (from line 13)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_max (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_min (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_resutl_buf (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_result_temp (from line 13)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: status_a (from line 24)
Halting build on first failure as requested.
BUILD FAILED: Tue Apr 10 14:24:11 2007

还有后面的告警是怎么回事?我已经在头文件中定义了这些变量啊!

我的source files里有7个模块文件。
沙发
yewuyi| | 2007-4-10 15:42 | 只看该作者

void interrupt ISR(void){}

Error[000] E:microchipC LanguageInterrupt.h 23 : , expected
提示你写错了标号,写成‘,’了,下面的报错有可能是这个引起的,改一下重编译看看

使用特权

评论回复
板凳
单片机电源|  楼主 | 2007-4-10 16:48 | 只看该作者

我在头文件中屏蔽掉void interrupt ISR(void);语句

就没有这个提示了,但是又会提示变量重复定义
Executing: "C:HT-PICBINPICC.EXE" -C -E"Battery Check.cce" "Battery Check.c" -O"Battery Check.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageBattery Check.c 104 : unused variable definition: status_a (from line 72)
Warning[000] E:microchipC LanguageBattery Check.c 104 : unused variable definition: status_b (from line 82)
Executing: "C:HT-PICBINPICC.EXE" -C -E"Interrupt.cce" "Interrupt.c" -O"Interrupt.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageInterrupt.c 100 : unused variable definition: fault_battery (from line 50)
Warning[000] E:microchipC LanguageInterrupt.c 100 : unused variable definition: status_a (from line 72)
Warning[000] E:microchipC LanguageInterrupt.c 35 : undefined shift (17 bits)
Executing: "C:HT-PICBINPICC.EXE" -C -E"Main.cce" "Main.c" -O"Main.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: count_ad (from line 13)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_max (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_min (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_resutl_buf (from line 14)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: ad_result_temp (from line 13)
Warning[000] E:microchipC LanguageMain.c 78 : unused variable definition: status_a (from line 72)
Executing: "C:HT-PICBINPICC.EXE" -C -E"Status_Check.cce" "Status_Check.c" -O"Status_Check.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageStatus_Check.c 38 : unused variable definition: fault_battery (from line 50)
Executing: "C:HT-PICBINPICC.EXE" -C -E"Timer 0.cce" "Timer 0.c" -O"Timer 0.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageTimer 0.c 9 : unused variable definition: fault_battery (from line 50)
Warning[000] E:microchipC LanguageTimer 0.c 9 : unused variable definition: status_a (from line 72)
Warning[000] E:microchipC LanguageTimer 0.c 9 : unused variable definition: status_b (from line 82)
Executing: "C:HT-PICBINPICC.EXE" -C -E"UART.cce" "UART.c" -O"UART.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageUART.c 10 : unused variable definition: fault_battery (from line 50)
Warning[000] E:microchipC LanguageUART.c 10 : unused variable definition: status_a (from line 72)
Warning[000] E:microchipC LanguageUART.c 10 : unused variable definition: status_b (from line 82)
Executing: "C:HT-PICBINPICC.EXE" -C -E"Work.cce" "Work.c" -O"Work.obj" -I"C:HT-PICinclude" -Zg9 -O -ASMLIST -Q -MPLAB -16F73
Warning[000] E:microchipC LanguageWork.c 81 : unused variable definition: status_a (from line 72)
Warning[000] E:microchipC LanguageWork.c 81 : unused variable definition: status_b (from line 82)
Executing: "C:HT-PICBINPICC.EXE" -E"1.lde" "E:microchipC LanguageBattery Check.obj" "E:microchipC LanguageInterrupt.obj" "E:microchipC LanguageMain.obj" "E:microchipC LanguageStatus_Check.obj" "E:microchipC LanguageTimer 0.obj" "E:microchipC LanguageUART.obj" "E:microchipC LanguageWork.obj" -M"1.map" -O"1.cof" -O"1.hex" -Q -MPLAB -16F73
Error[000] E:microchipC LanguageInterrupt.obj 28 : multiply defined symbol: _ubat (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageInterrupt.obj 28 : multiply defined symbol: _n_fault (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageInterrupt.obj 28 : multiply defined symbol: _datrx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageInterrupt.obj 28 : multiply defined symbol: _dattx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _time_relay (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _i_rx (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _i_tx (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _ubat (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _time_hour (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _n_fault (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _datrx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _dattx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 20 : multiply defined symbol: _n_bat (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageMain.obj 21 : multiply defined symbol: _count_100ms (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageMain.obj 21 : multiply defined symbol: _count_500ms (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageStatus_Check.obj 18 : multiply defined symbol: _datrx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageStatus_Check.obj 18 : multiply defined symbol: _dattx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageTimer 0.obj 14 : multiply defined symbol: _time_relay (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageTimer 0.obj 14 : multiply defined symbol: _time_hour (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageTimer 0.obj 14 : multiply defined symbol: _count_100ms (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageTimer 0.obj 14 : multiply defined symbol: _count_500ms (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageUART.obj 16 : multiply defined symbol: _i_init (E:microchipC LanguageMain.obj)
Error[000] E:microchipC LanguageUART.obj 16 : multiply defined symbol: _i_rx (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageUART.obj 16 : multiply defined symbol: _i_tx (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageUART.obj 16 : multiply defined symbol: _datrx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageUART.obj 16 : multiply defined symbol: _dattx (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageWork.obj 18 : multiply defined symbol: _time_relay (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageWork.obj 18 : multiply defined symbol: _mod_work (E:microchipC LanguageMain.obj)
Error[000] E:microchipC LanguageWork.obj 18 : multiply defined symbol: _ubat (E:microchipC LanguageBattery Check.obj)
Error[000] E:microchipC LanguageWork.obj 18 : multiply defined symbol: _time_hour (E:microchipC LanguageInterrupt.obj)
Error[000] E:microchipC LanguageWork.obj 18 : Too many errors
BUILD FAILED: Tue Apr 10 16:59:18 2007
我把所有的宏定义放在一个TypeDefine.h头文件中,在所有的模块文件的头文件中都调用该文件,就出现了上面的错误提示。

使用特权

评论回复
地板
单片机电源|  楼主 | 2007-4-10 16:50 | 只看该作者

TypeDefine.h头文件

/*=======================================================
04/06/07
=======================================================*/
#ifndef    DATA_TYPE
#define    DATA_TYPE

#define    uint    unsigned int
#define    uchar    unsigned char
#define    ulong    unsigned long

typedef    union
{
    struct
    {
        unsigned    char    b0: 1;
        unsigned    char    b1: 1;
        unsigned    char    b2: 1;
        unsigned char    b3: 1;
        unsigned    char    b4: 1;
        unsigned    char    b5: 1;
        unsigned    char    b6: 1;
        unsigned    char    b7: 1;
    }bit_def;
    uchar    all;
}byte_def;

#define    ubat_fault_value    108
#define    setbit(var,bit)    (var|=(0x01<<(bit)))
#define    clrbit(var,bit)    (var&=(~(0x01<<(bit))))
#define    checkbit(var,bit)    (var&(0x01<<(bit)))

#define    CHNL_1    RA5=0,RA4=0,RA2=0
#define    CHNL_2    RA5=0,RA4=0,RA2=1
#define    CHNL_3    RA5=0,RA4=1,RA2=0
#define    CHNL_4    RA5=0,RA4=1,RA2=1
#define    CHNL_5    RA5=1,RA4=0,RA2=0
#define    CHNL_6    RA5=1,RA4=0,RA2=1
#define    CHNL_7    RA5=1,RA4=1,RA2=0
#define    CHNL_8    RA5=1,RA4=1,RA2=1
#define    BUZZ_RING    RC3=1
#define    BUZZ_OFF    RC3=0

#define    LED_OFF    RC1=1
#define    LED_ON        RC1=0
#define    KEY            RC2

#define    Enable_Int    GIE=1,PEIE=1
#define    Disable_Int    GIE=0,PEIE=0

static    byte_def    fault_battery=0x00;
#define    fault    fault_battery.all
#define    f1    fault_battery.bit_def.b0
#define    f2    fault_battery.bit_def.b1
#define    f3    fault_battery.bit_def.b2
#define    f4    fault_battery.bit_def.b3
#define    f5    fault_battery.bit_def.b4
#define    f6    fault_battery.bit_def.b5
#define    f7    fault_battery.bit_def.b6
#define    f8    fault_battery.bit_def.b7

#define    CHARGE_OPEN        RC4
#define    CHARGE_SHORT        RC5
#define    OUT1_OPEN            RB0
#define    OUT1_SHORT        RB1
#define    OUT2_OPEN            RB2
#define    OUT2_SHORT        RB3
#define    OUT3_OPEN            RB4
#define    OUT3_SHORT        RB5
#define    OUT4_OPEN            RB6
#define    OUT4_SHORT        RB7

static    byte_def    status_a=0x00;
#define    status_1    status_a.all
#define    out1_open_status    status_a.bit_def.b0
#define    out1_short_status    status_a.bit_def.b1
#define    out2_open_status    status_a.bit_def.b2
#define    out2_short_status    status_a.bit_def.b3
#define    out3_open_status    status_a.bit_def.b4
#define    out3_short_status    status_a.bit_def.b5
#define    out4_open_status    status_a.bit_def.b6
#define    out4_short_status    status_a.bit_def.b7
static    byte_def    status_b=0x00;
#define    status_2    status_b.all
#define    charge_open_status    status_b.bit_def.b0
#define    charge_short_status    status_b.bit_def.b1
#define    Flag_Serial_Error    status_b.bit_def.b2

#endif

使用特权

评论回复
5
yewuyi| | 2007-4-11 08:22 | 只看该作者

没事情做,你改头文件做什么?

你连简单的走还没学会,怎么可能就会‘跑’了呢?

使用特权

评论回复
6
单片机电源|  楼主 | 2007-4-11 08:58 | 只看该作者

这是我自己定义的头文件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

49

帖子

0

粉丝