![]() |
發(fā)布時間: 2023-5-6 15:55
正文摘要:在學(xué)習(xí)STC8G單片機(jī)的比較器時,出現(xiàn)了手冊里明明有那個位,寫到程序上,卻提示,找到不呢?這是什么原因? |
手冊上有,不代表編譯平臺就認(rèn)識。 你要告訴編譯平臺CMPO_S是什么? |
仔細(xì)看手冊, CMPO_S = 0; 是非法的,要用 P_SW2 &= 0xF7; //CMPO_S: P3.4 P_SW2 |= 0x08; //CMPO_S: P4.1 |
P_SW2 |= 0x80; |
有的寄存器不支持位操作的,去看看頭文件有沒有聲明吧。 |
原因很簡單,因為CMPCR1、CMPCR2都是不可位尋址的,CMPO_S也不可位尋址,應(yīng)該用邏輯操作: P_SW2 |= (1<<3); //選擇P4.1做比較器輸出腳 P_SW2 &= ~(1<<3); //選擇P3.4做比較器輸出腳 CMPCR1 |= 0x80; //允許比較器 |
沒有包含相關(guān)的頭文件,c語言自身沒有定義過任何一個位,都是在頭文件里面定義的。 |
Powered by 單片機(jī)教程網(wǎng)