No, Label won't work.

I2C relies on the Master (PIC) generating a clock. You can't have two Masters because firstly the bus would have to be multiplexed between the Masters, but secondly, one would interfere with the other should they use the bus at the same time.

Options...

1. One was was already mentioned. Use a third line between the PICs to indicate the bus is in use.

2. Dedicate one PIC as the I2C bus server, and on request it will fetch whatever data the other PIC requires.

3. Synchronise a clock between PICs... (say 10Hz...), PIC-A is only allowed to use the bus commencing on a clock leading edge, PIC-B is only allowed to use the bus commencing on the falling edge. Here with this example, all bus transactions must be completed within say a 45mS slot.

Checking the bus for traffic is not a good way to go, because there are many instances where a pause in mid-transfer (eg a 10mS wait following an EEPROM Write) could be construed as the bus being free.