嵌入式PLC芯片組的多路模擬量應用開(kāi)發(fā)

2、軟件開(kāi)發(fā)
嵌入式PLC是基于Cygnal公司的C8051f040芯片開(kāi)發(fā)的,所以二次程序的開(kāi)發(fā)使用51匯編語(yǔ)言。開(kāi)發(fā)選擇的編譯器是KEILC51,因為它可以生成我們所需要的.HEX文件。內核留出了七個(gè)用戶(hù)嵌入程序接口,我們只需要充分理解各個(gè)接口的功能就可了進(jìn)行二次開(kāi)發(fā)了,需要熟悉如下內容:a、內核功能b、內核結構c、內核任務(wù)管理d、內核存儲空間分配?!?】由于系統軟件中已經(jīng)加入了232通信、485通信和CAN通信的功能,所以16路模擬量PLC的二次驅動(dòng)軟件的開(kāi)發(fā)主要集中在模擬量的AD轉換和PLC資源區中AD值的實(shí)時(shí)刷新上。
(1)程序規劃
T4中斷:完成AD轉換和16個(gè)通道的切換程序
USER_SCAN:PLC資源區中AD值的刷新。
AD轉換過(guò)程如下:每一通道連續采樣16次,采樣完后得到累加和,然后啟動(dòng)下一通道的AD轉換。
PLC資源區中AD值的刷新過(guò)程如下:在梯形圖掃描周期結束時(shí)進(jìn)行,把各路AD值的累加和求平均值后放入PLC的資源區的對應位置處。
(2)程序代碼
INIT_AD:;AD初始化
MOVSFRPAGE,#ADC0_PAGE
MOVREF0CN,#07H;內部參考電壓/輸出到VERF
;啟動(dòng)內部溫度傳感器
MOVAMX0CF,#00H;單極性輸入
MOVADC0CF,#0B8H;D7——D3=SYSCLK/采樣時(shí)鐘-1
;采樣轉換時(shí)鐘=1US
;D2——D0=GAIN
;000GAIN=1
MOVADC0CN,#90H;啟動(dòng)AD采樣
MOVAD_CHANNEL,#00H;AD通道號,初值為0
MOVAD_COUNT,#00H;16次采樣次數計數。初值為0
RET
SAMPLE_AD:;AD采樣開(kāi)始
MOVSFRPAGE,#ADC0_PAGE;AD控制寄存器頁(yè)
MOVA,AD_CHANNEL;采樣值的累加和是一個(gè)字基地址;為#XAI,偏移地址為AD_CHANNEL
RLA
MOVDPTR,#XAI;XAI存放16次采樣值的累加和
ADDA,DPL;低字節相加
MOVDPL,A
MOVXA,@DPTR
MOVB,A
MOVA,ADC0L
CLRC
ADDCA,B
MOVX@DPTR,A
INCDPTR;高字節相加
MOVXA,@DPTR
MOVB,A
MOVA,ADC0H
ANLA,#0FH
ADDCA,B
MOVX@DPTR,A;#XAI中存放格式為低字節、高字節
MOVSFRPAGE,#ADC0_PAGE;AD控制寄存器頁(yè)
MOVADC0CN,#090H;啟動(dòng)下次AD采樣
INCAD_COUNT
MOVA,AD_COUNT
CLRC
SUBBA,#16
JNCFILL_XAI_XAD;當16次采樣完成后,把XAI中16;個(gè)采樣和(2字節)存放到XAD
RET
評論