新聞中心

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

        pic關于頭文件的進一步理解(基于PIC單片機 C18編譯器)

        作者: 時間:2016-11-13 來源:網絡 收藏
        一:關于處理器的寄存器定義
        針對處理器的寄存器定義文件是一個匯編文件,包含特定器件上所有特殊功能寄存器的定義。編譯時,針對處理器的寄存器定義文件將被編譯成需要鏈接到應用程序的目標文件 。
        例如,在 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頭文

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 济南市| 松阳县| 沭阳县| 余庆县| 涪陵区| 玉田县| 柞水县| 文安县| 政和县| 天峻县| 古交市| 宁海县| 建湖县| 永川市| 嘉峪关市| 闻喜县| 晋中市| 来安县| 襄垣县| 镇远县| 北流市| 枝江市| 铁岭县| 成安县| 古蔺县| 台州市| 酒泉市| 洪江市| 多伦县| 潜江市| 阿克苏市| 平原县| 康保县| 固始县| 西乡县| 岳普湖县| 泰州市| 宝丰县| 万盛区| 深圳市| 桂东县|