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

How to pass sbit variables to other functions?

Hi All,

I am running into problem, where I could not pass sbit variables to a function.

Here's an example:

My SBIT definitions:

sbit OLD_JTAG_TCK = 0xB0+3;
sbit NEW_JTAG_TCK = 0x80+7;

My Function:
void Pulse_TCK(bit sbJTAG_TCK)
{
sbJTAG_TCK = 1;
}

My Main code:

if (old_hardware)
{
Pulse_TCK(OLD_JTAG_TCK)
}
else
{
Pulse_TCK(NEW_JTAG_TCK)
}
For some reason, the above code does not work as I dont see any activity on the TCK pins. Can anyone please help me how to resolve this issue?. Note that I had used the type bit in my function parameter instead of sbit as the later gives syntax error.

Parents
  • Having a compiler switch would force me to do 2 different drivers which kind of defeats the whole purpose

    agreed, as I said
    you may need to do something a little less "pretty"

    I merely mentioned it to show that (unpleasant) possibility.

    there is somewhat convoluted way to do what you want

    My Function:
    void Pulse_TCK(bit sbJTAG_TCK)
    {
    sbJTAG_TCK = 1;
    }
    
    instead
    
    void Pulse_TCK(old_hardware)
    {
    if (old_hardware)
    OLD_JTAG_TCK = 1;
    else
    NEW_JTAG_TCK = 1;
    }

    Erik

Reply
  • Having a compiler switch would force me to do 2 different drivers which kind of defeats the whole purpose

    agreed, as I said
    you may need to do something a little less "pretty"

    I merely mentioned it to show that (unpleasant) possibility.

    there is somewhat convoluted way to do what you want

    My Function:
    void Pulse_TCK(bit sbJTAG_TCK)
    {
    sbJTAG_TCK = 1;
    }
    
    instead
    
    void Pulse_TCK(old_hardware)
    {
    if (old_hardware)
    OLD_JTAG_TCK = 1;
    else
    NEW_JTAG_TCK = 1;
    }

    Erik

Children
No data