You seem to have understood my problem perfectly. Thank you very much for answering. Effectively, the changes made to P wouldn't affect R1 at all...
In other forums, I have been suggested to use pointers, but that didn't seem to compile. I got an error that said invalid ptr to bit or something like that. I don't understand pointers all that well, I will study them further. Someone else suggested my scroll method look something like:
void scroll (sbit P) {...}
That is, to receive an sbit as parameter. Is this possible? I could try it out, but actually, I want to send another parameter, say, a char named R, so my method would be:
void scroll (sbit P, char R) {...}
That doesn't compile, and I'm not sure if it's because of the sbit as parameter or because of the other parameter.
In the end, I stopped trying to send the adress and have the scroll method only check my columns while I turn R1, R2 and R3 manually in my main code. Out of curiosity, what do you mean with change multiple bits at a time working directly over P1?
EDIT1 — It has been pointed out to me that sbit cannot be used as a parameter or within functions.