This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Sbit and Extern on big project

I have read http://www.keil.com/forum/1854/how-to-use-extern-sbit-declare/

My problem is same. Using "extern sbit" works as mentioned in above post for small project.

My project has more then 10 files.

Now same solution do not work.

Parents
  • Test_Main.C
    ------------
    #include "c8051F060.h"

    extern void toggle_Ext_IP_EN_bit(void);
    extern void toggle_PF_En_bit(void);
    extern void toggle_Sup_Ext_IP_EN_bit(void);
    extern void toggle_Auto_Manual_bit(void);
    extern void toggle_Machine_Type_bit(void);

    unsigned bdata En_Bits = 0;

    sbit Ext_IP_EN_bit = En_Bits^0;
    sbit PF_En_bit = En_Bits^1;
    sbit Sup_Ext_IP_EN_bit = En_Bits^2;
    sbit Auto_Manual_bit = En_Bits^3;
    sbit Machine_Type_bit = En_Bits^4;
    sbit PF_Auto_Manual_bit = En_Bits^5;
    sbit Over_Load_Pf_En_bit = En_Bits^6;

    sbit On_Pin = P0 ^ 0;
    sbit Off_Pin = P0 ^ 0;

    void main(void)
    { WDTCN = 0xDE; WDTCN = 0xAD; while(1) { toggle_Ext_IP_EN_bit(); toggle_PF_En_bit(); toggle_Sup_Ext_IP_EN_bit(); toggle_Machine_Type_bit(); }
    } --------------------------------------------------------------------
    Header file - Main.h
    #include <c8051F060.h>

    extern bdata En_Bits;

    extern bit Ext_IP_EN_bit, PF_En_bit, Sup_Ext_IP_EN_bit, Auto_Manual_bit, Machine_Type_bit, PF_Auto_Manual_bit, Over_Load_Pf_En_bit, On_Pin, Off_Pin;
    -----------------------------------------
    Sup_Ext_IP.C
    #include "Main.h"

    void toggle_Sup_Ext_IP_EN_bit(void)
    { Sup_Ext_IP_EN_bit = ~Sup_Ext_IP_EN_bit; On_Pin = On_Pin; Off_Pin = Off_Pin;
    } ------------------------------------------------------------------------------
    Build target 'Target 1'
    compiling Test_Main.C...
    compiling Sup_Ext_IP.C...
    compiling Ext_IP.C...
    compiling Machine_Type.C...
    compiling PF.C...
    linking...
    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP)
    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP)
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00A6H
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00A8H
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00AAH
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00ACH
    Program Size: data=11.0 xdata=0 code=188
    "Test_Main" - 0 Error(s), 6 Warning(s).

Reply
  • Test_Main.C
    ------------
    #include "c8051F060.h"

    extern void toggle_Ext_IP_EN_bit(void);
    extern void toggle_PF_En_bit(void);
    extern void toggle_Sup_Ext_IP_EN_bit(void);
    extern void toggle_Auto_Manual_bit(void);
    extern void toggle_Machine_Type_bit(void);

    unsigned bdata En_Bits = 0;

    sbit Ext_IP_EN_bit = En_Bits^0;
    sbit PF_En_bit = En_Bits^1;
    sbit Sup_Ext_IP_EN_bit = En_Bits^2;
    sbit Auto_Manual_bit = En_Bits^3;
    sbit Machine_Type_bit = En_Bits^4;
    sbit PF_Auto_Manual_bit = En_Bits^5;
    sbit Over_Load_Pf_En_bit = En_Bits^6;

    sbit On_Pin = P0 ^ 0;
    sbit Off_Pin = P0 ^ 0;

    void main(void)
    { WDTCN = 0xDE; WDTCN = 0xAD; while(1) { toggle_Ext_IP_EN_bit(); toggle_PF_En_bit(); toggle_Sup_Ext_IP_EN_bit(); toggle_Machine_Type_bit(); }
    } --------------------------------------------------------------------
    Header file - Main.h
    #include <c8051F060.h>

    extern bdata En_Bits;

    extern bit Ext_IP_EN_bit, PF_En_bit, Sup_Ext_IP_EN_bit, Auto_Manual_bit, Machine_Type_bit, PF_Auto_Manual_bit, Over_Load_Pf_En_bit, On_Pin, Off_Pin;
    -----------------------------------------
    Sup_Ext_IP.C
    #include "Main.h"

    void toggle_Sup_Ext_IP_EN_bit(void)
    { Sup_Ext_IP_EN_bit = ~Sup_Ext_IP_EN_bit; On_Pin = On_Pin; Off_Pin = Off_Pin;
    } ------------------------------------------------------------------------------
    Build target 'Target 1'
    compiling Test_Main.C...
    compiling Sup_Ext_IP.C...
    compiling Ext_IP.C...
    compiling Machine_Type.C...
    compiling PF.C...
    linking...
    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP)
    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP)
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00A6H
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: ON_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00A8H
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00AAH
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: OFF_PIN MODULE: Sup_Ext_IP.obj (SUP_EXT_IP) ADDRESS: 00ACH
    Program Size: data=11.0 xdata=0 code=188
    "Test_Main" - 0 Error(s), 6 Warning(s).

Children