freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的plc編譯程序設(shè)計(jì)研究畢業(yè)設(shè)計(jì)論文-wenkub.com

2025-06-25 20:35 本頁(yè)面
   

【正文】 if((fp=fopen(a,” rb” ))==O) {printf(” when pi le, cannot open fi le% s!\ n”, a): exit(0): } if((fpl=fopen(b,” wb” ))==O) {printf(” cannot open or create fi le% s, di sk error.\ n”,b): exit(0): ) 通過(guò)上面的程序,指針變量 fp指向源程序文件 (. asm),指針變量 fpl指向目標(biāo) 文件 (. bin)。所以在上述程序中用 b[i+1]=’\ O’: b Ei+2]=’\ O’: b[i+3]=’\ 0’: b Ei+4]=’\ 0’:四條語(yǔ)句將已拷貝給 b數(shù)組中的 asm清除,再通過(guò) strcat(b,” bin” )語(yǔ)句將 bin拼接到 b數(shù)組 中。 為此,先建立列表文件名。固定代碼的裝配過(guò)程較簡(jiǎn)單,裝配固定代碼的流程如下: 圖 4. 0固定代碼裝配流程 如下; 。 4 固定代碼的裝配 在對(duì)源程序查錯(cuò)并確認(rèn)無(wú)誤后,就進(jìn)入翻譯階段。 LDll 08 這一過(guò)程的實(shí)現(xiàn)是通過(guò) fputc(’木, fpl)語(yǔ)句實(shí)現(xiàn)的。若檢查過(guò)程中發(fā)現(xiàn)錯(cuò)誤,則進(jìn)行出錯(cuò)處理。 語(yǔ)句長(zhǎng)度核對(duì)是通過(guò) if(m[j][k+1]: =i卜 1)的判斷實(shí)現(xiàn)的。所以,關(guān)鍵詞是否相等的核對(duì), 是通過(guò)對(duì)條件 if(c[k]==’’ )的判斷實(shí)現(xiàn)的。仍然以源程序語(yǔ)句 ANI 57為例, 其 C數(shù)組為: C[1]=‘ A’; C[23=‘ N’; C[3]=‘ I’; C[4]=‘’; C[5]=‘ 5’; C[63=‘ 7’; 對(duì)應(yīng)的 M數(shù)組行為: m[4][1]=’ A’: m[4][2]=’ N’: m[41[33=’ I’; m E4][4]=’’: m[4][5]=’\ x06’; (見(jiàn) 2. 1. 2) 該例中的關(guān)鍵詞是 ANI。在 C數(shù)組的‘’字符前的那些數(shù)組變量中,只要出現(xiàn) m[j][k]≮ c[k]情況,就說(shuō)明在當(dāng)前 M數(shù)組的行中沒(méi)有搜索到和 ANI 57源程序語(yǔ)句同類(lèi)的。語(yǔ)句語(yǔ)法檢查程序如下: jca: for(j=l: j=16: ). { 28 k=l: while(kil) { if(m[j][k]!=c[k]) {goto nextl: } if(a[k]==’’ ) { if(m[j][k+1]==i1— 1) {goto right: } goto error: } k++: } nextl: j++: } error: fputc(‘ *’, fp1): b1=1: right: fputc(’\ xOD’, fp1): fputc(’\ xOA’, fp1): ch=fgetc(fp): goto loopO: 3. 4. 1 M數(shù)組逐行搜索 當(dāng)前得到的源程序語(yǔ)句在 C數(shù)組中,由 C數(shù)組的各個(gè)元素 (數(shù)組變量 )記錄。根據(jù)這一思想,得到語(yǔ)句語(yǔ)法檢查的基本思路和方法。本項(xiàng)目的語(yǔ)句語(yǔ)法檢查方法是針對(duì)基于單片機(jī)的 PLC的編譯需要提出的。因?yàn)榛剀?chē)換行的 ASCII碼是 Od和 0A,所以 Od是語(yǔ)句末尾結(jié)束的標(biāo)志,也是我們進(jìn)行整旬識(shí)別依據(jù)。 3. 3 整句識(shí)別 整句識(shí)別由讀入源語(yǔ)句字符、源程序文件尾判斷、語(yǔ)句尾判斷、源語(yǔ)句 字符送 C數(shù)組,這樣四部分組成。接著,讀入源程序語(yǔ)句。并且源程序文件和列表文件也都已經(jīng)打開(kāi)。結(jié)果,實(shí)現(xiàn)了用 b數(shù)組記錄一個(gè)文件名和源程序文件名相同,但擴(kuò)展名和源程序文件名不同的列表文件名,該列表文件名的擴(kuò)展名為. 1st。goto next4} b [i+1]=’\’ 0’: b[i+2]=’\ 0’ b[i+3]=’\ 0’ strcat(b,” List”)。 Strcpy(b,a) While((b[i]!’.’)amp。為此,先建立列表文件名。接下來(lái),從源程序文件中依次讀入源程序語(yǔ) 句,并進(jìn)行整句識(shí)別。 圖 PLC編譯 程序結(jié)構(gòu) 3 基于單片機(jī)的 PLC編譯程序查錯(cuò)模塊設(shè)計(jì) 基于單片機(jī)的 PLC編譯程序的設(shè)計(jì)過(guò)程,就是將上述總體設(shè)計(jì)方法用于具體設(shè)計(jì) 的過(guò)程。當(dāng)圖 2. 1中依照 F; _盯 (M i)裝配活動(dòng)代碼時(shí),這些盲碼才被相應(yīng)參數(shù)值取代。 第一種情況:在編譯過(guò)程中,固定代碼段不完全固定,需要修正。 2. 4 基于單片機(jī)的 PLO編譯程序結(jié)構(gòu) 基于單片機(jī)的 PLC編譯程序結(jié)構(gòu)如圖 3. 1所示。 定理 1為基于單片機(jī)的 PLC編譯方法的簡(jiǎn)化提供了條件。 證明:根據(jù)定義 1, M;為基于單片機(jī)的 PLC某個(gè)源語(yǔ)句的標(biāo)準(zhǔn)子集;根據(jù)定義 3, Fi為對(duì)應(yīng)于該源語(yǔ)句的目標(biāo)代碼子集;若 F i ?? (Mi)成立,則結(jié)果和定義 3矛盾。值得指出的是,目標(biāo)代碼子集中的元素在編譯前,并非全部為常數(shù),少數(shù)是變量。 基于單片機(jī)的 PLC的目標(biāo)代碼和目標(biāo)芯片有關(guān)。 ) (2) 假如 F i所代表的子集元素代碼等于第 i條基于單片機(jī)的 PLC語(yǔ)句所對(duì)應(yīng)的目標(biāo)機(jī) 器代碼子集,則稱(chēng)子集 F i為基于單片機(jī)的 PLC目標(biāo)代碼子集。 M數(shù)組的各元素賦值如下 : m[1][1]=’ L’; m[l][2]=’ D’: m[1][3]=’’; m[l][4]=’\ x05’: m[2][1]=’ L’: m[2][2]=’ D’: m[2][3]=’ I’: m[2][4]=’’: m[2][5]=’\x06’: m[3][1]=’ A’: m[3][2]=’ N’: m[3][3]=’ D’: m[3][4]=’’: m[3][5]=’\x06’: m[4][1]_’ A’: m[4][2]=’ N’: m[4][3]=’ I’ : m[4][4]=’’: m[4][5]=’\x06’: m[5][1]=’ 0’: m[5][2]=’ R,: m[5][3]=’’: m[5][4]=’\ x05’: m[6兒 1]=’ 0’: m[6][2]=’ R’: m[6][3]=’ I’: m[6][4]=’’: m[6][5]=’\x06’: m[7][1]=’ S’: m[7][2]=’ T’: m[7][3]=’ 0’: m[7][4]=’ R’: m[7][5]=’ E’: m[7][6]=’’: m[7][7]=’\ x08’: m[8][1]=’ 0’: m[8][2]=’ U’: m[8][3]=’ T’: m[8][4]=’’: m[8][5]=’\x06’: m[9][1]=’ T’: m[9][2]=’ I’: m[9][3]=’ M’: m[9][4]=’’: m[9][5]=’\xOD’: m[10][1]=’ C’; m[10][2]=’ N’: m[10][3]=’ T’; m[10][4]=’’: m[10][5]=’\ xOD’: m[11][1]=’ R’; m[11][2]=’ S’: m[11][3]=’ T’; m[11][4]=’ C’: m[11][5]=’’: m[11][6]=’\ x07’: m[12][1]=’ P’; m[12][2]=’ L’: m[12][3]=’ S’; m[12][4]=’’: rail2][5]=’\ x06’: m[3][1]=’ D’: m[13][2]=’ I’: m[13][3]=’ N’; m[13][4]=’’: m[13][5]=’ 22 \ x06’: m[14][1]=’ S’: m[14][2]=’ F’; m[14][3]=’ T’; m[14][4]=’’: m[14][5]=’\ x06’: m[15][1]=’ R’; m[15][2]=’ S’: m[15][3]=’ T’; m[15][4]=’ S’: m[15][5]=’’: m[15][6]=’\ x07’: m[16][1]=’ E’; m[16][2]=’ N’; rail6][3]=’ D’; m[16][4]=’’: m[16][5]=’\ x09’: 2. 2 基于單片機(jī)的 PLC目標(biāo)代碼集合的構(gòu)建 定義 3: F是集合, fij是其元素, fijEF, fij是一字節(jié) 16進(jìn)制數(shù)。其中每個(gè)子集中的最后一個(gè)數(shù)字表示該源程序語(yǔ)句的 ASCII字符長(zhǎng)度標(biāo)準(zhǔn)。 基于單片機(jī)的 PLC的指令系統(tǒng)較簡(jiǎn)單,語(yǔ)句條數(shù)不多,所以 M數(shù)組行數(shù)不大,共 16行。 M數(shù)組提供了源語(yǔ)句樣板。又: M={Mt, M2, ??, M。 2. 1 采用數(shù)組技術(shù)構(gòu)建基于單片機(jī)的 PLC源程序語(yǔ)句標(biāo)準(zhǔn)集合 2. 1. 1 基于單片機(jī)的 PLC源程序語(yǔ)句標(biāo)準(zhǔn)集合的定義 定義 1: M是集合,在基于單片機(jī)的 PLC編譯程序中用數(shù)組表示。關(guān)于盲碼, 3. 5中還要敘述。它們又被分為兩種:一種為純固定目標(biāo)代碼,例如專(zhuān)用地址矢量、延時(shí) 20ms子程序、 CPU和接口初始化子程序、 TO中斷服務(wù)子程序、主程序開(kāi)始初始化設(shè)定、輸入刷新;另一種為含盲碼、待修正的固定目標(biāo)代碼,例如定時(shí)器初值設(shè)定子程序。當(dāng)基于單片機(jī)的 PLC編譯程序工作時(shí),對(duì)表 1. 6中固定代碼的裝配過(guò)程較簡(jiǎn)單。根據(jù)基于單片機(jī)的 PLC的要求,建立目標(biāo)程序框架結(jié)構(gòu),如表 1. 6所示。第三 個(gè)是對(duì)應(yīng)于 RSTS指令的移位寄存器復(fù)位程序模塊。移位類(lèi)運(yùn)算的單片機(jī)程序模塊所占的片內(nèi)資源有: ①移位寄存器,用 Mi表示,字節(jié)地址分別為 2CH, 2DH, 2EH, 2FH;②移位輸入暫 存位,用 Gi表示;③移位脈沖前沿識(shí)別位 Hi,位地址 28H, 29H, 2AH, 2BH。 PLS脈沖微分的單片機(jī)程序模塊流程見(jiàn) 15 圖 2. 3。i由 D’i, 0和 D’i,i組成;另外,由 RSTC指令實(shí)現(xiàn)計(jì)數(shù)器的清零。開(kāi)動(dòng)延時(shí)計(jì)時(shí)器 (實(shí)行 Si— l的操作 )的條件是:當(dāng) C=I,同時(shí) Si=0(第 i個(gè)延時(shí)計(jì)時(shí)器還未處于開(kāi)動(dòng)狀態(tài)時(shí) ),同時(shí) Ti≠ 1(延時(shí)計(jì)時(shí)器邏 輯 位還未置“ 1)。 To的初值計(jì)算公式為: 初值?Ta ??? st ?定時(shí)間,??? M H zf 晶振頻率,??? 圖 1. 1 TO中斷服務(wù)程序流程圖 TO的定時(shí)方式和初值在單片機(jī)初始化時(shí)設(shè)定, TO中斷服務(wù)程序依次掃描 16個(gè)延 fat 12)2(16 ??? 12 時(shí)計(jì)時(shí)器,先判斷 Si是否為“ 1, 即該計(jì)時(shí)器是否已被開(kāi)啟,只對(duì)開(kāi)啟的計(jì)時(shí)器的軟 加 1計(jì)數(shù)器 Zi實(shí)行加 1操作。④延時(shí)計(jì)時(shí)器延時(shí)時(shí)間常數(shù)寄存器 Z; 11 Z;也由兩字節(jié)寄存器組成,可記錄 4位 BCD數(shù),字節(jié)地址為 30H, 31H,在 To中斷服務(wù)程序中依次將多個(gè)延時(shí)計(jì)時(shí)器的軟加 l計(jì)數(shù)器加 l。下面是對(duì)此類(lèi) PLC邏輯指令的單片機(jī)程序模塊建立過(guò)程的分析。由 于選擇 了 Atmel公司的 AT89C52單片機(jī)芯片作為處理器,所以單片機(jī)程序使用 MCS. 51單片機(jī)指令系統(tǒng) (AT89C52單片機(jī)采用了 MCS. 51單片機(jī)指令系統(tǒng) )?;趩纹瑱C(jī)的 PLC的源程序指令采用可編程序邏輯控制器最 基 本指令的助記符,包括 AND, ANI, OR, ORI, LD, LDI, OUT, STORE, TIM, CNT, RST, PLS, DIN, SFT, END等基本邏輯指令。 (3) 本課題的一項(xiàng)有特色的工作是在應(yīng)用研究基礎(chǔ)上,構(gòu)建基于單片機(jī)的 PLC 的源程序代碼標(biāo)準(zhǔn)集合和目標(biāo)程序代碼集合,并且用集合和映射的方法為基于單片機(jī)的 PLC源 程序代碼、目標(biāo)代碼以及翻譯方法建模。因?yàn)閱纹瑱C(jī)芯片不同,內(nèi)部的硬件資源也 就不同,目標(biāo)指令代碼和目標(biāo)程序框架結(jié)構(gòu)也就不同。在從事這項(xiàng)研究時(shí)我們發(fā)現(xiàn),本課題“基于單片機(jī)的 PLC編譯程序設(shè)計(jì)’’在應(yīng)用研究方法和具體內(nèi)容上都和前人有許多不同之處。當(dāng)今計(jì)算機(jī) 技術(shù)發(fā)展很快,編譯程序設(shè)計(jì)技術(shù)也在不斷發(fā)展。由于基于單片機(jī)的 PLC成本極低,實(shí)際應(yīng)用時(shí)可以帶來(lái)較好的經(jīng)濟(jì)效益,因而具有較強(qiáng)的實(shí)用性。然后,定義了基于單片機(jī)的 PLC的源程序語(yǔ)句標(biāo)準(zhǔn)集合,提出了源程序語(yǔ)句標(biāo)準(zhǔn)集合的數(shù)組表示方法;定 義了目標(biāo)代碼集合,提出了用口映射來(lái)建立源程序語(yǔ)句標(biāo)準(zhǔn)集合和目標(biāo)代碼集合之間的關(guān)系,為編譯程序結(jié)構(gòu)的實(shí)現(xiàn)提供了條件和方法;提出了盲碼預(yù)填和盲碼修正的思想提出了依據(jù) M數(shù)組對(duì)源程序查錯(cuò)的思路,通過(guò)列表文件名和列表文件的建立、整句識(shí)別、語(yǔ)句語(yǔ)法檢查中的 M數(shù)組逐行搜索、核對(duì)關(guān)鍵詞是否相等、核對(duì)語(yǔ)句長(zhǎng)度是否正確等一系列環(huán)節(jié),實(shí)現(xiàn)對(duì)源程序的查錯(cuò)處理;論述了翻譯過(guò)程中向目標(biāo)文件里裝配固定代碼的過(guò)程;論述了翻譯和裝配活動(dòng)代碼的整體思路和流程;運(yùn)用 M數(shù)組進(jìn)行源程序語(yǔ)句的類(lèi)型識(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ù);提出并論述了第一類(lèi)盲碼修正和第二類(lèi)盲碼修正的程序?qū)崿F(xiàn)方法。為了滿足這種需要,作者開(kāi)展了用單片機(jī)直接實(shí)現(xiàn)梯形圖邏輯控制的硬件和軟件研究。其中最為關(guān)鍵的一項(xiàng)技術(shù)是如何設(shè)計(jì)出基 于單片機(jī)的 PLC編譯程序,將符合梯形圖邏輯的 PLC指令源程序翻譯成單片機(jī)目標(biāo)程序。建立了基于單片機(jī)的 PL
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1