Search code examples
8051

(8051) Check if a single bit is set


I'm writing a program for a 8051 microcontroller. In the first part of the program I do some calculations and based on the result, I either light the LED or not (using CLR P1.7, where P1.7 is the port the LED is attached to in the microcontroller).

In the next part of the program I want to retrieve the bit, perhaps store it somewhere, and use it in a if-jump instruction like JB. How can I do that?

Also, I've seen the instruction MOV C, P1.7 in a code sample. What's the C here?


Solution

  • The C here is the 8051's carry flag - called that because it can be used to hold the "carry" when doing addition operations on multiple bytes.

    It can also be used as a single-bit register - so (as here) where you want to move bits around, you can load it with a port value (such as P1.7) then store it somewhere else, for example:

    MOV C, P1.7
    MOV <bit-address>, C
    

    Then later you can branch on it using:

    JB <bit-address>, <label>