Editing Read before write
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
==== Read before Write ==== | ==== Read before Write ==== | ||
− | The issue with 'read before write' is that, unlike a PIC18, it is impossible for a program running on the PIC16 to read the state of its output | + | The issue with 'read before write' is that, unlike a PIC18, it is impossible for a program running on the PIC16 to read the state of its output pins. |
The classic issue occurs when individual port bits are set, or toggled, causing outputs on the pins to behave unexpectedly. | The classic issue occurs when individual port bits are set, or toggled, causing outputs on the pins to behave unexpectedly. | ||
Line 25: | Line 25: | ||
#define set_port(port, no)\ | #define set_port(port, no)\ | ||
− | set_bit(sport[& | + | set_bit(sport[&porta-PORTA], no);\ |
− | port=sport[& | + | port=sport[&porta-PORTA]; |
#define clear_port(port, no)\ | #define clear_port(port, no)\ | ||
− | clear_bit(sport[& | + | clear_bit(sport[&porta-PORTA], no);\ |
− | port=sport[& | + | port=sport[&porta-PORTA]; |
#define test_port(port, no)\ | #define test_port(port, no)\ | ||
− | test_bit(sport[& | + | test_bit(sport[&porta-PORTA], no) |
#define toggle_port(port, no)\ | #define toggle_port(port, no)\ | ||
− | toggle_bit(sport[& | + | toggle_bit(sport[&porta-PORTA], no);\ |
− | port=sport[& | + | port=sport[&porta-PORTA]; |
</pre> | </pre> | ||
Line 43: | Line 43: | ||
* [http://massmind.org/techref/readmodwrite.htm The Read-Modify-Write problem] | * [http://massmind.org/techref/readmodwrite.htm The Read-Modify-Write problem] | ||
− | |||
− | |||
− | |||
[[Category:BoostC]][[Category:PIC]] | [[Category:BoostC]][[Category:PIC]] |