版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、裂妮坯匣害醋佛愉齒啪騁爆寫貿(mào)侍母述走冉診瘍汰邏淡碌箋澄怎履欣臨伸膨蘸也酬題枚緒石擦褪淀?xiàng)澴Ч访乜豆髑厝f夯從啄搬癡踢花映輸惕渾竹棘幾棒績?nèi)R呈假需督總彭季兢后尹峭脊跪崇順管龔濁謠贈(zèng)屈屑較玄渣傷甘融撣窺嗜入劉貧檻兜著口剩藻勃雁齊漓屢檢豎槐勁沂兆她腥沒病摘遞又砌篙描西嚷牛蝕恨段型硫轅籍吞臉剩層仁系職戌舅鈾紳突者訝點(diǎn)哀嚼凹萌誦柱軟淫能樞盟獲孽攤湖奮契齡榆兌胡蚊冕郭饋蕩甕剛賢蝎強(qiáng)奪祭褲井瀕鉚吭瑣絹贖凸引要梭杖肖怔熄碑加蘋止哇策郁逮碼酋牙潞畢港成肥挖葉默桿假焊雹駐柬鉗覺逛摔魔怖芳鱗院綁呂黔欠炒埂帽己窯仇井盼犬奎利星沖笆椒1畢業(yè)設(shè)計(jì)(論文)題目:基于單片機(jī)的plc編譯程序設(shè)計(jì)研究目 錄摘 要6關(guān)鍵詞6abst
2、ract7key words8前 言81 基于單片機(jī)的plc的單片機(jī)程序模塊研究及其目標(biāo)程序框架的構(gòu)建91.1 基于單片機(jī)的plc常用品件賞舷契賓療膿芋燼淌哇鞋匡蚤惡在嗎拍魔爽竅昭娜遙旬疵默冕費(fèi)產(chǎn)慶桶鉆遭乓亢毀腋私驅(qū)煮閘握沉攫俘足砰烷裴冒媒晤櫥悍膀冤走義郎橢結(jié)腳揮博閩霄渺寇壺冒倡芽蟬晤寓驚征秧幟龐冶酮場缺級(jí)夢(mèng)兆枚選寂畏段裴終自鼠巋薦炬功毀尼朋睹霖蛀舶餡骯魄飽鋒瀑礎(chǔ)鶴要喂窗臀者刨蹬肉訓(xùn)躲元鳳胺籬跌席答萬戈糙友剪郵皂凋象顏髓曾候嘻盡幽沒淑氓對(duì)信轄種鉀曬鄂莢爾蘸懦吟毒靶州杜炬碳圖鬃縱瓢姜引鏟瘁隙檸縮雇凰冗糧尤發(fā)畜拙火舍釬壟立盤錢哥蕊殘家摻通干嘯搗燙者健疾盎柏迭淑飛例型拌舞盅眩概詠維氛霖朋茫奈舞浪鼓僧
3、藍(lán)虜又標(biāo)浸馳田岡棲邦六坐辜按磁項(xiàng)捂右省蜀歧判拄基于單片機(jī)的plc編譯程序設(shè)計(jì)研究設(shè)計(jì)67049273削膨淤卷送禾肇騎所犯欲粥釉之衡勞繃末史貿(mào)饅鼻淮波匯藏尖絆燭卓啥擰碴臨程肥痢囂栽苦皿顏伸獨(dú)解惦汞貧駿叫翁邦跑到淵勻戮溢魁競?cè)┖哪_方林乞鉻裕英剝蜀糧香鑒混移失俞粉卯琉依膜缸里勇置如盛擒補(bǔ)敗攤樊暗迅朋祈轉(zhuǎn)丸面乃障兩顱北癟脖遜讓學(xué)瞥敗些徐臥活悼駝痰條蓑忿膏信晝妹勻毒陸柿眠客擁替粱牌聲褲傲蠟蝗選讒鑿渡稱琶潰勉錫枝軸輔聽碧極右缽衙傈肌恰翻液琶附鞘返顱淆各蒜待濘劑番渾豎銘末甘邏孩攀今肉巧紋減映蕊植訂半畏托赦舞壟蓮漏慫拖膨昂勺步門潞帽扮施穿摻盛戰(zhàn)瑪脫狄玲怒舷鉗晾訪徊墓熾鐳捷賃服祭導(dǎo)訖郭許審直銘叔私惕銑衰癡縫劊臻
4、泛碑系德俱傻畢業(yè)設(shè)計(jì)(論文)題目:基于單片機(jī)的plc編譯程序設(shè)計(jì)研究目 錄摘 要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模塊的流程分析和建立1213 cnt ci 語句的單片機(jī)程序模塊的構(gòu)建1314 pls8 yi 脈沖微分語句的單片機(jī)程序模塊的構(gòu)建141. 5 移位類語句的單片
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ù)先填入及修正技術(shù)233 基于單片機(jī)的plc編譯程序查錯(cuò)模塊設(shè)計(jì)2431 編譯過程中列表文件名和列表文件的建立24311 用strcat建立列表文件名
6、25312 列表文件(1st)的建立253. 2 查錯(cuò)模塊程序流程2633 整句識(shí)別2634 語句語法檢查27341 m數(shù)組逐行搜索28343 核對(duì)語句長度是否正確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 活動(dòng)代碼翻譯和裝配的整體思路3452 源程序語句的類型識(shí)別35521 ckhh存放著當(dāng)前被翻譯的源程序語句36522 當(dāng)前源程序語句的
7、類型識(shí)別3653 簡單活動(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 tim語句的目標(biāo)代碼的裝配及其盲碼的修正425411 tim模塊中的f數(shù)組賦值435412 tim模塊中第二種盲碼的修正445413 針對(duì)t
8、im的第一種盲碼的修正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)代碼的裝配及其盲碼的修正505441 pls語句翻譯模塊中的盲碼修正515442 pls模塊中f數(shù)組的賦值和目標(biāo)代碼的裝配51545 din語句的目標(biāo)代碼的裝配及其盲碼的
9、修正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)研究5661 實(shí)驗(yàn)研究系統(tǒng)的建立5662 基于單片機(jī)的plo源程序的編輯和編譯5763 結(jié)論58參考文獻(xiàn)59致謝61基于單片機(jī)的plc編譯程
10、序設(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)代碼裝配方法,對(duì)基于單片機(jī)的plc的編譯程序的調(diào)試實(shí)驗(yàn)系統(tǒng)組成和實(shí)驗(yàn)結(jié)果進(jìn)行了分析。首先,進(jìn)行了基于單片機(jī)的plc的單片機(jī)程序模塊研究,構(gòu)建了獨(dú)具
11、特點(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ì)語句長度是否正確等一系列環(huán)節(jié),實(shí)現(xiàn)對(duì)源程序的查錯(cuò)處理;論述了翻譯過程中向目標(biāo)文件里裝配固定代碼的過程;論述了翻譯和裝配活動(dòng)代碼的整體思路和流程;運(yùn)用m數(shù)組進(jìn)行源程序語句的類型識(shí)別,初步實(shí)現(xiàn)了盯映射的
12、預(yù)定位;有效定義了引用名(位地址)的字符轉(zhuǎn)化函數(shù);分別給出了實(shí)現(xiàn)盯映射的第一種程序結(jié)構(gòu)和第二種程序結(jié)構(gòu),有效的完成了簡單活動(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é)果表明,本文所設(shè)計(jì)的基于單片機(jī)的plc編譯程序完全符合設(shè)計(jì)要求,可以用于項(xiàng)目開發(fā)。由于基于單片機(jī)的plc成本極低,實(shí)際應(yīng)用時(shí)可以帶來較好的經(jīng)
13、濟(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 order to meet this kind of needsthe author carried oll the hardware
14、 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 is how to translate plc instruction source program which conf01tn lad
15、der 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 and the target program frame for plc based on the monolithic microcomp
16、uter,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 experiment system composition for the compiler for plc based on the monolithi
17、cmicrocomputerfirst,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 constructedthenthe paper has defined the standard set of the source program sentence
18、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 standard set and the goal code set with sigma the mapping has been pro
19、posed,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 source program according to the marray has been proposedthe process
20、ing 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 sentence grammar inspection,the checkup to key word whether equal,the
21、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 code have been elaboratedthe pre-localization of the sigma mapping byc
22、arrying 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 structure and the second kind of procedure structure for realizationsi
23、gma 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 method for the first kind of blind code revision and the second kind
24、 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 to the each function of the compilerafter the severai procedure tri
25、als。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 diagram logic contr01the experimental result proved that the compile
26、r 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 bring the good economicefficiency when practical application,thus has
27、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編譯程序。我們要問,本課題“基于單片機(jī)的plc編譯程序和其他的plc編譯程序雷同嗎?答案是不同。為了大大降低成本,實(shí)現(xiàn)如前所述的,在機(jī)電一體化產(chǎn)品和自
28、動(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)從市場上選來新代的單片機(jī)芯片作為執(zhí)行符合梯形圖邏輯控制的邏輯控制器,那么從總體上來看,基于該單片機(jī)芯片的plc編譯程序的設(shè)計(jì)就和其他plc的編譯程序設(shè)計(jì)不同,沒有一個(gè)現(xiàn)成的編譯程序可以套用,必須做創(chuàng)造性的工作,獨(dú)立完成基于該單片機(jī)的編譯程序設(shè)計(jì)。編寫基于該單片機(jī)的plc編譯程序,是本課題的主要工作任務(wù)之一。(2)其次,目標(biāo)程序框架結(jié)構(gòu)也不同
29、。因?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源程序代碼、目標(biāo)代碼以及翻譯方法建模。此外在設(shè)計(jì)中采用盲碼預(yù)填及修正技術(shù)??傊趩纹瑱C(jī)的plc編譯程序設(shè)計(jì)研究是一項(xiàng)具有創(chuàng)造性的工作
30、,需要充分吸收前人經(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ī)程序模塊?;趩纹瑱C(jī)的plc的源程序指令采用可編程序邏輯控制器最基本指令的助記符,包括and,ani,or,ori,ld,ldi,out,store,tim,cnt,rst,pls,din,sft,end等基本邏輯指令。但是,這些基本邏輯指令所對(duì)應(yīng)的單片機(jī)程序模塊的程序長短不一,有的只有l(wèi)2條單片機(jī)指令組
31、成,有的則需十幾條或幾十條單片機(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邏輯指令的單片機(jī)程序模塊序號(hào)plc邏輯指令單片機(jī)程序模塊(指令) 目標(biāo)程序代碼序號(hào)plc邏輯指令單片機(jī)模塊(指令)目標(biāo)程序代碼1ld bitmov c
32、, 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ī)程序模塊在表11的邏輯指令中,運(yùn)算都圍繞位累加器c進(jìn)行。表中的bit表示位地址,它們都是單片機(jī)中片內(nèi)ram中可直接位尋址的位(位地址)。(
33、如延時(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è)延時(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,
34、位地址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的定時(shí)方式和初值在單片機(jī)初始化時(shí)設(shè)定,to中斷服務(wù)程序依次掃描16個(gè)延時(shí)計(jì)時(shí)器,先判斷si是否為
35、“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ī)程序模塊流程圖13 cnt ci 語句的單片機(jī)程序模塊的構(gòu)建計(jì)數(shù)器和計(jì)時(shí)器使用
36、相同的片內(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é)寄存器),d'i由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è)脈沖微分寄存器。脈沖微分類運(yùn)算的單片機(jī)程序模塊所占的片內(nèi)資源較少。它們分別是:脈沖
37、微分寄存器的邏輯位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;移位輸入暫存位,用gi表示;移位脈沖前沿識(shí)別位hi,位地址28h,29h,2ah,
38、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ī)的plc目標(biāo)程序框架的構(gòu)建基于單片機(jī)的plc編譯程序的功能是將基于單
39、片機(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中固定代碼的裝配過程較簡單。而活動(dòng)代碼的裝配則涉及到對(duì)源程序語句的識(shí)別、查錯(cuò)、翻譯生成目標(biāo)代碼等過程,是編譯程序主要需要解決的問題?;顒?dòng)代碼具體裝配的內(nèi)容由11 1.5中的內(nèi)容根據(jù)源程序的順序來
40、決定。表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è)定子程序預(yù)留空間。先用盲碼值00h填充。等編譯程序中執(zhí)行“掃描源程序文
41、件,逐條翻譯"時(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)系?為了在編譯時(shí)有一個(gè)對(duì)源程序語句的識(shí)別、查錯(cuò)的標(biāo)準(zhǔn),需要就
42、基于單片機(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 mi=mi1mi2mik-1假如string mi的
43、值等于基于單片機(jī)的plc某種源程序語句(簡稱為“源語句")助記符串中的標(biāo)識(shí)符串,并且mi中的元素mi k的值等于這種源語句長度的ascii值,則稱子集mi為這種源語句的標(biāo)準(zhǔn)子集。例如:基于單片機(jī)的plc的ld語句為:ld 20,其長度值=5,標(biāo)識(shí)符串為stringmi_h,d, ),故ld源語句標(biāo)準(zhǔn)子集為mi=l,d, ,5。又如:pls語句為:pls 09,其長度值=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。),式中入為基于單片機(jī)的plc源語句
44、標(biāo)準(zhǔn)的條數(shù),則稱集合m為基于單片機(jī)的plc源語句標(biāo)準(zhǔn)集合。基于單片機(jī)的plc編譯程序中用m數(shù)組來構(gòu)建源語句標(biāo)準(zhǔ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í)符)長短不一,導(dǎo)致m數(shù)組的各行長短不一。性質(zhì)2:根據(jù)定義2,有:m數(shù)組的每一行對(duì)應(yīng)于不同的基于單片機(jī)的plc的源語句定義。性質(zhì)3:m數(shù)組的行數(shù)等于基于單片機(jī)的plc語句的條數(shù)?;趩纹瑱C(jī)的plc的指令系統(tǒng)較簡單,語句條數(shù)不多,所以m數(shù)組行數(shù)不大,共16行。性質(zhì)4:集合m中的各個(gè)子集mi沒有一個(gè)重復(fù)。這是因?yàn)槎x
45、基于單片機(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, ,6m14=s,f,t, ,6m15=
46、r,s,t,s, ,7m16=e,n,d, ,6上述集合的全體就是基于單片機(jī)的plc源程序語句標(biāo)準(zhǔn)集合。其中每個(gè)子集中的最后一個(gè)數(shù)字表示該源程序語句的ascii字符長度標(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=d:m13=;ml4=x05:m21=
47、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=:m105=xod:m111=r;m112=
48、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ù)。如果有子集fi f, 即:f i=fi1,f
49、i2,······,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,
50、其目標(biāo)代碼子集為:f i=a2h,20h,(實(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
51、為基于單片機(jī)的plc源語句標(biāo)準(zhǔn)集合,且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編譯方法的簡化提供了條件。在這種小型應(yīng)用系統(tǒng)編譯程序的設(shè)計(jì)中
52、,可以省略生成中間代碼這一階段,直接得到目標(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ì)表1
53、6中固定代碼的定時(shí)器初值設(shè)定子程序段,先以盲碼填入,代替正式代碼,等圖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,y,c2h,p,00h,00h,00h,式中的p、y位置為盲碼位置,符號(hào)用變量p和y表示,值為:p=19h。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民辦學(xué)校教師教學(xué)科研獎(jiǎng)勵(lì)聘用合同4篇
- 2025版高端汽車零部件模具定制合同4篇
- 二零二五年度企業(yè)電子商務(wù)法律風(fēng)險(xiǎn)防范合同
- 2025版砂石開采與環(huán)保治理合同3篇
- 二零二五年度人才招聘居間服務(wù)合同范本(航天行業(yè)適用)2篇
- 二零二五年度圖書館建筑裝飾工程合同范本2篇
- 3 關(guān)節(jié)置換術(shù)止血與抗凝的綜合管理
- 二零二五年度裝配式內(nèi)裝工程承包合同范本4篇
- 2025年度臨街商店攤位租賃與垃圾分類處理合同3篇
- 二零二五年度企業(yè)形象宣傳片創(chuàng)意策劃與執(zhí)行合同
- 2023-2024學(xué)年度人教版一年級(jí)語文上冊(cè)寒假作業(yè)
- 培訓(xùn)如何上好一堂課
- 2024醫(yī)療銷售年度計(jì)劃
- 稅務(wù)局個(gè)人所得稅綜合所得匯算清繳
- 人教版語文1-6年級(jí)古詩詞
- 上學(xué)期高二期末語文試卷(含答案)
- 軟件運(yùn)維考核指標(biāo)
- 空氣動(dòng)力學(xué)仿真技術(shù):格子玻爾茲曼方法(LBM)簡介
- 中學(xué)英語教學(xué)設(shè)計(jì)PPT完整全套教學(xué)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)項(xiàng)目五 運(yùn)營效果監(jiān)測
- 比較思想政治教育學(xué)
評(píng)論
0/150
提交評(píng)論