你要先理解什么是中斷。知道中斷是怎么回事了,你才好理解的。
創(chuàng)新互聯(lián)于2013年成立,我們提供高端網(wǎng)站建設(shè)、小程序定制開發(fā)、電商視覺設(shè)計(jì)、重慶APP軟件開發(fā)及網(wǎng)絡(luò)營(yíng)銷搜索優(yōu)化服務(wù),在傳統(tǒng)互聯(lián)網(wǎng)與移動(dòng)互聯(lián)網(wǎng)發(fā)展的背景下,我們堅(jiān)守著用標(biāo)準(zhǔn)的設(shè)計(jì)方案與技術(shù)開發(fā)實(shí)力作基礎(chǔ),以企業(yè)及品牌的互聯(lián)網(wǎng)商業(yè)目標(biāo)為核心,為客戶打造具商業(yè)價(jià)值與用戶體驗(yàn)的互聯(lián)網(wǎng)+產(chǎn)品。
這塊是講中斷的。
主函數(shù)里面執(zhí)行的都是順序執(zhí)行的,當(dāng)中斷發(fā)生的時(shí)候就執(zhí)行中斷程序里面的東西的。串口中斷就是當(dāng)發(fā)送或接收完畢時(shí),產(chǎn)生的中斷,發(fā)生中斷過后,就將主函數(shù)暫停執(zhí)行,保存這個(gè)時(shí)候正在運(yùn)行的一些變量,一些內(nèi)存值之類的。然后當(dāng)中斷函數(shù)執(zhí)行完畢過后再回來接著執(zhí)行主函數(shù)里面的東西的。
標(biāo)準(zhǔn)c語言沒有中斷調(diào)用機(jī)制,但是不同編譯器都有相應(yīng)的中斷處理方式,可以使用戶實(shí)現(xiàn)中斷功能。
解決方案:
1、采取輪詢的方式解決,就是每10毫秒檢查一下是否有鍵盤請(qǐng)求,總的來說,這樣基本上可以解決問題,而且簡(jiǎn)單易行,但每10毫秒都要檢查,系統(tǒng)消耗太大。
2、采取中斷的方式:
(1)用高級(jí)語言調(diào)用中斷來處理問題。中斷是cpu響應(yīng)一個(gè)中斷外圍設(shè)備8259A的一個(gè)過程,當(dāng)鍵盤敲擊,cpu保存斷點(diǎn)暫停執(zhí)行并且跳到相應(yīng)的中斷處理程序繼續(xù)執(zhí)行,結(jié)束后根據(jù)斷點(diǎn)再跳回來。通過這種方式可以輕松+愉快地解決這個(gè)問題。但是需要用到高級(jí)語言調(diào)用匯編,根據(jù)編譯器的不同而有所差別。
(2)自己模擬中斷??梢粤硗饨⒁粋€(gè)線程專門響應(yīng)鍵盤的敲擊,如果有敲擊則打斷主線程。這樣做實(shí)現(xiàn)起來很復(fù)雜,而且涉及到不少復(fù)雜的關(guān)鍵技術(shù),比如信號(hào)量之類的東西。
3、強(qiáng)大的vc
vc采取了消息映射的機(jī)制來處理外部設(shè)備的請(qǐng)求,比如時(shí)鐘中斷、鍵盤中斷等等。通過此可以灰常灰常容易的處理外部中斷。
形式如下:
void 中斷名(void) inerrupt 中斷號(hào) using 工作寄存器組
比如外部中斷0
void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省為0
定時(shí)器1
void t1isr() interrupt 3
擴(kuò)展資料:
單片機(jī)內(nèi)部結(jié)構(gòu)
1、CPU
它的名字沒有改,還是稱為CPU(Central Processing Unit)。它是單片機(jī)的核心部件,包括運(yùn)算器和控制器。
運(yùn)算器既是算術(shù)邏輯單元ALU(Arithmetic logic Unit),其功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。
控制器一般由指令寄存器、指令譯碼器、時(shí)序電路和控制電路組成。其作用是完成取指令、將指令譯碼形成各種微操作并執(zhí)行指令,同時(shí)控制計(jì)算機(jī)的各個(gè)部件有條不紊地工作。
2、單片機(jī)內(nèi)部結(jié)構(gòu)之一ROM
“硬盤”,改了名字,稱為程序存儲(chǔ)器,也叫只讀存儲(chǔ)器。用ROM(Read only memery)表示。其作用和計(jì)算機(jī)的硬盤差不多,用來存放用戶編寫的程序。特點(diǎn)是:掉電后不會(huì)丟失數(shù)據(jù)(程序)。
你的中斷服務(wù)函數(shù)作用是:
串口設(shè)備每接收一個(gè)字節(jié)數(shù)據(jù)(8位)便產(chǎn)生一次中斷,并檢測(cè)是否收到的是字符【,不是則放棄數(shù)據(jù),是則保存到數(shù)組 jsbuf 里去,然后把隨后接收到的字節(jié)數(shù)據(jù)也一一保存到這個(gè)數(shù)組去,直到接收到字符 】為止,同樣保存,并設(shè)置標(biāo)記 rflag;
一句話,就是要從接收的數(shù)據(jù)中,提取 【xxxx】數(shù)據(jù);