80C51特殊功能寄存器定義方式 4.2.2 變量及其定義方法 …… ⒌ 80C51特殊功能寄存器定義方式 80C51片內有21個特殊功能寄存器,在C51的文件夾里,有一個取名reg51.h的庫函數文件,對80C51片內21個特殊功能寄存器按MCS-51中取的名字(必須大寫)全部作了定義,并賦予了既定的字節地址。因此,該21個特殊功能寄存器已不需重復定義,只需在程序開頭的頭文件部分寫一條預處理命令:#include <reg51.h>,表示程序可以調用該庫函數reg51.h(52系列單片機應用#include <reg52.h>)。但對于不符合MCS-51中特殊功能寄存器名的標識符,或未在頭文件中寫入上述預處理命令的,則應重新定義,否則出錯。 …… 需要注意的是,特殊功能寄存器定義應放在函數外(即作為全局變量)。 需要說明的是,雖然C51允許用關鍵詞sfr和sfr16定義80C51特殊功能寄存器,體現了C51編譯功能的多樣性和完整性,但編者還是建議讀者不要去重新定義,而直接使用預處理命令,既省事又不易出錯。 …… ⒍ 位變量定義方式 80C51片內RAM有16字節128位的可尋址位(字節地址20H~2FH,位地址00H~7FH),還有11個特殊功能寄存器是可位尋址的,C51編譯器擴充了關鍵詞bit和sbit,用于定義這些可尋址位。位變量也需先定義,后使用。 …… ⑵ 定義11個特殊功能寄存器可尋址位的位變量 80C51單片機11個可尋址位的特殊功能寄存器中,有6個SFR(PSW、TCON、SCON、IE、IP和P3),它們每一可尋址位有位定義名稱,C51庫函數reg51.h也已對其按MCS-51中取的位定義名稱(必須大寫)全部作了定義,并賦予了既定的位地址。只要在頭文件中聲明包含庫函數reg51.h,就可按位定義名稱直接引用。 但是,還有5個SFR(ACC、B、P0、P1和P2),可尋址位沒有專用的位定義名稱,只有位編號,但這些位編號不符合ANSI C標識符要求,例如,ACC.0、P1.0等(C51標識符規定不可用小數點),應重新定義。其格式如下: ……
以上摘自張志良編著 《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9
|