新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC單片機C語言程序設計(14)

PIC單片機C語言程序設計(14)

作者: 時間:2013-02-05 來源:網絡 收藏

  對于A/D 轉換程序的初始化一般要經過圖62 的幾個步驟。

  A/D 轉換初始化函數(shù)代碼如下:

  void adcsh()

  {

  TRISA=0X07;// 設定I/O 口為輸入

  ADCON1=0X8a;

  //RA0~RA5 設為模擬口,RA3 接參考電壓。

  ADCON0=0X81;

  // 通道0,選擇系統(tǒng)時鐘focs/32.

  ADRESH=0;

  ADRESL=0; // 清空轉換結果寄存器

  GIE=1; // 打開總中斷

  PEIE=1; // 打開第一外圍中斷屏蔽

  ADIE=1; // 打開A/D 中斷

  ADIF=0; // 清除A/D 中斷標志位。

  }

  以上流程圖和代碼是采用中斷服務程序來讀取A/D 轉換數(shù)值的,雖然通過查詢標志位方式也可以達到同樣的效果,但是在實際應用中,中斷服務方式因方便、可靠、節(jié)省芯片運行時間而成為常用的編程結構。對于中斷服務程序,越簡單越好,因PIC 單片機特殊的堆棧結構,不宜在中斷服務程序內作數(shù)據運算和太多調用函數(shù)的操作,原則是取出值后立即退出中斷,以保證其它的任務能及時被響應。圖63 是中斷服務流程圖。

圖63

  AD 中斷C 語言的基本寫法:

  void interrupt AD(void)

  // 必須用interrupt 關鍵詞,編譯器才會判定是中斷服務程序

  {

  unsigned int ad_1=0;

  if(ADIF==1)

  // 判斷A/D 轉換中斷標志位是否為1 ;

  {

  ADIF=0;// 清零中斷標志位

  ad_1=(ADRESH0X03)*256+ ADRESL;

  // 讀取A/D 轉換結果,并將低字 節(jié)和高字節(jié)進行整合。

  }

  }

  從以上的代碼看出,C 語言比匯編要簡單得多,進入中斷后,標志位清零是必須的,返回指令可以不寫,這是最基本的中斷服務程序。

  以下提供在實際應用中的代碼:

  AD 初始化函數(shù):

  void adcsh()

  {

  OPTION=OPTION|0x80;// 關閉弱上拉

  TRISC=0X00;

  TRISB=0X03;

  PORTC=0X00;

  ADCON1=0X8a;

  // 轉換結果右對齊,RA0~RA5 設為模擬口,



評論


相關推薦

技術專區(qū)

關閉