(1)AD數據采集程序說明
1)過程簡單說明
使用C8051F32X片內10位AD進行256個數據(每個數據為10位,占2個字節(jié))512字節(jié)的數據采集。
采用TIME2定時溢出觸發(fā)啟動AD轉換方式。
在AD數據轉換完成,AD結束標志位為1時,自動產生AD轉換完成中斷(C8051F32X中斷10)。在中斷服務程序中,將AD轉換結果讀到片內RAM中。在程序中表現為:將ADCOH、ADCOL存放到full函數中,設該函數上限為512,當fu11=512時,變量bLOCk_finish=l(初始狀態(tài)和表1ADC控制寄存器ADCOCN功能說明fu11<512時,block_finish=0)。此時,主程序中的while(block_finish)結束等待,進入下一部分程序。
AD數據采集結束后,再把采集的512個數據字節(jié)用IAP方式寫入單片機flash的2000H~2200H中。
2)定時器2的工作設置和工作過程
使用TIME2定時溢出觸發(fā)啟動ADC進行數據采集轉換時,設定時器2為16位自動加載方式;定時器控制寄存器TMR2CN(地址:C8H)在初始,化時設置為(C8H)=#OOH,其第3位=0時,設置定時器2工作在16位自動重裝方式。
時鐘為系統(tǒng)時鐘的1/12=1MHz,時鐘控制寄存器CKCON(8EH)設置為:(8EH)=#02H:。
TMR2RL是定時器2重載寄存器的低8位,設置為TMR2RL=65535-(SYSCLK/10000)=65535-100,即定時器2的溢出間隔時間為100/s。設TMR2=Oxffff,是立即重新加載值;TR2=1:置TMR2RN寄存器的位2(TR2)為1時,允許定時器2工作在定時器溢出啟動AD方式。此時,定時器2開始工作。
說明:當TR2置1后,定時器2就循環(huán)工作在定時溢出啟動AD方式狀態(tài)。如要停止其工作,必須在程序中設置TMR2RN=#FBH。
3)AD工作方式設置和工作過程
設置ADCOCN(ADC控制寄存器)=#02H其2~0位設為02,置為定時器2溢出啟動ADC轉換方式。
設置電壓基準寄存器REFOCN=#OBH,選Vdd為電壓基準。
設置AMXOP=#OOH,選AD輸入接口為Pl.0。
設AMXON=#1FH,選ADC負輸入寄存器=接地,P1.0工作在單端模式。
要置P1.0口工作在模擬方式:PIMDIN=#XOH,P1.0要設置PISKIP=#XIH。
設:ADCOCF,ADC配置寄存器(BCH)=#OOH,選數據右對齊,SAR時鐘=3MHz。
當設置ADCOCN寄存器的第7位ADOEN=1時;使能ADC開始轉換工作。
ADC工作后,就不斷的自動循環(huán)工作,除非ADOEN位被清零,才能令其停止工作。
設置EIE1(擴展中斷允許1寄存器)=0X08,其位3置1時,允許ADOINT標志的中斷請求。即使用ADOINT作為中斷的握手標志。
此時,當AD轉換完成,ADOINT自動置1后,產生ADC中斷(C8051F32X單片機中斷10)。
程序在進入中斷服務程序中;將AD轉換結果的10位數字分別放到:
tempstoragel
此時,采集的AD數據是放在單片機的片內RAM中的。為了掉電后這些數據能夠不丟失,還要將其用在系統(tǒng)編程的方式寫到flash中去。
(2)AD數據采集流程
AD數據采集流程流程圖如下圖所示。
?。?)C8051F32X單片機AD數據采集源程序





