![]() |
手冊上有,不代表編譯平臺就認識。 你要告訴編譯平臺CMPO_S是什么? |
仔細看手冊, CMPO_S = 0; 是非法的,要用 P_SW2 &= 0xF7; //CMPO_S: P3.4 P_SW2 |= 0x08; //CMPO_S: P4.1 |
P_SW2 |= 0x80; |
有的寄存器不支持位操作的,去看看頭文件有沒有聲明吧。 |
原因很簡單,因為CMPCR1、CMPCR2都是不可位尋址的,CMPO_S也不可位尋址,應該用邏輯操作: P_SW2 |= (1<<3); //選擇P4.1做比較器輸出腳 P_SW2 &= ~(1<<3); //選擇P3.4做比較器輸出腳 CMPCR1 |= 0x80; //允許比較器 |
沒有包含相關的頭文件,c語言自身沒有定義過任何一個位,都是在頭文件里面定義的。 |