1. 程式人生 > >我的微控制器學習之路1

我的微控制器學習之路1

為了更好地學習微控制器,同時與大家一起進步,我將以一個飛控程式的main函式開始讀,記錄每一個不懂的語句,並寫下心路歷程。 第一個,關於PWMGO裡的語句 這個函式是用define定義的(我不知道define定義的語句是不是叫函式,先這麼稱呼吧) 到了疑問出現的時刻,這句看不懂 我從圖書館借了一本C primer plus,本打算了解每個不懂得語句得整個體系,即如上得define,不止一種用法,我這裡不懂這個用法。原先我打算通過這裡,瞭解完所有define得用法,後來覺得,這樣子程序緩慢,很可能拖卡我的學習動力,於是決定只瞭解這裡的這種用法。 ————————————————————————分割線---------------------------—————————— #define P2n_push_pull(bitn) P2M1 &= ~(bitn), P2M0 |= (bitn) 每邏輯行都由三部分組成, 1、#define本身 2、選定的縮寫,也稱為巨集

,在這裡就是P2n_push_pull(bitn)了。 3、替換列表或者稱替換體。 在這個例子中是使用引數,所以這個巨集是類函式巨集,其中可以有一個或者多個引數,這些引數會出現在替換體中。 巨集只替換,不計算是個很注重要的概念!!! 回到語句本身,這是一個帶一個引數的類函式巨集。 所以預處理得時候P2n_push_pull(bitn)會被替換成P2M1 &= ~(bitn), P2M0 |= (bitn) P2M1和P2M0是可以對P2的8位IO進行輸出型別設定的暫存器。 在這裡插入圖片描述 0x0f對應的8位二進位制數為00001111; P2M1 &= ~(0X0F),由於要保證高四位的值不受影響,所以先對00001111取反,得到11110000 再P2M1&=11110000,不會對高四位產生影響。得到P2M1=11110000, 對P2M0 |= (bitn),則P2M0=xxxx1111,高四位不在這個變數運算中發生改變。 第一次些部落格,略顯庸雜