Skip to main content

Posts

Showing posts from November, 2009

Why "PORTB=~PORTB" sometime does not work?

When performinging READ-MODIFY-WRITE action, some target board setup may encounter problems. Don't know what is this? Simple. Let's look at the following example: PORTB=~PORTB; The statement required the PORTB to be read first then invert then assign back to PORTB, when executed. This is called READ-MODIFY-WRITE. Some students (not all) encounter problem whereby the execution does not lead to the toggling port PORTB. The remedy is to change the statement to: PORTB=~LATB. Why? All the I/O ports in the PIC18F are buffered when they are configured as output ports. In this context, all the 8 bits of PORTB are directed from the output sides of the buffer. The output devices (e.g. LEDs) may have loaded heavily and causing the voltage to drop far below the VDD value. When the READ action takes place the logic states might have been read wrongly. Consider that the PORTB LEDs are currently lighted up by logic 1s. If the READ-MODIFY-WRIRE statement mentioned above is used to t