基于ISA總線與KH-9300的數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)
1 引言
該數(shù)據(jù)采集系統(tǒng)采用硬中斷方式,通過對(duì)KH-9300板卡上的8254定時(shí)器和8259中斷控制器編程定時(shí)觸發(fā)中斷并對(duì)外部脈沖計(jì)數(shù),設(shè)計(jì)中每隔1 s采集1次數(shù)據(jù),數(shù)據(jù)采集卡第0和1號(hào)通道采用串行方式并使用板卡上的內(nèi)部時(shí)鐘進(jìn)行計(jì)時(shí),第2、3、4、5號(hào)通道輸人外部計(jì)數(shù)脈沖計(jì)數(shù)。所有通道采用內(nèi)部門控信號(hào)。當(dāng)串行的第0~1通道計(jì)數(shù)滿時(shí),就向板卡上的8259中斷控制器的IN1引腳發(fā)出中斷指令。通過8259中斷控制器向計(jì)算機(jī)內(nèi)的8259A的中斷引腳(這里設(shè)計(jì)為第5號(hào)中斷引腳)發(fā)出中斷指令。CPU響應(yīng)中斷請(qǐng)求,執(zhí)行中斷程序,對(duì)板卡上第2、3、4、5號(hào)通道進(jìn)行數(shù)據(jù)采集,并把采集后的數(shù)據(jù)寫入文件。
2 板卡及8254定時(shí)、計(jì)數(shù)常數(shù)的設(shè)置
時(shí)鐘跳線的設(shè)置:0號(hào)通道選內(nèi)部時(shí)鐘,0和1兩通道級(jí)聯(lián),2~5號(hào)通道接外部脈沖,選外部時(shí)鐘。門控跳線設(shè)置為所有通道都選內(nèi)部門控;基地址設(shè)置為280H;中斷號(hào)設(shè)置為INT5(中斷向量號(hào)為13);內(nèi)部時(shí)鐘頻率設(shè)置為2 MHz。
(1)定時(shí)常數(shù)的計(jì)算 定時(shí)系數(shù)=要求定時(shí)的時(shí)間/時(shí)鐘脈沖的周期。若定時(shí)的時(shí)間為1 s,內(nèi)部時(shí)鐘頻率為2 MHz。則時(shí)鐘脈沖的周期為1 s/2 MHz=0.5μs,定時(shí)系數(shù)為1s/0.5 μs=2×106=2 000 000。由于8254定時(shí)計(jì)數(shù)器6個(gè)通道為16位減計(jì)數(shù)器,每個(gè)通道計(jì)數(shù)值最大為216-1=65 5352 000 000。所以必須采用2個(gè)通道計(jì)時(shí),設(shè)計(jì)中將第0通道和第1通道串聯(lián)。由2×106=1 000×2×103,則定時(shí)系數(shù):第0通道為2 000,第1通道為1 000。
(2)計(jì)數(shù)通道的初始化 計(jì)數(shù)通道常數(shù)設(shè)置為最大值:FFFFH。最大計(jì)數(shù)頻率為65 535 Hz/s。
(3)計(jì)數(shù)累計(jì)脈沖量計(jì)算 計(jì)數(shù)累計(jì)脈沖量=FFFFH-計(jì)數(shù)器本次讀數(shù)。
3 用Turbo C編寫中斷服務(wù)程序的方法
C語言中斷服務(wù)程序可由3部分實(shí)現(xiàn)。即編寫中斷服務(wù)程序、安裝中斷服務(wù)程序、激活中斷服務(wù)程序。
評(píng)論