發新話題
打印

C8051F313~ ADC的設定部分

C8051F313~ ADC的設定部分

Dear 版友們, 想請問一下關於C8051 MCU在ADC的設定,
我目前設定為:
初始設定:
ADC0CN    = 0x00;               
AMX0P     = 0x08;        //P to P2.0
AMX0N     = 0x1F;        //N to GND
ADC0CF    = 0xC0;        //SAR CLOCK: 11000
ADC0CN    = 0x40;        //Track mode, white 1 to BUSY;
AD0EN = 1;

執行ADC時的副程式:

void ADC_Function()
{
     AD0BUSY = 1;    // set 1
     while(AD0BUSY)
     {
         Delay();
      }
      i = ADC0L;數據暫存
      j = ADC0H;數據暫存
      AD0INT = 0;
===========================================
以上是我的程式,  但使用時發現, 如果不在AD0BUSY = 1; 加上Delay的話,
得到的數據就會不對或為零.

但我原程式是想用while()那段程式來確定ADC轉換是否完成,
請問是不是不能直接用AD0BUSY來判斷是否換完成呢?
謝謝喔~~^^"

TOP

您好
這是我的寫法
AD0BUSY=1;
        while(1)
        {
                i=AD0INT;
                if(i==1)
                break;
        }
        AD0INT=0;

TOP

AD0BUSY 不是用來判斷 ADC 是否已完成 converter 的 Flag,要用 AD0INT 來判斷,可以這樣寫:

AD0BUSY = 1;
while(AD0INT != 1);
ADC_H8 = ADC0H;
ADC_L8 = ADC0L;
AD0INT = 0;

TOP

多謝回覆!

恩恩, 了解了!!  感謝兩位版主  ^^"

TOP

發新話題