匯編語言寫程序,不區分大小寫;C語言就要注意了。某些自定義變數用大寫,程序中就一定要大寫。
wela是C語言關鍵詞,是要求小寫的。
2. 51單片機編程,裡面的引腳定義多為大寫字母,怎麼修改成小寫的
你打開頭文件「reg51.h」把埠大寫的P全換成小寫的就可以了。
3. 單片機里xbyte和xdata到底什麼關系啊
首先說明:由於C語言是字元大小寫敏感的,所以沒有xbyte,而只有XBATE!
下面說一下,XBATE和xdata的意思。
xdata是C51關鍵字,說明變數的存儲區間,它是指單片機的擴展存儲區域(也稱外部存儲、片外存儲,盡管物理存儲器也可能在單片機晶元內部),最大64kByte,在匯編語言中,需要通過用16位指針DPTR來訪問。
XBATE在ABSACC.H文件中為一個宏定義
#define XBYTE ((unsigned char volatile xdata *) 0)
也就是說,通過直接地址引用該位置的值。例如在xdata的04H單元內存放了一個字元'c',則
XDATA[4]就是引用了04H的內容,也就是'c'。
同樣的還有DBYTE,CBYTE,PBYTE等單位元組引用data、pdata,code空間的數據,還有XWORD,DWORD,CWORD,PWORD等雙位元組引用xdata,data,code,pdata空間的數據的,但要注意它們是以2位元組為一個計數單元。例如 XWORD[4]是引用xdata空間中08H,09H兩個單元構成的unsigned int。
不知道說明清楚了沒有?
4. 單片機C語言程序,看不懂,求講解
「T0中斷服務程序不是一個子程序嗎?但沒看見在主程序中調用這個子程序啊,求講解這個程序命令的運行過程,定時器怎麼中斷的?」
該子程序是在硬體產生中斷的時候,跳轉到相應中斷入口後,再跳轉到這個中斷服務程序的。請注意函數後面的「interrupt x」聲明,這是C51的擴展內容。
「用示波器測波形是測p1.0引腳,為什麼是這個引腳,怎麼確定的?咐族仿p1_0不是個變數名嗎?」
P1_0這個符號在前面的頭文件穗漏 t89c51cc02.h 中有定義。至於「為什麼是這個引腳」,是由硬體設計及本程序共同確定的。P1_0(不是你寫的p1_0,C語言要區分衡纖大小寫哦)代表P1口的第0管腳,在頭文件中通過sbit定義。
「為什麼T0中斷服務程序和主程序中都有T0的初值,設置還是一樣,他們有什麼關系?」
主程序前面的是對Timer0初始化,賦以初值。執行 TR0 = 1; 這一句以後,Timer0就開始運行了——TL0與TH0組成的13位計數器開始不斷遞增。當13位全部為1之後,再遞增就全部為0,此時溢出事件會觸發產生定時器0,同時計數器仍然在繼續計數——為了讓時間間隔保持一致,就需要再度將計數器賦以初值。