Pro tip: Enable the . It outputs a .map file that reads like a confessional—showing exactly where every variable sinned (i.e., consumed a cycle). 2. Optimization Levels: The "Surgeon" vs. The "Wrecking Ball" The default optimization ( -O1 ) is safe. But -O3 (for XC32) or -Os (for XC8) is where things get interesting.
uint16_t timer = 65000; timer = timer + 1000; // Warning: implicit conversion loses integer precision On an 8-bit PIC, that operation is 6 assembly instructions. On a 32-bit ARM (via XC32), it's one. The warning isn't pedantry—it's telling you that your 16-bit overflow will behave differently on different architectures. mplab x compiler
And that while(1); ? The compiler leaves it alone. Some things are sacred. Author’s note: This article was compiled with XC8 v2.36, XC16 v2.10, and a healthy respect for the -fno-builtin flag. Pro tip: Enable the
You write a delay function: