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