《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > PIC單片機入門_PICC頭文件介紹

PIC單片機入門_PICC頭文件介紹

2018-07-31
來源:互聯(lián)網(wǎng)
關(guān)鍵詞: PICC 頭文件

PICC支持下的C程序代碼中一定要包含pic.h頭文件,該文件安裝在HT-PIC\include目錄下。它是很多頭文件的集合,C編譯器在pic.h中根據(jù)用戶選擇的芯片自動載入相應(yīng)的其它頭文件,例如用戶選擇的芯片是PIC16F877,則pic.h會把pic1687x.h載入;例如用戶選擇的芯片是PIC16F877A,則pic.h會把pic168xa.h載入。載入的頭文件中其實是聲明芯片的寄存器和一些函數(shù)。例如以下程序片段:



static volatile unsigned char PORTA@ 0x05;

static volatile unsigned char PORTB@ 0x06;

static        unsigned char bank1 OPTION@ 0x81;

static        unsigned char bank1 TRISA@0x85;

static        unsigned char bank1 TRISB @0x86;

@符號表示地址的意思。這些聲明和PIC匯編中的定義寄存器是差不多的。

例如:



TMR0 EQU 0x01;

PCL EQU 0x02;

STATUS EQU 0X03;

對于特殊功能寄存器的位地址在頭文件中也有定義,比如PORTB端口的位地址定義如下:


/*   PORTB bits   */

static volatile bit  RB7  @ (unsigned)&PORTB*8+7;

static volatile bit  RB6  @ (unsigned)&PORTB*8+6;

static volatile bit  RB5  @ (unsigned)&PORTB*8+5;

static volatile bit  RB4  @ (unsigned)&PORTB*8+4;

static volatile bit  RB3  @ (unsigned)&PORTB*8+3;

static volatile bit  RB2  @ (unsigned)&PORTB*8+2;

static volatile bit  RB1  @ (unsigned)&PORTB*8+l;

static volatile bit  RB0  @ (unsigned)&PORTB*8+0;

其中RB7代表PORTB的bit7。

我們可以模仿pic.h文件的定義方法定義RAM中文件寄存器的方法,定義bank0的20h,21h,22h為文件寄存器以及他們的位地址。

假設(shè)我們把

20h取名RAM20H,其位地址分別是RAM20H7~RAM20H0

21h取名RAM21H,其位地址分別是RAM21H7~RAM21H0

22h取名RAM22H,其位地址分別是RAM22H7~RAM22H0


定義如下:



static volatile unsigned char RAM20H @0x20;

static volatile unsigned char RAM21H @0x21;

static volatile unsigned char RAM22H @0x22;

RAM20H的位地址定義如下:

static volatile bit RAM20H7 @(unsigned)&RAM20H*8+7;

static volatile bit RAM20H6 @(unsigned)&RAM20H*8+6;

static volatile bit RAM20H5 @(unsigned)&RAM20H*8+5;

static volatile bit RAM20H4 @(unsigned)&RAM20H*8+4;

static volatile bit RAM20H3 @(unsigned)&RAM20H*8+3;

static volatile bit RAM20H2 @(unsigned)&RAM20H*8+2;

static volatile bit RAM20H1 @(unsigned)&RAM20H*8+1;

static volatile bit RAM20H0 @(unsigned)&RAM20H*8+0; 

RAH21H和RAH22H的位地址也可以類似定義:

static volatile bit RAM21H7 @(unsigned)&RAM21H*8+7;

static volatile bit RAM21H6 @(unsigned)&RAM21H*8+6;

static volatile bit RAM21H5 @(unsigned)&RAM21H*8+5;

static volatile bit RAM21H4 @(unsigned)&RAM21H*8+4;

static volatile bit RAM21H3 @(unsigned)&RAM21H*8+3;

static volatile bit RAM21H2 @(unsigned)&RAM21H*8+2;

static volatile bit RAM21H1 @(unsigned)&RAM21H*8+1;

static volatile bit RAM21H0 @(unsigned)&RAM21H*8+0;

static volatile bit RAM22H7 @(unsigned)&RAM22H*8+7;

static volatile bit RAM22H6 @(unsigned)&RAM22H*8+6;

static volatile bit RAM22H5 @(unsigned)&RAM22H*8+5;

static volatile bit RAM22H4 @(unsigned)&RAM22H*8+4;

static volatile bit RAM22H3 @(unsigned)&RAM22H*8+3;

static volatile bit RAM22H2 @(unsigned)&RAM22H*8+2;

static volatile bit RAM22H1 @(unsigned)&RAM22H*8+1;

static volatile bit RAM22H0 @(unsigned)&RAM22H*8+0;

將這些定義加入到相應(yīng)的頭文件中,或者直接寫在源程序中,這樣就可以直接對通過變量RAM20H對bank0的20h單元進行字節(jié)操作,可以通過RAM20H7~RAM20H0對bank0的20h單元進行位操作。例如:


#include

main()

{  

RAM20H=0x20;   //把0x20賦值給20h

RAM21H=0x21;   //把0x21賦值給21h

RAM22H= RAM20H+ RAM21H;

   

while(1) {  ;   }

 

}

以上程序假設(shè)RAM20H、RAM21H和RAM22H的聲明已經(jīng)加入到相應(yīng)的頭文件中,那么在源程序中就可以直接使用。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 亚洲成人动漫在线观看| 成年入口无限观看免费完整大片| 啦啦啦在线观看视频直播免费| 中文字幕亚洲综合久久菠萝蜜| 欧美日韩黄色片| 国产成人高清亚洲一区久久| 一本伊在人香蕉线观新在线| 热久久综合这里只有精品电影| 国产剧情在线看| 777奇米四色成人影视色区| 最近中文字幕mv2018免费看| 国产亚洲福利精品一区二区| 国产91久久精品一区二区| 国产乱xxxxx97国语对白| 免费无遮挡无码视频网站| 国产精品成人一区二区三区| 日韩亚洲av无码一区二区三区| 美女的尿口视频网站| 自拍偷拍校园春色| 3d动漫精品一区二区三区| 久久亚洲av无码精品色午夜| 久久伊人色综合| 久草免费手机视频| 91免费播放人人爽人人快乐| 无码人妻丰满熟妇区五十路百度 | 精品综合久久久久久99| 在线观看日本www| 中文字幕欧美亚洲| 最新中文字幕在线视频| 免费视频专区一国产盗摄| 男女无遮挡动态图| 插B内射18免费视频| 亚洲精品无码国产| 黑巨人与欧美精品一区| 小小的日本三电影免费观看 | 3d动漫h在线观看| 扒开双腿猛进入免费视频黄 | 韩国一级做a爱性色毛片| 天天摸天天爽天天碰天天弄| 亚洲av无码片在线播放| 老湿影院在线观看|