新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于頭文件的進一步理解基于PIC單片機

        關于頭文件的進一步理解基于PIC單片機

        作者: 時間:2016-11-20 來源:網絡 收藏
        一:關于處理器的寄存器定義
        針對處理器的寄存器定義文件是一個匯編文件,包含特定器件上所有特殊功能寄存器的定義。編譯時,針對處理器的寄存器定義文件將被編譯成需要鏈接到應用程序的目標文件 。
        例如,在 PIC18C452 針對處理器的寄存器定義文件中, PORTA 定義為:
        SFR_UNBANKED0 UDATA_ACS Hf80
        PORTA
        PORTAbits RES 1 ; 0xf80
        第一行指定 PORTA 所在的數據寄存器存儲區和這個存儲區的起始地址。 PORTA 有兩個標號, PORTAbits 和 PORTA,都指向同一個地址 (本例中是 0xf80)。
        二:關于頭文件聲明
        針對處理器的頭文件是包含特殊功能寄存器外部聲明的 C 文件,特殊功能寄存器在寄存器定義文件中定義。
        例如,在PIC18C452 的針對處理器頭文件中, PORTA 聲明為:
        extern volatile near unsigned char PORTA;
        和:
        extern volatile near union {
        struct {
        unsigned RA0:1;
        unsigned RA1:1;
        unsigned RA2:1;
        unsigned RA3:1;
        unsigned RA4:1;
        unsigned RA5:1;
        unsigned RA6:1;
        } ;
        struct {
        unsigned AN0:1;
        unsigned AN1:1;
        unsigned AN2:1;
        unsigned AN3:1;
        unsigned T0CKI:1;
        unsigned SS:1;
        unsigned OSC2:1;
        } ;
        struct {
        unsigned :2;//填充前兩位
        unsigned VREFM:1;
        unsigned VREFP:1;
        unsigned :1;//此位被填充
        unsigned AN4:1;
        unsigned CLKOUT:1;
        } ;
        struct {
        unsigned :5;//填充前五位
        unsigned LVDIN:1;
        } ;
        } PORTAbits ;
        第一個聲明指定 PORTA 是一個字節 (unsigned char)。由于變量是在寄存器定義文件中定義的,因此需要 extern 修飾符。 volatile 修飾符告知編譯器不能假定 PORTA 能保留賦給它的值。 near 修飾符指定了端口位于存取 RAM 中。第二個聲明指定 PORTAbits是可位尋址的匿名結構的聯合 。特殊功能寄存器中的每一位可能有不只一種功能 (因此會有不只一個名稱),因此聯合中對于同一個寄存器有多個結構定義。所有結構定義中的各位分別針對寄存器中相同的位。如果一個位只有一個功能,那么在其它結構定義中,這一位只是被填充。例如,在第三和第四個結構中, PORTA 的第 1 位 和第 2 位只是被填充,因為它們只有兩個名稱;而第 6 位有四個名稱,在每個結構中都指定了第 6 位。


        關鍵詞: 頭文件PIC單片

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 永修县| 马公市| 霸州市| 韶关市| 霍林郭勒市| 汕尾市| 博野县| 嘉禾县| 克拉玛依市| 新竹县| 方城县| 大荔县| 长治市| 云浮市| 新平| 察哈| 黄大仙区| 滨州市| 大足县| 县级市| 麻栗坡县| 金塔县| 东乌| 都江堰市| 浏阳市| 庐江县| 甘南县| 景谷| 常宁市| 宝应县| 木里| 内黄县| 且末县| 怀宁县| 蓬安县| 阿尔山市| 霍城县| 阿巴嘎旗| 德州市| 施甸县| 高陵县|