




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)院畢業(yè)設(shè)計(jì)(論文)題目:基于單片機(jī)的plc編譯程序設(shè)計(jì)研究學(xué) 生 姓 名: 學(xué)號(hào):學(xué) 部 (系): 機(jī)械與電氣工程學(xué)部 專 業(yè) 年 級(jí): 電氣工程及其自動(dòng)化 指 導(dǎo) 教 師: 職稱或?qū)W位: 年5月30日目 錄摘 要6關(guān)鍵詞6abstract7key words8前 言81 基于單片機(jī)的plc的單片機(jī)程序模塊研究及其目標(biāo)程序框架的構(gòu)建91.1 基于單片機(jī)的plc常用的單片機(jī)程序模塊的構(gòu)建91.2 基于單片機(jī)的plc的tim ti語句的單片機(jī)程序模塊構(gòu)建10121 圍繞tim ti片內(nèi)硬件資源的配置1012. 2 tim ti所需的to中斷服務(wù)程序11123 tim ti模塊的流程分析和建立12
2、13 cnt ci 語句的單片機(jī)程序模塊的構(gòu)建1314 pls8 yi 脈沖微分語句的單片機(jī)程序模塊的構(gòu)建141. 5 移位類語句的單片機(jī)程序模塊的構(gòu)建151. 6 基于單片機(jī)的plc目標(biāo)程序框架的構(gòu)建162 基于單片機(jī)的plc編譯程序總體設(shè)計(jì)方法1921 采用數(shù)組技術(shù)構(gòu)建基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合19211 基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合的定義19212 基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合的數(shù)組表達(dá)2022 基于單片機(jī)的plc目標(biāo)代碼集合的構(gòu)建2223 建立基于單片機(jī)的plo源程序語句和目標(biāo)代碼之間的關(guān)系2224 基于單片機(jī)的plo編譯程序結(jié)構(gòu)2325 盲碼的預(yù)先填入及修正
3、技術(shù)233 基于單片機(jī)的plc編譯程序查錯(cuò)模塊設(shè)計(jì)2431 編譯過程中列表文件名和列表文件的建立24311 用strcat建立列表文件名25312 列表文件(1st)的建立253. 2 查錯(cuò)模塊程序流程2633 整句識(shí)別2634 語句語法檢查27341 m數(shù)組逐行搜索28343 核對(duì)語句長(zhǎng)度是否正確29344 錯(cuò)誤標(biāo)記寫入錯(cuò)誤信息文件3035 查錯(cuò)模塊程序運(yùn)行結(jié)果304 固定代碼的裝配3041 基于單片機(jī)的plc編譯過程中目標(biāo)文件的建立31411 目標(biāo)文件名的建立31412 目標(biāo)文件(bin)的建立3242 建立固定代碼數(shù)組3243 向目標(biāo)文件中裝配固定代碼345 活動(dòng)代碼的翻譯和裝配3451
4、 活動(dòng)代碼翻譯和裝配的整體思路3452 源程序語句的類型識(shí)別35521 ckhh存放著當(dāng)前被翻譯的源程序語句36522 當(dāng)前源程序語句的類型識(shí)別3653 簡(jiǎn)單活動(dòng)代碼的裝配37531 引用名(位地址)字符轉(zhuǎn)化函數(shù)cvt(x,y)的定義37532 實(shí)現(xiàn)映射f i=口(mi)的第一種程序結(jié)構(gòu)38533 ldi語句的目標(biāo)代碼裝配38534 and語句的目標(biāo)代碼裝配39535 ani語句的目標(biāo)代碼裝配39536 or語句的目標(biāo)代碼裝配40537 ori語句的目標(biāo)代碼裝配40538 store語句的目標(biāo)代碼裝配41539 out語句的目標(biāo)代碼裝配4154 復(fù)雜活動(dòng)代碼的裝配及其盲碼的修正42541 ti
5、m語句的目標(biāo)代碼的裝配及其盲碼的修正425411 tim模塊中的f數(shù)組賦值435412 tim模塊中第二種盲碼的修正445413 針對(duì)tim的第一種盲碼的修正445414 目標(biāo)文件bin裝配時(shí)兩種地址的切換方法4554. 15 tim模塊的目標(biāo)代碼裝配46542 cnt語句的目標(biāo)代碼的裝配及其盲碼的修正465421 cnt模塊中的f數(shù)組的賦值485422 cnt模塊的目標(biāo)代碼裝配48543 rstc語句的目標(biāo)代碼的裝配及其盲碼的修正485431 rstc語句翻譯模塊中的盲碼修正495432 rstc模塊中f數(shù)組的賦值和目標(biāo)代碼的裝配49544 pls語句的目標(biāo)代碼的裝配及其盲碼的修正50544
6、1 pls語句翻譯模塊中的盲碼修正515442 pls模塊中f數(shù)組的賦值和目標(biāo)代碼的裝配51545 din語句的目標(biāo)代碼的裝配及其盲碼的修正515451 din語句翻譯模塊中的盲碼修正525452 din模塊的目標(biāo)代碼裝配52546 sft語句的目標(biāo)代碼的裝配及其盲碼的修正535461 sft語句翻譯模塊中的盲碼修正535462 sft模塊中f數(shù)組的賦值和目標(biāo)代碼的裝配54547 rsts語句的目標(biāo)代碼的裝配及其盲碼的修正545471 rsts語句翻譯模塊中的盲碼修正555472 rsts模塊中f數(shù)組的賦值和目標(biāo)代碼的裝配5555 end語句的處理566 基于單片機(jī)的pl c編譯程序的實(shí)驗(yàn)研究
7、5661 實(shí)驗(yàn)研究系統(tǒng)的建立5662 基于單片機(jī)的plo源程序的編輯和編譯5763 結(jié)論58參考文獻(xiàn)59致謝61基于單片機(jī)的plc編譯程序設(shè)計(jì)研究摘 要自動(dòng)化裝置和機(jī)電一體化產(chǎn)品的設(shè)計(jì)和開發(fā)中有時(shí)需要采用一種成本極低的邏輯控制器。為了滿足這種需要,作者開展了用單片機(jī)直接實(shí)現(xiàn)梯形圖邏輯控制的硬件和軟件研究。其中最為關(guān)鍵的一項(xiàng)技術(shù)是如何設(shè)計(jì)出基于單片機(jī)的plc編譯程序,將符合梯形圖邏輯的plc指令源程序翻譯成單片機(jī)目標(biāo)程序。本文論述了基于單片機(jī)的plc編譯程序設(shè)計(jì)的理論和方法,研究了基于單片機(jī)的plc的單片機(jī)程序模塊和目標(biāo)程序框架,對(duì)編譯程序結(jié)構(gòu)進(jìn)行了分析,闡述了查錯(cuò)模塊設(shè)計(jì)方法以及目標(biāo)代碼裝配方
8、法,對(duì)基于單片機(jī)的plc的編譯程序的調(diào)試實(shí)驗(yàn)系統(tǒng)組成和實(shí)驗(yàn)結(jié)果進(jìn)行了分析。首先,進(jìn)行了基于單片機(jī)的plc的單片機(jī)程序模塊研究,構(gòu)建了獨(dú)具特點(diǎn)的目標(biāo)程序框架結(jié)構(gòu)。然后,定義了基于單片機(jī)的plc的源程序語句標(biāo)準(zhǔn)集合,提出了源程序語句標(biāo)準(zhǔn)集合的數(shù)組表示方法;定義了目標(biāo)代碼集合,提出了用口映射來建立源程序語句標(biāo)準(zhǔn)集合和目標(biāo)代碼集合之間的關(guān)系,為編譯程序結(jié)構(gòu)的實(shí)現(xiàn)提供了條件和方法;提出了盲碼預(yù)填和盲碼修正的思想提出了依據(jù)m數(shù)組對(duì)源程序查錯(cuò)的思路,通過列表文件名和列表文件的建立、整句識(shí)別、語句語法檢查中的m數(shù)組逐行搜索、核對(duì)關(guān)鍵詞是否相等、核對(duì)語句長(zhǎng)度是否正確等一系列環(huán)節(jié),實(shí)現(xiàn)對(duì)源程序的查錯(cuò)處理;論述了翻
9、譯過程中向目標(biāo)文件里裝配固定代碼的過程;論述了翻譯和裝配活動(dòng)代碼的整體思路和流程;運(yùn)用m數(shù)組進(jìn)行源程序語句的類型識(shí)別,初步實(shí)現(xiàn)了盯映射的預(yù)定位;有效定義了引用名(位地址)的字符轉(zhuǎn)化函數(shù);分別給出了實(shí)現(xiàn)盯映射的第一種程序結(jié)構(gòu)和第二種程序結(jié)構(gòu),有效的完成了簡(jiǎn)單活動(dòng)代碼和復(fù)雜活動(dòng)代碼的翻譯和目標(biāo)文件的裝配任務(wù);提出并論述了第一類盲碼修正和第二類盲碼修正的程序?qū)崿F(xiàn)方法。建立了基于單片機(jī)的plc的編譯程序設(shè)計(jì)研究的實(shí)驗(yàn)系統(tǒng),對(duì)該編譯程序的各項(xiàng)功能進(jìn)行了驗(yàn)證和比對(duì)。經(jīng)過多個(gè)程序的試驗(yàn)表明,該編譯程序能夠正確地將基于單片機(jī)的plc源程序翻譯成單片機(jī)可以直接執(zhí)行的、符合梯形圖邏輯控制要求的目標(biāo)程序。實(shí)驗(yàn)結(jié)果表
10、明,本文所設(shè)計(jì)的基于單片機(jī)的plc編譯程序完全符合設(shè)計(jì)要求,可以用于項(xiàng)目開發(fā)。由于基于單片機(jī)的plc成本極低,實(shí)際應(yīng)用時(shí)可以帶來較好的經(jīng)濟(jì)效益,因而具有較強(qiáng)的實(shí)用性。關(guān)鍵詞: 單片機(jī),可編程邏輯控制器,編譯程序,盲碼,源程序,目標(biāo)程序abstract sometimes,one kind of extremely inexpensive logic controller is needed in design and the development of the automation device and the integration oelectromechanical productin
11、 order to meet this kind of needsthe author carried oll the hardware and the sofhvare research of having directly realized the ladder diagram logic control with the monolithic microcomputerin whichmost essential technology is how to design the compiler for plc based on monolithic microcomputer,and i
12、s how to translate plc instruction source program which conf01tn ladder diagram logic into monolithic microcomputer targetprogramthis paper elaborated design theory and the method of the compiler for plc based on the monolithic microcomputer,has studied the monolithic microcomputer program module an
13、d the target program frame for plc based on the monolithic microcomputer,has c ried on the analysis to thecompiler.structureelaborated design method for the checking mistaken module as well as the assembly method for goal code,has carried on the analysis to expedmental result and debugging experimen
14、t system composition for the compiler for plc based on the monolithicmicrocomputerfirst,the research on the monolithic microcomputer program module for plc based on the monolithic microcomputer has been conductedthe alone characteristic frame construction for targetprogram has been constructedthenth
15、e paper has defined the standard set of the source program sentence for plc based on the monolithic microcomputer,proposed the array expression method for the standard setof the source program sentencethe goal code set has been definedestablishing the relations between the source program sentence st
16、andard set and the goal code set with sigma the mapping has been proposed,so that the condition and the method for realization of the compile structure has been provideda thought ofthe filling blind code in advance and the revising blind code has been proposed。a mentality of checking mistaken to the
17、 source program according to the marray has been proposedthe processing of the checking mistaken to the source program has been realized through a series of procedure such as the establishment of list filename and list documenl the recognition to entire sentencethe search by line using m array in se
18、ntence grammar inspection,the checkup to key word whether equal,the checkup to sentence length whether correct and so onthe process of assembling the fixed code into the goal document during the translation has been elaboratedoverall mentality and the procedure of the translation and the assembly co
19、de have been elaboratedthe pre-localization of the sigma mapping bycarrying on the type recognition to source program sentence depend on the array m has initially beenrealizedthe character transformation function for quotation name(bit address)has been definedeffectively,e first kind of procedure st
20、ructure and the second kind of procedure structure for realizationsigma mapping has separately been given,so that the translation of the simple active code and the complex active code has effective been completed,and that the assembly of the goal document has been completedthe procedure realization
21、method for the first kind of blind code revision and the second kind of blind code revision has been proposed and elaboratedthe experimental system which using the research of compiler design for plc based on monolithic microcomputer has been establishedwe had carried on the confirmation and compare
22、 to the each function of the compilerafter the severai procedure trials。indicated that the compiler can translate correctly thesource program of plc based on monolithic microcomputer into the target program which is enable to be executed by monolithic microcomputer and tallies the request of ladder
23、diagram logic contr01the experimental result proved that the compiler designed for plc based on the monolithic microcomputerconforms to the design requirement completely,may use in the project developmentbecause the plc based on the monolithic microcomputer is extremely inexpensive in cost,it may br
24、ing the good economicefficiency when practical application,thus has the strong usabilitykey words: monolithic microcomputer,programmable logic controller,compiler,blind code,source program,target program前 言前人在單片機(jī)應(yīng)用研究和plc應(yīng)用研究方面已經(jīng)取得了豐碩的成果。當(dāng)今計(jì)算機(jī)技術(shù)發(fā)展很快,編譯程序設(shè)計(jì)技術(shù)也在不斷發(fā)展。世界上現(xiàn)成的plc產(chǎn)品很多,每一個(gè)plc產(chǎn)品都有一個(gè)plc編譯程序。我們
25、要問,本課題“基于單片機(jī)的plc編譯程序和其他的plc編譯程序雷同嗎?答案是不同。為了大大降低成本,實(shí)現(xiàn)如前所述的,在機(jī)電一體化產(chǎn)品和自動(dòng)化裝置的設(shè)計(jì)中直接用單片機(jī)芯片作為符合梯形圖邏輯的邏輯控制器,就必須設(shè)計(jì)出可以將plc指令源程序翻譯成單片機(jī)目標(biāo)程序的編譯程序。在從事這項(xiàng)研究時(shí)我們發(fā)現(xiàn),本課題“基于單片機(jī)的plc編譯程序設(shè)計(jì)在應(yīng)用研究方法和具體內(nèi)容上都和前人有許多不同之處。(1)首先,當(dāng)從市場(chǎng)上選來新代的單片機(jī)芯片作為執(zhí)行符合梯形圖邏輯控制的邏輯控制器,那么從總體上來看,基于該單片機(jī)芯片的plc編譯程序的設(shè)計(jì)就和其他plc的編譯程序設(shè)計(jì)不同,沒有一個(gè)現(xiàn)成的編譯程序可以套用,必須做創(chuàng)造性的工
26、作,獨(dú)立完成基于該單片機(jī)的編譯程序設(shè)計(jì)。編寫基于該單片機(jī)的plc編譯程序,是本課題的主要工作任務(wù)之一。(2)其次,目標(biāo)程序框架結(jié)構(gòu)也不同。因?yàn)閱纹瑱C(jī)芯片不同,內(nèi)部的硬件資源也就不同,目標(biāo)指令代碼和目標(biāo)程序框架結(jié)構(gòu)也就不同。因此在編譯程序編寫前,必須根據(jù)單片機(jī)芯片編程的特點(diǎn)設(shè)定目標(biāo)程序框架結(jié)構(gòu)。有許多影響目標(biāo)程序框架結(jié)構(gòu)的因素,諸如cpu初始化、內(nèi)部硬件定時(shí)器設(shè)定、中斷結(jié)構(gòu)、接口的初始化等。設(shè)定目標(biāo)程序框架結(jié)構(gòu),是本課題的另一項(xiàng)主要工作任務(wù)。(3) 本課題的一項(xiàng)有特色的工作是在應(yīng)用研究基礎(chǔ)上,構(gòu)建基于單片機(jī)的plc的源程序代碼標(biāo)準(zhǔn)集合和目標(biāo)程序代碼集合,并且用集合和映射的方法為基于單片機(jī)的plc
27、源程序代碼、目標(biāo)代碼以及翻譯方法建模。此外在設(shè)計(jì)中采用盲碼預(yù)填及修正技術(shù)。總之,基于單片機(jī)的plc編譯程序設(shè)計(jì)研究是一項(xiàng)具有創(chuàng)造性的工作,需要充分吸收前人經(jīng)驗(yàn),開創(chuàng)創(chuàng)新,建立新的模型,新的結(jié)構(gòu),新的方法1 基于單片機(jī)的plc的單片機(jī)程序模塊研究及其目標(biāo)程序框架的構(gòu)建 基于單片機(jī)的plc編譯程序的功能是將基于單片機(jī)的plc源程序翻譯成單片機(jī)目標(biāo)程序。為了設(shè)計(jì)出基于單片機(jī)的plc編譯程序,首先要構(gòu)建出每一條源程序指令所對(duì)應(yīng)的單片機(jī)程序模塊。基于單片機(jī)的plc的源程序指令采用可編程序邏輯控制器最基本指令的助記符,包括and,ani,or,ori,ld,ldi,out,store,tim,cnt,rs
28、t,pls,din,sft,end等基本邏輯指令。但是,這些基本邏輯指令所對(duì)應(yīng)的單片機(jī)程序模塊的程序長(zhǎng)短不一,有的只有l(wèi)2條單片機(jī)指令組成,有的則需十幾條或幾十條單片機(jī)指令組成。1.1 基于單片機(jī)的plc常用的單片機(jī)程序模塊的構(gòu)建大部分plc指令的單片機(jī)程序模塊只需l2條單片機(jī)指令組成。and、ani、or、ori、ld、ldi、out、store指令的單片機(jī)程序(指令)如表21所示。由于選擇了atmel公司的at89c52單片機(jī)芯片作為處理器,所以單片機(jī)程序使用mcs51單片機(jī)指令系統(tǒng)(at89c52單片機(jī)采用了mcs51單片機(jī)指令系統(tǒng))。表11 基于單片機(jī)的plc中常用plc邏輯指令的單片
29、機(jī)程序模塊序號(hào)plc邏輯指令單片機(jī)程序模塊(指令) 目標(biāo)程序代碼序號(hào)plc邏輯指令單片機(jī)模塊(指令)目標(biāo)程序代碼1ld bitmov c, bita2, bit2ldi bitmov c, bitcpl ca2, bitb33and bitanl c,bit82, bit4ani bitanl c, bitb0, bit5or bitorl c, bit72, bit6ori bit orl c, bita0, bit7store bit mov c, bit92, bit8out bitcpl cmov bit, cb392, bit 表11 基于單片機(jī)的plc中常用plc邏輯指令的單片機(jī)程
30、序模塊在表11的邏輯指令中,運(yùn)算都圍繞位累加器c進(jìn)行。表中的bit表示位地址,它們都是單片機(jī)中片內(nèi)ram中可直接位尋址的位(位地址)。(如延時(shí)計(jì)時(shí)器類、脈沖微分類、計(jì)數(shù)器類、移位類等)的單片機(jī)程序模塊需十幾條或幾十條單片機(jī)指令組成。下面是對(duì)此類plc邏輯指令的單片機(jī)程序模塊建立過程的分析。1.2 基于單片機(jī)的plc的tim ti語句的單片機(jī)程序模塊構(gòu)建121 圍繞tim ti片內(nèi)硬件資源的配置梯形圖中的延時(shí)計(jì)時(shí)器通常可以有多個(gè),它們需要有一個(gè)統(tǒng)一的時(shí)鐘。在基于單片機(jī)的plc中用at89c52芯片內(nèi)的t0來作統(tǒng)一的時(shí)鐘。to設(shè)定成定時(shí)01s,每隔o1st0中斷一次。在to中斷服務(wù)程序中依次將多個(gè)
31、延時(shí)計(jì)時(shí)器的軟加l計(jì)數(shù)器加l。實(shí)現(xiàn)tim指令所需要的片內(nèi)資源有:延時(shí)計(jì)時(shí)器的邏輯位ti,位地址30h3fh;延時(shí)計(jì)時(shí)器的狀態(tài)標(biāo)志位si,位地址40h4fh;延時(shí)計(jì)時(shí)器的軟加1計(jì)數(shù)器zi,zi由兩字節(jié)寄存器組成,由to中斷服務(wù)程序?qū)ζ鋵?shí)行加1計(jì)數(shù),可記錄4位bcd數(shù),字節(jié)地址50h,51h,52h,53h,6eh,6fh。延時(shí)計(jì)時(shí)器延時(shí)時(shí)間常數(shù)寄存器z;z;也由兩字節(jié)寄存器組成,可記錄4位bcd數(shù),字節(jié)地址為30h,31h,4eh,4fh。12. 2 tim ti所需的to中斷服務(wù)程序單片機(jī)初始化時(shí),將to設(shè)定成定時(shí)方式l,并開放to中斷。to的初值計(jì)算公式為:圖11 to中斷服務(wù)程序流程圖to
32、的定時(shí)方式和初值在單片機(jī)初始化時(shí)設(shè)定,to中斷服務(wù)程序依次掃描16個(gè)延時(shí)計(jì)時(shí)器,先判斷si是否為“1,即該計(jì)時(shí)器是否已被開啟,只對(duì)開啟的計(jì)時(shí)器的軟加1計(jì)數(shù)器zi實(shí)行加1操作。其流程見圖21。123 tim ti模塊的流程分析和建立與梯形圖中延時(shí)計(jì)時(shí)器所對(duì)應(yīng)的tim ti邏輯指令的單片機(jī)程序模塊流程見圖12。這是一個(gè)對(duì)第i個(gè)延時(shí)計(jì)時(shí)器進(jìn)行邏輯運(yùn)算處理的模塊,運(yùn)算的依據(jù)是已知的當(dāng)前邏輯運(yùn)算值(在累加器c中)。開動(dòng)延時(shí)計(jì)時(shí)器(實(shí)行sil的操作)的條件是:當(dāng)c=i,同時(shí)si=0(第i個(gè)延時(shí)計(jì)時(shí)器還未處于開動(dòng)狀態(tài)時(shí)),同時(shí)ti1(延時(shí)計(jì)時(shí)器邏輯位還未置“1)。 圖12 tim ti邏輯指令的單片機(jī)程序模
33、塊流程圖13 cnt ci 語句的單片機(jī)程序模塊的構(gòu)建計(jì)數(shù)器和計(jì)時(shí)器使用相同的片內(nèi)資源。在用plc指令編程時(shí),同一個(gè)引用名不能同時(shí)作計(jì)數(shù)器和計(jì)時(shí)器。cnt指令的單片機(jī)程序模塊用ci表示計(jì)數(shù)器的邏輯位,位地址30h3fh;用ni表示計(jì)數(shù)器的計(jì)數(shù)脈沖前沿識(shí)別位,位地址50h一5fh;用di(雙字節(jié)寄存器)表示軟加1計(jì)數(shù)器,di由di,0和di,1組成;用di表示計(jì)數(shù)器的預(yù)置值寄存器(雙字節(jié)寄存器),di由di,0和di,i組成;另外,由rstc指令實(shí)現(xiàn)計(jì)數(shù)器的清零。cnt ci計(jì)數(shù)指令的單片機(jī)程序模塊如下:14 pls8 yi 脈沖微分語句的單片機(jī)程序模塊的構(gòu)建本系統(tǒng)共設(shè)有8個(gè)脈沖微分寄存器。脈沖
34、微分類運(yùn)算的單片機(jī)程序模塊所占的片內(nèi)資源較少。它們分別是:脈沖微分寄存器的邏輯位yi,位地址08h0fh;用于寄存前次輸入的寄存器pi,位地址18h1fh。pls脈沖微分的單片機(jī)程序模塊流程見圖23。程序中通過對(duì)本次輸入(累加器c)和前次輸入(pi)進(jìn)行判斷,當(dāng)c=i同時(shí)pi=0時(shí)才產(chǎn)生脈沖微分信號(hào)(yi=1)。由于掃描梯形圖時(shí),主程序在總體上是循環(huán)結(jié)構(gòu),所以微分脈沖寬度等于梯形圖掃描周期。 1. 5 移位類語句的單片機(jī)程序模塊的構(gòu)建共提供了4個(gè)8位移位寄存器。移位類運(yùn)算的單片機(jī)程序模塊所占的片內(nèi)資源有:移位寄存器,用mi表示,字節(jié)地址分別為2ch,2dh,2eh,2fh;移位輸入暫存位,用g
35、i表示;移位脈沖前沿識(shí)別位hi,位地址28h,29h,2ah,2bh。移位類運(yùn)算程序由三個(gè)程序模塊組成。一個(gè)是對(duì)應(yīng)于din mi的單片機(jī)程序模塊。其功能是將輸入端的邏輯值暫存在gi中,供sft指令使用;第二個(gè)是對(duì)應(yīng)于sft mi的移位操作程序模塊,其功能是依據(jù)已知的當(dāng)前邏輯運(yùn)算值(在累加器c中),以及hi的值,判斷移位脈沖是否到;當(dāng)移位脈沖到時(shí),將輸入暫存位gi中的值移入移位寄存器mi。第三個(gè)是對(duì)應(yīng)于rsts指令的移位寄存器復(fù)位程序模塊。din mi指令的單片機(jī)程序模塊如下:mov gi,c ;僅僅一條單片機(jī)指令。sft mi移位操作指令的單片機(jī)程序模塊如下:1.6 1. 6 基于單片機(jī)的pl
36、c目標(biāo)程序框架的構(gòu)建基于單片機(jī)的plc編譯程序的功能是將基于單片機(jī)的plc的源程序語句翻譯成單片機(jī)的目標(biāo)程序。在基于單片機(jī)的plc編譯問題中,目標(biāo)程序框架和單片機(jī)的芯片編程相關(guān),諸如cpu初始化、內(nèi)部硬件定時(shí)器設(shè)定、接口的初始化等。根據(jù)基于單片機(jī)的plc的要求,建立目標(biāo)程序框架結(jié)構(gòu),如表16所示。其中,固定代碼的編譯結(jié)果基本是固定的。活動(dòng)代碼是和源程序語句對(duì)應(yīng)的目標(biāo)程序代碼。固定代碼和活動(dòng)代碼均采用單片機(jī)的機(jī)器指令代碼。當(dāng)基于單片機(jī)的plc編譯程序工作時(shí),對(duì)表16中固定代碼的裝配過程較簡(jiǎn)單。而活動(dòng)代碼的裝配則涉及到對(duì)源程序語句的識(shí)別、查錯(cuò)、翻譯生成目標(biāo)代碼等過程,是編譯程序主要需要解決的問題。
37、活動(dòng)代碼具體裝配的內(nèi)容由11 1.5中的內(nèi)容根據(jù)源程序的順序來決定。表16 基于單片機(jī)的plc目標(biāo)程序框架結(jié)構(gòu)在表16所示的基于單片機(jī)的plc目標(biāo)程序框架結(jié)構(gòu)中,專用地址矢量、延時(shí)20ms子程序、cpu和接口初始化子程序、定時(shí)器初值設(shè)定子程序、to中斷服務(wù)子程序、主程序開始初始化設(shè)定、輸入刷新,這些均屬于固定目標(biāo)代碼。它們又被分為兩種:一種為純固定目標(biāo)代碼,例如專用地址矢量、延時(shí)20ms子程序、cpu和接口初始化子程序、to中斷服務(wù)子程序、主程序開始初始化設(shè)定、輸入刷新;另一種為含盲碼、待修正的固定目標(biāo)代碼,例如定時(shí)器初值設(shè)定子程序。0066h00c5h單元共96個(gè)字節(jié)用于定時(shí)器初值設(shè)定子程序
38、預(yù)留空間。先用盲碼值00h填充。等編譯程序中執(zhí)行“掃描源程序文件,逐條翻譯時(shí),得到源程序提供的定時(shí)器初值,再在用正式代碼(以mov指令目標(biāo)代碼的形式,并含定時(shí)器初值)代替相應(yīng)位置上的盲碼。關(guān)于盲碼,35中還要敘述。表16中入口符號(hào)地址thtl處為to中斷服務(wù)子程序。在222中已經(jīng)敘述了to中斷服務(wù)子程序的流程。它們的具體程序如下:2 基于單片機(jī)的plc編譯程序總體設(shè)計(jì)方法基于單片機(jī)的plc編譯程序總體設(shè)計(jì)方法碰到的第一個(gè)問題是源程序指令模板和目標(biāo)代碼模板在編譯程序中如何表達(dá)?接著第二個(gè)問題是如何根據(jù)已知的源程序指令正確的找到目標(biāo)代碼程序?如何建立單片plc源程序語句和目標(biāo)代碼之間的關(guān)系?為了在
39、編譯時(shí)有一個(gè)對(duì)源程序語句的識(shí)別、查錯(cuò)的標(biāo)準(zhǔn),需要就基于單片機(jī)的plc的and、ani、or、ori、ld、ldi、out、store、tim、cnt、rst、pls、din、sft、end等基本邏輯指令,建立基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合。21 采用數(shù)組技術(shù)構(gòu)建基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合211 基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合的定義定義1:m是集合,在基于單片機(jī)的plc編譯程序中用數(shù)組表示。m ij是其元素,m i j m,m i j為1字節(jié)ascii字符,且有子集mi mmi:mmi2,mik (1)mi為m數(shù)組行元素集合,其前k1個(gè)字符組成的字符串記為:string m
40、i=mi1mi2mik-1假如string mi的值等于基于單片機(jī)的plc某種源程序語句(簡(jiǎn)稱為“源語句)助記符串中的標(biāo)識(shí)符串,并且mi中的元素mi k的值等于這種源語句長(zhǎng)度的ascii值,則稱子集mi為這種源語句的標(biāo)準(zhǔn)子集。例如:基于單片機(jī)的plc的ld語句為:ld 20,其長(zhǎng)度值=5,標(biāo)識(shí)符串為stringmi_h,d, ),故ld源語句標(biāo)準(zhǔn)子集為mi=l,d, ,5。又如:pls語句為:pls 09,其長(zhǎng)度值=6,標(biāo)識(shí)符串為string mi=(p,l,s, ,故pls源語句標(biāo)準(zhǔn)子集為mi=p,l,s, ,6)定義2:在mi cm的條件下,mi是一種源語句標(biāo)準(zhǔn)子集。又:m=mt,m2,m
41、。),式中入為基于單片機(jī)的plc源語句標(biāo)準(zhǔn)的條數(shù),則稱集合m為基于單片機(jī)的plc源語句標(biāo)準(zhǔn)集合。基于單片機(jī)的plc編譯程序中用m數(shù)組來構(gòu)建源語句標(biāo)準(zhǔn)集合,便使問題得到簡(jiǎn)化。m數(shù)組是進(jìn)行源程序查錯(cuò)時(shí)的對(duì)照標(biāo)準(zhǔn),也是進(jìn)行翻譯時(shí)的判別標(biāo)準(zhǔn)。m數(shù)組提供了源語句樣板。性質(zhì)1:m數(shù)組為二維數(shù)組,由于基于單片機(jī)的plc源語句的關(guān)鍵詞(標(biāo)識(shí)符)長(zhǎng)短不一,導(dǎo)致m數(shù)組的各行長(zhǎng)短不一。性質(zhì)2:根據(jù)定義2,有:m數(shù)組的每一行對(duì)應(yīng)于不同的基于單片機(jī)的plc的源語句定義。性質(zhì)3:m數(shù)組的行數(shù)等于基于單片機(jī)的plc語句的條數(shù)。基于單片機(jī)的plc的指令系統(tǒng)較簡(jiǎn)單,語句條數(shù)不多,所以m數(shù)組行數(shù)不大,共16行。性質(zhì)4:集合m中的
42、各個(gè)子集mi沒有一個(gè)重復(fù)。這是因?yàn)槎x基于單片機(jī)的plc源語句時(shí)是不可能重復(fù)定義的。212 基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合的數(shù)組表達(dá)把基于單片機(jī)的plc源程序指令,依據(jù)上述string mi和mi k的格式進(jìn)行表述,我們就可以得到,當(dāng)i=l,2,3,16時(shí),子集mi分別為:ml=l,d, ,5m2=l,d,i, ,6m3=a,n,d, ,6m4=a,n,i, ,6m5=0,r, ,5m6=0,r,i, ,6m7=s,t,0,r,e, ,8m8=o,u,t, ,6m9=t,i,m, ,6m10=c,n,t, ,6m11=r,s,t,c, ,7m12=p,l,s, ,6m13=d,i,n,
43、,6m14=s,f,t, ,6m15=r,s,t,s, ,7m16=e,n,d, ,6上述集合的全體就是基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合。其中每個(gè)子集中的最后一個(gè)數(shù)字表示該源程序語句的ascii字符長(zhǎng)度標(biāo)準(zhǔn)。例如,源程序語句ld 20共5個(gè)ascii字符(空格算一個(gè)ascii字符),所以,子集m1=l,d, ,5)中的最后一個(gè)數(shù)字為5。建立基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合的目的是為了確定一個(gè)進(jìn)行源程序查錯(cuò)時(shí)的對(duì)照標(biāo)準(zhǔn),以及進(jìn)行翻譯時(shí)的判別標(biāo)準(zhǔn)。為此,在基于單片機(jī)的plc編譯程序中用c語言實(shí)現(xiàn)m數(shù)組所表達(dá)的基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合。m數(shù)組的各元素賦值如下:m11=l;ml2=
44、d:m13=;ml4=x05:m21=l:m22=d:m23=i:m24=:m25=x06:m31=a:m32=n:m33=d:m34=:m35=x06:m41_a:m42=n:m43=i:m44=:m45=x06:m51=0:m52=r,:m53=:m54=x05:m6兒1=0:m62=r:m63=i:m64=:m65=x06:m71=s:m72=t:m73=0:m74=r:m75=e:m76=:m77=x08:m81=0:m82=u:m83=t:m84=:m85=x06:m91=t:m92=i:m93=m:m94=:m95=xod:m101=c;m102=n:m103=t;m104=:m1
45、05=xod:m111=r;m112=s:m113=t;m114=c:m115=:m116=x07:m121=p;m122=l:m123=s;m124=:rail25=x06:m31=d:m132=i:m133=n;m134=:m135=x06:m141=s:m142=f;m143=t;m144=:m145=x06:m151=r;m152=s:m153=t;m154=s:m155=:m156=x07:m161=e;m162=n;rail63=d;m164=:m165=x09:22 基于單片機(jī)的plc目標(biāo)代碼集合的構(gòu)建定義3:f是集合,fij是其元素,fijef,fij是一字節(jié)16進(jìn)制數(shù)。如果有
46、子集fi f, 即:f i=fi1,fi2,fi。) (2)假如f i所代表的子集元素代碼等于第i條基于單片機(jī)的plc語句所對(duì)應(yīng)的目標(biāo)機(jī)器代碼子集,則稱子集f i為基于單片機(jī)的plc目標(biāo)代碼子集。定義4: 在f i c f的條件下,有f=f。,f1,fx)。如果f i(i-1,2,入)都一一對(duì)應(yīng)等于所定義的各單片plc語句的目標(biāo)機(jī)器代碼子集,則稱集合f為基于單片機(jī)的plc的目標(biāo)代碼集合。基于單片機(jī)的plc的目標(biāo)代碼和目標(biāo)芯片有關(guān)。目標(biāo)代碼都是16進(jìn)制代碼。對(duì)不同的基于單片機(jī)的plc源語句,其目標(biāo)代碼的字節(jié)數(shù)不同,并且差別很大。例如,對(duì)于源程序語句ld 20,其目標(biāo)代碼子集為:f i=a2h,2
47、0h,(實(shí)際編譯程序中引進(jìn)變量q,為:ld 20;fi=a2h,q),q=20h)而對(duì)于源程序語句pls 09,其目標(biāo)代碼子集為:f i=50h,0dh,20h,p,06i-i,d2h,y,d2h,p,80h,08h,c2h,y,80h,04h,c2h,y,c2h,p,00h,00h,00h其中:p=19h,y=09h。值得指出的是,目標(biāo)代碼子集中的元素在編譯前,并非全部為常數(shù),少數(shù)是變量。例如ld的目標(biāo)代碼子集中的q,pls的目標(biāo)代碼子集中的p和y。這些變量的值經(jīng)過編譯后才得到確定的值。23 建立基于單片機(jī)的plo源程序語句和目標(biāo)代碼之間的關(guān)系定理1:設(shè)m為基于單片機(jī)的plc源語句標(biāo)準(zhǔn)集合,
48、且mim,f為基于單片機(jī)的plc的目標(biāo)代碼集合,且f i c f,于是必有f為m的一個(gè)l一1映射,其子集映象關(guān)系為:f i= (mi) (3)其中,表示映射。證明:根據(jù)定義1,m;為基于單片機(jī)的plc某個(gè)源語句的標(biāo)準(zhǔn)子集;根據(jù)定義3,fi為對(duì)應(yīng)于該源語句的目標(biāo)代碼子集;若f i (mi)成立,則結(jié)果和定義3矛盾。因此,必有f i_ (mi)成立。再根據(jù)211中的性質(zhì)4,各mi沒有一個(gè)重復(fù),故由f i-仃(mi)知,f i也沒有重復(fù),因此f為m的一個(gè)11映射成立。定理1證畢。定理1為基于單片機(jī)的plc編譯方法的簡(jiǎn)化提供了條件。在這種小型應(yīng)用系統(tǒng)編譯程序的設(shè)計(jì)中,可以省略生成中間代碼這一階段,直接
49、得到目標(biāo)代碼。公式(3)表明,對(duì)用戶的某一個(gè)plc源語句x,要找到對(duì)應(yīng)的fi,只需找到相應(yīng)的mt即可。f i =(mi)成了編譯過程中裝配活動(dòng)代碼的依據(jù)。24 基于單片機(jī)的plo編譯程序結(jié)構(gòu)基于單片機(jī)的plc編譯程序結(jié)構(gòu)如圖31所示。其特點(diǎn)是:翻譯時(shí), 一次掃描源程序文件,逐條翻譯,依fi=a(mi)裝配活動(dòng)代碼。25 盲碼的預(yù)先填入及修正技術(shù)定義5:將目標(biāo)代碼各模塊模板中字節(jié)數(shù)已定但內(nèi)容暫未確定的代碼稱為盲碼。有兩種情況需要采用盲碼技術(shù)。第一種情況:在編譯過程中,固定代碼段不完全固定,需要修正。在修正過程中需要采用盲碼技術(shù)。當(dāng)圖21中裝配固定代碼時(shí),對(duì)表16中固定代碼的定時(shí)器初值設(shè)定子程序段
50、,先以盲碼填入,代替正式代碼,等圖21中掃描源程序文件,逐條翻譯,得到源程序提供的定時(shí)器初值以后,再用正式代碼(含定時(shí)器初值的mov指令機(jī)器代碼)代替相應(yīng)位置上的盲碼,從而完成固定代碼的修正。第二種情況:圖21中f數(shù)組只是提供了和源程序語句對(duì)應(yīng)的目標(biāo)代碼的模板,該模板中的某些位置上原先也用盲碼(符號(hào)上用變量)代替。當(dāng)圖21中依照f;_盯(m i)裝配活動(dòng)代碼時(shí),這些盲碼才被相應(yīng)參數(shù)值取代。實(shí)際參數(shù)也來自源程序。例如,前面曾提到,對(duì)于源程序語句pls 09,其目標(biāo)代碼子集為:f i=50h,odh,20h,p,06h,d2h,y,d2h,p,80h,08h,c2h,y,80h,04it,c2h,
51、y,c2h,p,00h,00h,00h,式中的p、y位置為盲碼位置,符號(hào)用變量p和y表示,值為:p=19h。y=09h,其中,09h值是從源語句pls 09中的參數(shù)09得到,19h是計(jì)算得到。圖2.1基于單片機(jī)的plc編譯程序結(jié)構(gòu)3 基于單片機(jī)的plc編譯程序查錯(cuò)模塊設(shè)計(jì)基于單片機(jī)的plc編譯程序的設(shè)計(jì)過程,就是將上述總體設(shè)計(jì)方法用于具體設(shè)計(jì)的過程。在上文中,為了確定一個(gè)進(jìn)行源程序查錯(cuò)時(shí)的對(duì)照標(biāo)準(zhǔn),已經(jīng)建立了基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合,并且用m數(shù)組表達(dá)基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合,用c語言實(shí)現(xiàn)了m數(shù)組的賦值。在查錯(cuò)模塊程序設(shè)計(jì)中,確定了以下設(shè)計(jì)思路:先根據(jù)源程序文件名建立一個(gè)
52、列表文件名,然后分別打開源程序文件和列表文件。列表文件用來存放查錯(cuò)結(jié)果和錯(cuò)誤標(biāo)記。接下來,從源程序文件中依次讀入源程序語句,并進(jìn)行整句識(shí)別。一旦識(shí)別出一個(gè)整句,就進(jìn)行語句語法檢查,并將查錯(cuò)結(jié)果寫入列表文件。讀入源程序語句、整句識(shí)別、語句語法檢查,這些過程在循環(huán)進(jìn)行,直到出現(xiàn)源程序結(jié)尾標(biāo)記才結(jié)束。31 編譯過程中列表文件名和列表文件的建立建立列表文件的目的是為了用來存放查錯(cuò)結(jié)果。為此,先建立列表文件名。311 用strcat建立列表文件名用a數(shù)組記錄源程序文件名,用b數(shù)組記錄列表文件名。在基于單片機(jī)的plc編譯程序開始的時(shí)候,已經(jīng)通過鍵盤輸入將源程序文件名輸入到a數(shù)組中。所以,下面程序的已知條件是源程序文件名在a數(shù)組中。 strcpy(b,a) while(bi!.)&(i36)b1=2;goto next4b i+1= 0:bi+2=0 bi+3=0strcat(b,”list”);strcpy(b,a)的作用是將a數(shù)組的內(nèi)容拷貝給b數(shù)組。源程序文件的擴(kuò)展名是asm,而列表文件的擴(kuò)展名應(yīng)該是1st。所以在上述程序中用bi+1=o: bi+2=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于滿足居民出行需求的城市客運(yùn)交通碳排放研究
- 填充墻對(duì)半剛接鋼框架周期折減系數(shù)影響研究
- 心血管疾病的診斷
- 風(fēng)力發(fā)電小學(xué)生培訓(xùn)課件
- 上肢功能鍛煉的護(hù)理方法
- 大班健康營(yíng)養(yǎng)配餐指南
- 頸外靜脈采血技術(shù)課件
- 《智能網(wǎng)聯(lián)汽車技術(shù)》課件-智能網(wǎng)聯(lián)汽車基礎(chǔ)的認(rèn)知
- 《電力通信技術(shù)》課件
- 補(bǔ)課班教師培訓(xùn)
- 南站商務(wù)城二期綜合物探報(bào)告
- 浙江省引進(jìn)人才居住證申請(qǐng)表2021版
- GB/T 20133-2006道路交通信息采集信息分類與編碼
- GB 6245-2006消防泵
- GA/T 1217-2015光纖振動(dòng)入侵探測(cè)器技術(shù)要求
- 2023年貴州水鋼金屬科技有限公司招聘筆試題庫及答案解析
- 七年級(jí)生物下填圖題(識(shí)圖題)總復(fù)習(xí)
- 后穹窿穿刺課件
- 同志借調(diào)工作鑒定現(xiàn)實(shí)表現(xiàn)材料集合5篇
- MDITDI的安全使用與操作課件
- FMEA-潛在失效模式分析
評(píng)論
0/150
提交評(píng)論