1
我有以下代碼:#定義的二進制值的
#define phase_1 0b00011000
#define phase_2 0b00101000
#define phase_3 0b00001010
#define phase_4 0b00001100
哪些實際上對應於需要被設置爲高爲步進電機的給定階段的插針。它工作得很好,但不清楚哪些位對應哪根線。
什麼我試圖acheive是類似的東西
#define Yellow PORTB5
#define Orange PORTB4
#define Enable PORTB3
#define Blue PORTB2
#define White PORTB1
,然後有類似的東西把我的方式是很容易有點明白
#define phase_1 (1 << Yellow) | (1 << Enable)
#define phase_2 (1 << Blue) | (1 << Enable)
等
有沒有一種方法可以用類似的方式進行定義,這樣當我在一段時間內查看我的代碼時,我會準確知道每根導線的位置以及它的含義。
您的微控制器應該已經爲'PORTB3'提供了'#define'的頭文件。請檢查製造商的網站。 – Potatoswatter
也許'PORTB1'等全部準備好被定義爲某個十六進制值。通過掩蓋較低的3位,您可以獲得所需的索引。也許'#define黃色(PORTB5&7)'。 – chux
您應該在#define表達式(((1 << Yellow)|(1 << Enable)))周圍放置另一組圓括號。如果在表達式中曾經使用過phase_1,這將防止不需要的結果做到不考慮運算符的優先級。 – kkrambo