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

正文內(nèi)容

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

  

【正文】 已知源程序文件名已 經(jīng)在 a數(shù)組中,建立目標(biāo)文件名的過(guò)程如下面的程序: strcpy(b, a): while(b[i]!=.’ ) {i++: } b[i+1]=’\ 0’: b[i+2]=’\ 0’: b[i+3]=’\ 0’: b[i+4]=’\ 0’: strcat(b,” bin” ): 同樣, strcpy(b, a)的作用是將 a數(shù)組的內(nèi)容拷貝給 b數(shù)組。 所以: if(m[j][k+1]==il— 1)的判斷成立。所以當(dāng) C[6]=‘ 7’完成后,有: i1=7, i11=6。用 if(ch==i)語(yǔ)句 進(jìn)行源程序文件尾判斷。源程序文件的擴(kuò)展名是. asm, 而列表文件的擴(kuò)展名應(yīng)該是. 1st。在查錯(cuò)模塊程序設(shè)計(jì)中,確定了以下設(shè)計(jì)思路: 先根據(jù)源程序文件名建立一個(gè)列表文件名,然后分別打開(kāi)源程序文件和列表文件。公式 (3)表明,對(duì)用戶的某一個(gè) PLC源語(yǔ)句 X,要找到對(duì)應(yīng)的 Fi,只需找到相應(yīng)的 Mt即可。 F1, ??, Fx)。這是因?yàn)槎x基于單片機(jī)的 PLC 源語(yǔ)句時(shí)是不可能重復(fù)定義的。在 2. 2. 2中已經(jīng)敘 述 了 TO中斷服務(wù)子程序的流程。 SFT Mi移位操作指令的單片機(jī)程序模塊如下: 1. 6 基于單片機(jī)的 PLC目標(biāo)程序框架的構(gòu)建 基 于單片機(jī)的 PLC編譯程序的功能是將基于單片機(jī)的 PLC的源程序語(yǔ)句翻譯成單片機(jī)的目標(biāo)程序。在用 PLC指令編程時(shí),同一個(gè)引用名不能 同時(shí)作計(jì)數(shù)器和計(jì)時(shí)器。在基于單片機(jī)的 PLC中用 AT89C52芯片內(nèi)的 T0來(lái)作統(tǒng)一的時(shí)鐘。有許多影響目標(biāo)程序框架結(jié)構(gòu)的因素,諸如 CPU初始化、內(nèi)部硬件定時(shí)器設(shè)定、中斷結(jié)構(gòu)、接口的初始化等。經(jīng)過(guò)多個(gè)程序的試驗(yàn)表明,該編譯程序能夠正確地將基于單片機(jī)的 PLC源程序翻譯成單片機(jī)可以直接執(zhí)行的、符合梯形圖邏輯控制要求的目標(biāo)程序。實(shí)驗(yàn)結(jié)果表明,本文所設(shè)計(jì)的基于單片機(jī)的 PLC編譯程序完全符合設(shè)計(jì)要求,可以用于項(xiàng)目開(kāi)發(fā)。設(shè)定目標(biāo)程序框架結(jié)構(gòu),是本課題的另一項(xiàng)主要工作任務(wù)。 TO設(shè) 定成定時(shí) 0. 1s,每隔O. 1sT0中斷一次。 CNT指令的單片機(jī)程序模塊用 Ci表示計(jì)數(shù)器的邏輯位,位地 址 30H. 3FH;用 ni表示計(jì)數(shù)器的計(jì)數(shù)脈沖前沿識(shí)別位,位地址 50H一 5FH;用 Di(雙字節(jié)寄存器 )表示軟加 1計(jì)數(shù)器, Di由 Di, 0和 Di, 1組成;用 D’i表示計(jì)數(shù)器的 預(yù)置值寄存器 (雙字節(jié)寄存器 ), D39。在基于單片機(jī)的 PLC編譯問(wèn)題中,目標(biāo)程序框架和單片機(jī)的芯片編程相關(guān),諸如 CPU初始化、內(nèi)部硬件定時(shí)器設(shè)定、接口的初始化等。它們的具體程序如下: 18 19 2 基于單片機(jī)的 PLC編譯程序總體設(shè)計(jì)方法 基于單片機(jī)的 PLC編譯程序總體設(shè)計(jì)方法碰到的第一個(gè)問(wèn)題是源程序指令模板和目標(biāo)代碼模板在編譯程序中如何表達(dá) ?接著第二個(gè)問(wèn)題是如何根據(jù)已知的源程序指令正確的找到目標(biāo)代碼程序 ?如何建立單片 PLC源程序語(yǔ)句和目標(biāo)代碼之間的關(guān)系 ? 為了在編譯時(shí)有一個(gè)對(duì)源程序語(yǔ)句的識(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源程序語(yǔ)句標(biāo)準(zhǔn)集合。 2. 1. 2 基于單片機(jī)的 PLC源程序語(yǔ)句標(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, , 5} M2={L, D, I, , 6} M3={A, N, D, , 6} M4={ A, N, I, , 6} M5={0, R, , 5} M6={0, R, I, , 6} M7={S, T, 0, R, E, , 8} M8={O, U, T, , 6} M9={T, I, M, , 6} M10={C, N, T, , 6} M11={R, S, T, C, , 7} M12={P, L, S, , 6} M13={D, I, N, , 6} 21 M14={S, F, T, , 6} M15={R, S, T, S, , 7} M16={E, N, D, , 6} 上述集合的全體就是基于單片機(jī)的 PLC源程序語(yǔ)句標(biāo)準(zhǔn)集合。如果 F i(i1, 2, ??, 入 )都一一對(duì)應(yīng)等于所定義的各單片 PLC語(yǔ)句的目標(biāo)機(jī)器代碼子集,則稱集合 F為基 于單片機(jī)的 PLC的目標(biāo)代碼集合。 F I =? (Mi)成了編譯過(guò)程中裝配活動(dòng)代碼的依據(jù)。列表文件用來(lái)存放查錯(cuò)結(jié)果和錯(cuò)誤標(biāo)記。所以在上述程序 中用 b[i+1]=’\ O’: b[i+2]=’\ 0’: b[i+3]=’\ 0’: b[i+4]=’\ 0’:四條語(yǔ)句將已拷貝給 b數(shù)組中的 asm清除,再通過(guò) strcat(b,” Lst” )語(yǔ)句將 1st拼接到 b數(shù)組中。用 if(ch==’\ xOd’ )語(yǔ)句進(jìn)行語(yǔ)句尾判斷。在上述程序中, M數(shù)組逐行搜索是通過(guò) for(j=l: j=16: )和 while(ki1)這兩個(gè)語(yǔ)句結(jié)構(gòu),經(jīng)過(guò) if(m[j][k]!=c[k])條件判斷實(shí)現(xiàn)的。 至此,語(yǔ)句語(yǔ)法檢查完成。 源程序文件的擴(kuò)展名 是. asm,而列表文件的擴(kuò)展名應(yīng)該是“. bin’’。 4. 1. 1 目標(biāo)文件名的建立 仍然用 a數(shù)組記錄源程序文件名,用 b數(shù)組記錄目標(biāo)文件名。 if(c[k]==’ ’ ) { if(m[j][k+1]==il— 1) {goto right: ) goto error: } 仍然以源程序語(yǔ)句 ANI 57為例,事先, j=4,當(dāng) if(c[k]==一 )成立時(shí), k=4, k+l=5, 從而得: m[j][k+1]=m[4兒 5]=’\ x06’ 而 i11的值在本例中已經(jīng)在 4. 4. 1中已知為: i1=7, i11=6。例 如,對(duì)源程序語(yǔ)句 ANI 57,有: C[1]=‘ A’: C[2]=‘ N’; C[3]=‘ I’; C[4]=‘’: C[5]=‘ 5’: C[6]=‘ 7’; 在 4. 3中通過(guò) c[il]=ch語(yǔ)句實(shí)現(xiàn)源語(yǔ)句字符送 C數(shù)組操作,并且做 i1++操作。程序如下: loopO: i1=1 loopi: ch=fgetc(fp): if(ch==1) { if(iI !=1) {goto error1: ) goto next2: } if(ch==’\ xOd’ ) 27 {goto jca: ) fputc(ch, fpl): C[i1]=ch: i1++: I f(i1=21) { printf(” current statement interruted i s too long\ n” ): . bl=l: goto next2: } goto loopl: errorl: printf(” last statement is error, lost’ enter’ key.\ n” ): bl=l; next2: goto next3: 其 中,用 ch=fgetc(fp)語(yǔ)句,從源程序文件中讀一個(gè)字符。 strcpy(b, a)的作用是將 a數(shù)組的內(nèi)容拷貝給 b數(shù)組。在上文中,為了確定一個(gè)進(jìn)行源程序查錯(cuò)時(shí)的對(duì)照標(biāo)準(zhǔn),已經(jīng)建立了基于單片機(jī)的 PLC源程序語(yǔ)句標(biāo)準(zhǔn)集合,并且用 M數(shù)組表達(dá)基于單片機(jī)的 PLC源程序語(yǔ)句標(biāo)準(zhǔn) 集合,用 C語(yǔ)言實(shí)現(xiàn)了 M數(shù)組的賦值。在這種小型應(yīng)用系統(tǒng)編譯程序的設(shè)計(jì)中,可以省略生成中間代碼這一階段, 直接得到目標(biāo)代碼。 定義 4: 在 F i ? c F的條件下,有 F={F。 性質(zhì) 4:集合 M中的各個(gè)子集 Mi沒(méi)有一個(gè)重復(fù)。 表 1. 6中入口符號(hào)地址 THTL處為 TO中斷服務(wù)子程序。 DIN Mi指令的單片機(jī)程序模塊如下: MOV Gi, C ;僅僅一條單片機(jī)指令。 圖 1. 2 TIM Ti邏輯指令的單片機(jī)程序模塊流程圖 13 1. 3 CNT Ci 語(yǔ)句的單片機(jī)程序模塊的構(gòu)建 計(jì)數(shù)器和計(jì)時(shí)器使用相同的片內(nèi)資源。 基于單片機(jī)的 PLC的 TIM Ti語(yǔ)句的單片機(jī)程序模塊構(gòu)建 1. 2. 1 圍繞 TIM Ti片內(nèi)硬件資源的配置 梯形圖中的延時(shí)計(jì)時(shí)器通常可以有多個(gè),它們需要有一個(gè)統(tǒng)一的時(shí)鐘。因此在編譯程序編寫(xiě)前,必須根據(jù)單片機(jī)芯片編程的特點(diǎn)設(shè)定目標(biāo)程序框架結(jié)構(gòu)。建立了基于單片機(jī)的 PLC的編譯程序設(shè)計(jì)研究的實(shí)驗(yàn)系統(tǒng),對(duì)該編譯程序的各項(xiàng)功能進(jìn)行了驗(yàn)證和比對(duì)。由于基于單片機(jī)的 PLC成本極低,實(shí)際應(yīng)用時(shí)可以帶來(lái)較好的經(jīng)濟(jì)效益,因而具有較強(qiáng)的實(shí)用性。 (3) 本課題的一項(xiàng)有特色的工作是在應(yīng)用研究基礎(chǔ)上,構(gòu)建基于單片機(jī)的 PLC 的源程序代碼標(biāo)準(zhǔn)集合和目標(biāo)程序代碼集合,并且用集合和映射的方法為基于單片機(jī)的 PLC源 程序代碼、目標(biāo)代碼以及翻譯方法建模。在 To中斷服務(wù)程序中依次將多個(gè)延時(shí)計(jì)時(shí)器的軟加 l計(jì)數(shù)器加 l。i由 D’i, 0和 D’i,i組成;另外,由 RSTC指令實(shí)現(xiàn)計(jì)數(shù)器的清零。根據(jù)基于單片機(jī)的 PLC的要求,建立目標(biāo)程序框架結(jié)構(gòu),如表 1. 6所示。 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ù)組表示。其中每個(gè)子集中的最后一個(gè)數(shù)字表示該源程序語(yǔ)句的 ASCII字符長(zhǎng)度標(biāo)準(zhǔn)。 基于單片機(jī)的 PLC的目標(biāo)代碼和目標(biāo)芯片有關(guān)。 2. 4 基于單片機(jī)的 PLO編譯程序結(jié)構(gòu) 基于單片機(jī)的 PLC編譯程序結(jié)構(gòu)如圖 3. 1所示。接下來(lái),從源程序文件中依次讀入源程序語(yǔ) 句,并進(jìn)行整句識(shí)別。結(jié)果,實(shí)現(xiàn)了用 b數(shù)組記錄一個(gè)文件名和源程序文件名相同,但擴(kuò)展名和源程序文件名不同的列表文件名,該列表文件名的擴(kuò)展名為. 1st。因?yàn)榛剀?chē)換行的 ASCII碼是 Od和 0A,所以 Od是語(yǔ)句末尾結(jié)束的標(biāo)志,也是我們進(jìn)行整旬識(shí)別依據(jù)。在 C數(shù)組的‘’字符前的那些數(shù)組變量中,只要出現(xiàn) m[j][k]≮ c[k]情況,就說(shuō)明在當(dāng)前 M數(shù)組的行中沒(méi)有搜索到和 ANI 57源程序語(yǔ)句同類的。若檢查過(guò)程中發(fā)現(xiàn)錯(cuò)誤,則進(jìn)行出錯(cuò)處理。 LDll 08 所以在上述程序中用 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ù)組 中。 為此,先建立列表文件名。 語(yǔ)句長(zhǎng)度核對(duì)是通過(guò) if(m[j][k+1]: =i卜 1)的判斷實(shí)現(xiàn)的。語(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ù)組變量 )記錄。 3. 3 整句識(shí)別 整句識(shí)別由讀入源語(yǔ)句字符、源程序文件尾判斷、語(yǔ)句尾判斷、源語(yǔ)句 字符送 C數(shù)組,這樣四部分組成。goto next4} b [i+1]=’\’ 0’: b[i+2]=’\ 0’ b[i+3]=’\ 0’ strcat(b,” List”)。 圖 PLC編譯 程序結(jié)構(gòu) 3 基于單片機(jī)的 PLC編譯程序查錯(cuò)模塊設(shè)計(jì) 基于單片機(jī)的 PLC編譯程序的設(shè)計(jì)過(guò)程,就是將上述總體設(shè)計(jì)方法用于具體設(shè)計(jì) 的過(guò)程。 定理 1為基于單片機(jī)的 PLC編譯方法的簡(jiǎn)化提供了條件。 ) (2) 假如 F i所代表的子集元素代碼等于第 i條基于單片機(jī)的 PLC語(yǔ)句所對(duì)應(yīng)的目標(biāo)機(jī) 器代碼子集,則稱子集 F i為基于單片機(jī)的 PLC目標(biāo)代碼子集。 基于單片機(jī)的 PLC的指令系統(tǒng)較簡(jiǎn)單,語(yǔ)句條數(shù)不多,所以 M數(shù)組行數(shù)不大,共 16行。關(guān)于盲碼, 3. 5中還要敘述。第三 個(gè)是對(duì)應(yīng)于 RSTS指令的移位寄存器復(fù)位程序模塊。開(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)。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1