簡體   English   中英

C宏打開或關閉引腳

[英]C macro to turn a pin on or off

我知道之前有人問過這個問題,但我花了幾個小時尋找並測試了一些東西,卻找不到解決方案。

我想替換這個:

#define LED_ON PORTA|=(1<<6)
#define LED_OFF PORTA&=~(1<<6)

用這樣的東西:

#define ON 1
#define OFF 0
#define LED(x) if (x==ON) PORTA|=(1<<6) else if (x==OFF) PORTA&=~(1<<6)

那么這樣做的正確方法(或最佳方式?)是什么?

像這樣?

#define LED(x) (x==ON) ? (PORTA|=(1<<6)) : (PORTA&=~(1<<6))

編輯:輕微的錯誤,我道歉。 這是你想要的嗎?

您也可以使用三元運算符。

#define ON 1
#define OFF 0
#define LED(X)  (X)?(PORTA|=(1<<6)):(PORTA &= ~(1<<6));

你可以通過將引腳號替換為更通用的宏:

#define ON 1
#define OFF 0
#define LED(STATE, PIN) (STATE)?(PORTA|=(1<<PIN)):(PORTA &= ~(1<<PIN));

此外,您可以通過將PortName替換為以下內容使其成為所有端口的通用:

#define ON 1
#define OFF 0
#define LED(STATE, PORT, PIN)   (STATE)?(PORT|=(1<<PIN)):(PORT&=~(1<<PIN));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM