Let us suppose bits 5 and 6 of portb are set and 4 is displayed on the 7 seg display and we want to display 5
portb will be %01100100
(portb & $F0) will clear the lower 4 bits of portb leaving bits 5 and 6 unchanged.
01100100 &
11110000
========
01100000 result A
(mybyte & $0F) will clear the top 4 bits of mybyte
11000101 &
00001111
========
00000101 result B
we now OR ( | ) result A with result B
01100000 OR
00000101
========
01100101
Bits 5and 6 of portb are unchanged and the lower 4 bits are set to 5
If mybyte is never going to be greater than 9, (mybyte & $0F) can be replaced by mybyte
See bitwise operators in the manual




Bookmarks