當前位置:編程學習大全網 - 編程軟體 - 關於采集IO口電壓

關於采集IO口電壓

下面是我以前用過的壹個程序,不過是MEGA32的,我沒用過mega16,樓主只要將以下用到的控制寄存器修改成mega16的即可:

基本思想是初始化程序中設定好自動連續轉換,再在中斷服務程序中讀取結果(每中斷壹次獲得壹個通道的轉換結果值)。

void adc_init(void)

{

ADCSR = 0x00; // disable adc

ADMUX = 0xC0; // 參考電壓選擇片內基準電壓 2.56V,從PA0號通道開始

ACSR = 0x80; // 不用模擬比較器

ADCSR = 0x89; // 啟動ADC,轉換結果右對齊,分頻因子 2

ADC_chn = 0x00; // 選擇第壹個通道(PA0)

}

void adc_isr(void)

{

UINT ADC_value;

ADCSR |= 0x10; // 清 AD 完成標誌

ADC_value = ADCL; // 先讀低八位數據

ADC_value |= (int)ADCH << 8;// 再讀高二位數據並移至高字節

if ( ADC_chn == 0x00 )

{ input[0] = ADC_value;// 保存PA0的值

}

else if ( ADC_chn == 0x01 )

{ input[1] = ADC_value;// 保存PA1的值

}

else if ( ADC_chn == 0x02 )

{ input[2] = ADC_value;// 保存PA2的值

}

。。。。。。。。

else if ( ADC_chn == 0x07 )

{ input[7] = ADC_value;// 保存PA7的值

}

ADC_chn ++; // 通道號加 1

if ( ADC_chn > 0x07 ) ADC_chn = 0x00;

ADMUX = 0xC0 + ADC_chn; // 切換通道

}

  • 上一篇:用Java怎麽比較同壹數組中的元素
  • 下一篇:零基礎編程入門自學先學什麽?
  • copyright 2024編程學習大全網