It might seem a bit overwhelming to have to use binary numbers and bitwise operations, but using these operations can be twice—and sometimes a hundred times—faster than doing decimal math or using convinence functions. Because the ELEV-8 Flight Controller’s firmware cycles 250 times per second, every bit of time saved counts!
There are a few more operations that we need to understand before we can start blinking LEDs with the flight controller. Let’s start with the number 3000 as a binary number:
101110111000
If we wanted to store that into a variable, we could type this:
int theNumber = 3000;
or
int theNumber = 0b101110111000;
When we want to represent a binary number in Propeller C, we precede it with “0b“. SimpleIDE then knows that it is written in binary.
Since a binary number is only made up of 1’s and 0’s, we can flip each digit or invert the number. To do that, we use the “~” operator.
Try this
- Open a new PropellerC project in SimpleIDE.
- Copy the following code and paste it into the main window:
/* inverting "NOT" operator example */ #include "simpletools.h" // Include simpletools library unsigned int theNumber; // Declare variable int main() // Main function { while(1) { print("Enter a number: "); // User prompt to enter the number scan("%d\n", &theNumber); // Scan what the user types print("\n\nDecimal: \t%u", theNumber); // Display theNumber as a decimal print("\nBinary: \t%032b", theNumber); // Display theNumber in binary theNumber = ~theNumber; // Invert theNumber print("\nInverted: \t%032b", theNumber); // Display theNumber inverted in binary print("\nInv. Dec.:\t%u\n\n", theNumber); // Display theNumber inverted as a decimal } }
- Click “Program > Run With Terminal”
You should se something like this:
Notice that the 1’s and 0’s are all flipped. This will come in handy for creating something called a mask.