中斷服務(wù)子程序與普通子程序有哪些異同之處
中斷服務(wù)子程序與普通子程序有哪些異同之處
一、主體不同
1、中斷服務(wù)子程序:是一種服務(wù),是通過執(zhí)行事先編好的某個特定的程序來完成的。
2、普通子程序:是一個大型程序中的某部份代碼,由一個或多個語句塊組成。
二、功能不同
1、中斷服務(wù)子程序:外界發(fā)生了緊急情況,要求CPU暫停當(dāng)前的工作轉(zhuǎn)去處理這個緊急事件。
處理完畢后,再回到原來被中斷的地址,繼續(xù)原來的工作。
2、普通子程序:負(fù)責(zé)完成某項(xiàng)特定任務(wù),而且相較于其他代碼,具備相對的獨(dú)立性。
三、特點(diǎn)不同
1、中斷服務(wù)子程序:為了在中斷處理結(jié)束后能夠使進(jìn)程準(zhǔn)確地返回到中斷點(diǎn),系統(tǒng)必須保存當(dāng)前處理機(jī)程序狀態(tài)字PSW和程序計(jì)數(shù)器PC等的值。
2、普通子程序:常被使用在匯編語言層級上。
子程序的主體是一個代碼區(qū)塊,當(dāng)被調(diào)用時就會進(jìn)入運(yùn)行。
單片機(jī)保護(hù)、恢復(fù)現(xiàn)場為什么必須由中斷服務(wù)子程序處理而不設(shè)計(jì)成硬件自動完成?
不同程序現(xiàn)場不一樣,有的現(xiàn)場只有累加器A,有的現(xiàn)場就多了,有A、DPL、 DPH、B、R0,R1,PSW等,用總線結(jié)構(gòu)時,可能還有P0口要保護(hù),多了去了。如果用硬件自動完成,那都是誰需要保護(hù)呢,單片機(jī)根本不知道,無法具體保護(hù),即使實(shí)現(xiàn)了也增加芯片的設(shè)計(jì)難度。
所以應(yīng)該由程序來實(shí)現(xiàn)現(xiàn)場保護(hù),和現(xiàn)場回復(fù),這就靈活多了,需要保護(hù)的保護(hù),不需要保護(hù)的不管。
中斷服務(wù)程序與普通子程序有哪些相同和不同之處???
相同點(diǎn):都是從主函數(shù)轉(zhuǎn)到子函數(shù),子函數(shù)執(zhí)行完后又返回主函數(shù)。
不同點(diǎn):
一、執(zhí)行方式不同
1、中斷服務(wù)程序:中斷函數(shù)是發(fā)生中斷后,自動執(zhí)行的,不需要主函數(shù)調(diào)用,是否執(zhí)行,取決于相應(yīng)的中斷事件是否發(fā)生。
2、普通子程序:普通子函數(shù)要主函數(shù)調(diào)用才能執(zhí)行。
二、使用情況不同
1、中斷服務(wù)程序:中斷函數(shù)在中斷發(fā)生時,先進(jìn)入中斷入口地址,再通過中斷入口地址處放置的一條無條件轉(zhuǎn)移指令,使程序執(zhí)行轉(zhuǎn)向中斷服務(wù)程序入口。
2、普通子程序:普通子函數(shù)調(diào)用時,直接進(jìn)入函數(shù)入口地址。
三、定義方式不同
1、中斷服務(wù)程序:中斷服務(wù)程序用interrupt關(guān)鍵字來定義。
2、普通子程序:是一個大型程序中的某部分代碼,由一個或多個語句塊組成。
plc的中斷程序怎么理解
首先理解 \”中斷的原理\”,再去理解中斷的編程方法。
這里做個比喻:
你正在一口一口的吃飯,突然手機(jī)響了,你停止吃飯,開始接手機(jī);接完手機(jī)后 繼續(xù)一口一口的吃飯。
這就是一個中斷的過程。
正常情況下PLC的程序是 按順序掃描執(zhí)行的,按照從上到下,從左到右的順序循環(huán)執(zhí)行。
當(dāng)出現(xiàn)一個中斷信號時,PLC 就停止當(dāng)前的“順序掃描執(zhí)行”,去執(zhí)行“中斷服務(wù)子程序”;當(dāng)“中斷服務(wù)子程序”執(zhí)行完畢后,在從剛剛中斷的位置 開始按順序掃描執(zhí)行。
不同廠家的PLC 中斷編程方式有些差異,但是原理是相同的。
“中斷子程序” 一般都是用來處理一些“緊急事件”
中斷事件類型分 “內(nèi)部中斷事件”和“外部中斷事件”兩種類型。
舉例:
比如生產(chǎn)塑料管的生產(chǎn)線,需要計(jì)米,當(dāng)管子到達(dá)需要的長度后,需要馬上切斷,不能有延時,否則就會產(chǎn)生誤差。這種情況就需要用到“中斷”編程來處理。
希望我的回答 能對你有些幫助,很高興和你一起討論和學(xué)習(xí)。
因?yàn)槠邢?,這里不能說的更詳細(xì)期待你的理解和支持。
原理調(diào)用中斷服務(wù)程序和調(diào)用子程序有何
1、兩過程定義與作用子程序是微機(jī)基本程序結(jié)構(gòu)中的1種,基本程序結(jié)構(gòu)包括順序(簡單)、分支(判斷)、循環(huán)、子程序和查表等5種。子程序是一組可以公用的指令序列,只要給出子程序的入口地址就能從主程序轉(zhuǎn)入子程序。
子程序在功能上具有相對的百科獨(dú)立性,在執(zhí)行主程序的過程中往往被多次調(diào)用,甚至被不同的程序所調(diào)用。
一般微機(jī)首先執(zhí)行主程序,碰到調(diào)用指令就轉(zhuǎn)去執(zhí)行子程序,子程序執(zhí)行完后,返回指令就返回主程序斷點(diǎn)(即調(diào)用指令的下一條指令),繼續(xù)執(zhí)行沒有處理完的主程序,這一過程叫做(主程序)調(diào)用子程序過程。子程序結(jié)構(gòu)可簡化程序,防止重復(fù)書寫錯誤,并可節(jié)省內(nèi)存空間。計(jì)算機(jī)中經(jīng)常把常用的各種通用的程序段編成子程序,提供給用戶使用。用戶在自己編寫的程序中,只要會調(diào)用這些子程序,就可大大簡化用戶編程的困難。
中斷是計(jì)算機(jī)**處理單元CPU與外設(shè)I/O交換數(shù)據(jù)的一種方式,除此方式外,還有無條件、條件(查詢)、存貯器直接存取DMA和I/O通道等四種方式。由于無條件不可靠,條件效率低,DMA和I/O通道兩方式硬件復(fù)雜,而中斷方式CPU效率高,因此一般大多采用中斷方式。中斷概念是當(dāng)計(jì)算機(jī)正在執(zhí)行某一(主)程序時,收到一中斷請求,如果中斷響應(yīng)條件成立,計(jì)算機(jī)就把正在執(zhí)行的程序暫停一下,去響應(yīng)處理這一請求,執(zhí)行中斷服務(wù)程序,處理完服務(wù)程序后,中斷返回指令使計(jì)算機(jī)返回原來還沒有執(zhí)行完的程序斷點(diǎn)處繼續(xù)執(zhí)行,這一過程稱為中斷過程。
有了中斷,計(jì)算機(jī)才能具有并行處理,實(shí)時處理和故障處理等重要功能。 2、兩過程的聯(lián)系與區(qū)別2.1聯(lián)系中斷與調(diào)用子程序兩過程屬于完全不同的概念,但它們也有不少相似之處。兩者都需要保護(hù)斷點(diǎn)(即下一條指令地址)、跳至子程序或中斷服務(wù)程序、保護(hù)現(xiàn)場、子程序或中斷處理、恢復(fù)現(xiàn)場、恢復(fù)斷點(diǎn)(即返回主程序)。
兩者都可實(shí)現(xiàn)嵌套,即正在執(zhí)行的子程序再調(diào)另一子程序或正在處理的中斷程序又被另一新中斷請求所中斷,嵌套可為多級。正是由于這些表面上的相似處,很容易使學(xué)生把兩者混淆起來,特別是把中斷也看為子程序,這就大錯特錯了。2.2區(qū)別中斷過程與調(diào)用子程序過程相似點(diǎn)是表面的,從本質(zhì)上講兩者是完全不一樣的。
兩者的根本區(qū)別主要表現(xiàn)在服務(wù)時間與服務(wù)對象不一樣上。首先,調(diào)用子程序過程發(fā)生的時間是已知和固定的,即在主程序中的調(diào)用指令(CALL)執(zhí)行時發(fā)生主程序調(diào)用子程序,調(diào)用指令所在位置是已知和固定的。而中斷過程發(fā)生的時間一般的隨機(jī)的,CPU在執(zhí)行某一主程序時收到中斷源提出的中斷申請時,就發(fā)生中斷過程,而中斷申請一般由硬件電路產(chǎn)生,申請?zhí)岢鰰r間是隨機(jī)的(軟中斷發(fā)生時間是固定的),也可以說,調(diào)用子程序是程序設(shè)計(jì)者事先安排的,而執(zhí)行中斷服務(wù)程序是由系統(tǒng)工作環(huán)境隨機(jī)決定的;其次,子程序完全為主程序服務(wù)的,兩者屬于主從關(guān)系,主程序需要子程序時就去調(diào)用子程序,并把調(diào)用結(jié)果帶回主程序繼續(xù)執(zhí)行。而中斷服務(wù)程序與主程序兩者一般是無關(guān)的,不存在誰為誰服務(wù)的問題,兩者是平行關(guān)系;第三,主程序調(diào)用子程序過程完全屬于軟件處理過程,不需要專門的硬件電路,而中斷處理系統(tǒng)是一個軟、硬件結(jié)合系統(tǒng),需要專門的硬件電路才能完全中斷處理的過程;第四,子程序嵌套可實(shí)現(xiàn)若干級,嵌套的最多級數(shù)由計(jì)算機(jī)內(nèi)存開辟的堆棧大小限制,而中斷嵌套級數(shù)主要由中斷優(yōu)先級數(shù)來決定,一般優(yōu)先級數(shù)不會很大。