在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關(guān) 閉

            新聞中心

            EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > Windows 中斷程序設(shè)計

            Windows 中斷程序設(shè)計

            作者: 時間:2012-10-19 來源:網(wǎng)絡(luò) 收藏

            掛住/解掛向量的時機很重要。主窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時是掛住向量的最好時機。退出時需解掛向量,否則可能崩潰。主窗口接收到WM-DE-STROY之后進行解掛工作,是最適合的。解掛向量可先用INT35H,0204H功能將老的向量保存,退出時用INT35H,0205H恢復(fù)。

            五、編程實現(xiàn)

            有了DPMI的支持,我們就可以很方便地處理數(shù)據(jù)采集、串行通信等工業(yè)過程中的實時事件。下面以3.1平臺下中斷方式實現(xiàn)的串行通信為例,說明中斷程序的編制和實現(xiàn)。為便于參考,給出了詳細的代碼。開發(fā)平臺BC3.1/BC4.5,其本身支持0.9版的DPMI,無需運行其它支持DPMI的軟件。編程語言C,可與C++混合編譯。

            初始化COM1,9600波特率,每字符8bits,1個停止位,中斷接收,查詢發(fā)送。

            //windows asy communication

            //by Li Xiuming

            //last modified on June 25,1996

            #include〈windows.h〉

            #include〈dos.h〉

            void interrupt far DataReceive();

            void interrupt far (*old-vector)();

            unsigned char datacom-r[1024],datacom-s[1024];

            int inflag=0;

            unsigned int s8259;

            int InitCom1()

            { //串口1初使化

            s8259=inportb(0x21); //讀入8259當前狀態(tài)并保存

            outportb(0x21,s82590xe8); //初始化8259,允許0x0c號中斷

            outportb(0x3fb,0x83);

            outportb(0x3f8,0x0c);

            outportb(0x3f9,0x00);

            outportb(0x3fb,0x03);

            outportb(0x3fc,0x08); //允許中斷信號送到8259A,以便能中斷

            outportb(0x3f9,0x01); //0x01,中斷允許

            return 1;

            }

            void interrupt far DataReceive()

            { //中斷接收子程序

            static int i=0; //靜態(tài)局部變量

            char rechar=0; //每中斷一次,i自動加1

            rechar=inportb(0x3f8); //從數(shù)據(jù)口讀出發(fā)送過來的數(shù)據(jù)

            if(inflag==0)

            {

            if(rechar!=?s? i==0) //幀起始

            {

            i=0;

            goto ll;

            }

            datacom-r[i++]=rechar; //存入datacom-r[](通信緩沖區(qū))

            if(rechar==?e?) //幀結(jié)束

            {

            inflag=1;

            i=0;

            }

            }

            ll:outportb(0x20,0x20); //回送中斷結(jié)束標志

            }

            //調(diào)用DPMI

            //保存舊的0CH號保護模式中斷向量

            //設(shè)置新的保護模式中斷服務(wù)例程

            void InitCom(void)

            {

            asm{

            cli

            mov ax,204h

            mov bl,0ch

            int 31h

            sti

            }

            old-vector=MK-FP(-CX,-DX);//保存

            asm{ cli //設(shè)置新的0x0c中斷服務(wù)例程

            mov ax,205h

            mov bl,0ch

            mov cx,seg datareceive

            mov dx,offset datareceive

            int 31h

            sti

            }

            InitCom1();

            }

            //恢復(fù)8259狀態(tài)

            //恢復(fù)0CH保護模式向量

            void RestoreComm(void)

            {

            outportb(0x21,s8259);

            asm{

            cli

            mov ax,205h

            mov bl,0ch

            mov cx,seg old-vector

            mov dx,offset old-vector

            int 31h

            sti

            }

            }

            在窗口第一次被創(chuàng)建時會傳送它WM-CREATE消息,這時調(diào)用InitCom()即可。在主窗口關(guān)閉時,即主窗口中收到WM-DESTROY消息時,調(diào)用RestoreComm()恢復(fù)原來的狀態(tài)。

            這樣在對串口初始化,設(shè)置中斷服務(wù)例程后,通信事件發(fā)生時,會立即跳入中斷子程序中執(zhí)行,越過系統(tǒng)的消息隊列,達到實時處理通信事件的目的。而數(shù)據(jù)處理模塊可通過全局標志flag訪問全局的數(shù)據(jù)通信緩沖區(qū)獲取實時數(shù)據(jù)。這種實現(xiàn)方式與基于消息機制的通信API實現(xiàn)相比具有實時性強的特點,因為它超過Windows系統(tǒng)的兩極消息機制。

            上述程序已在實際系統(tǒng)中得到應(yīng)用。在Windows 3.1支持下,同時運行三個Windows任務(wù):服務(wù)器SERVER(內(nèi)有實時串行通信,多個網(wǎng)絡(luò)數(shù)據(jù)子服務(wù)),客戶CLIENT,FOXPRO數(shù)據(jù)庫系統(tǒng)。整個系統(tǒng)運行良好。切換到WIN95平臺下(支持0.9版DPMI),系統(tǒng)也運行良好。

            參考文獻

            1 張豫夫、曹建文譯.【澳】Barry Kauler著.Windows匯編語言及系統(tǒng).北京大學(xué)出版社,1995

            2 趙人任等譯.【美】Mike Klein者.Windows程序員使用指南(一).北京:清華出版社,1995

            3 劉林、陳紅編譯.80386硬件與接口技術(shù).北京:北京希望電腦公司,1991


            上一頁 1 2 下一頁

            關(guān)鍵詞: Windows 中斷 程序設(shè)計

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉