第一篇:實(shí)驗(yàn)3 指令調(diào)度和延遲分支
實(shí)驗(yàn)3 指令調(diào)度和延遲分支
3.1 實(shí)驗(yàn)?zāi)康?/p>
(1)加深對(duì)指令調(diào)度技術(shù)的理解。(2)加深對(duì)延遲分支技術(shù)的理解。
(3)熟練掌握用指令調(diào)度技術(shù)解決指令流水線中的數(shù)據(jù)沖突的方法。(4)進(jìn)一步理解指令調(diào)度技術(shù)對(duì)CPU性能的改進(jìn)。(5)進(jìn)一步理解延遲分支技術(shù)對(duì)CPU性能的改進(jìn)。
3.2 實(shí)驗(yàn)平臺(tái)
指令級(jí)和流水線操作級(jí)模擬器MIPSsim。
3.3 實(shí)驗(yàn)內(nèi)容和步驟(1)啟動(dòng)MIPSsim。
(2)進(jìn)一步理解流水段的構(gòu)成和各個(gè)流水寄存器的功能。(3)選擇“配置”下的“流水方式”,讓模擬器工作于流水方式下。(4)采用指令調(diào)度技術(shù)解決流水線中的數(shù)據(jù)沖突。步驟如下:
1)載入程序schedule.s。2)關(guān)閉定向功能。
3)執(zhí)行載入的程序。觀察時(shí)鐘周期圖,找出程序執(zhí)行中各種沖突發(fā)生的次數(shù),發(fā)生沖突的指令組合以及程序執(zhí)行的總時(shí)鐘周期數(shù)。時(shí)鐘周期圖如下:
由以上知:RAW數(shù)據(jù)沖突發(fā)生了16次,其中l(wèi)oad停頓6次,自陷停頓1次。發(fā)生沖突的指令組合: ADDIU $r1,$r0,A LW $r2,0($r1)與上條寫后讀沖突; ADD $r4,$r0,$r2 SW $r4,0($r1)與上條指令寫后讀沖突; LW $r6,4($r1)ADD $r8,$r6,$r1與上條指令寫后讀沖突; MUL $r12,$r10,$r1 ADD $r16,$r12,$r1與上條指令寫后讀沖突; ADD $r18,$r16,$r1 與上條指令組件沖突 SW $r18,16($r1)與上條指令寫后讀沖突;; LW $r20,8($r1)MUL $r22,$r20,$r14與上條指令寫后讀沖突; 程序執(zhí)行的總時(shí)鐘周期數(shù)為33。
4)采用指令調(diào)度技術(shù)對(duì)程序進(jìn)行指令調(diào)度,消除沖突。將調(diào)度后的指令存到after-schedule.s中。
答:after-schedule.s指令代碼如下:
.text main: ADDIU $r1,$r0,A MUL
$r22,$r20,$r14 LW
$r2,0($r1)MUL
$r24,$r26,$r14 ADD
$r4,$r0,$r2 LW
$r6,4($r1)SW
$r4,0($r1)ADD
$r8,$r6,$r1 MUL
$r12,$r10,$r1 ADD
$r18,$r16,$r1 ADD
$r16,$r12,$r1 SW
$r18,16($r1)LW
$r20,8($r1)TEQ
$r0,$r0.data A:.word 4,6,8 5)載入after-schedule.s。
6)執(zhí)行程序,觀察程序在流水線中的執(zhí)行情況,記錄程序執(zhí)行的總時(shí)鐘周期數(shù)。
則程序執(zhí)行的總時(shí)鐘周期數(shù)為21。
7)根據(jù)記錄結(jié)果,比較調(diào)度前和調(diào)度后的性能。論述指令調(diào)度對(duì)提高CPU性能的作用。
時(shí)鐘周期圖:
調(diào)度前的執(zhí)行周期為33,調(diào)度后的執(zhí)行周期數(shù)為21。指令調(diào)度讓指令順序重新組織順序可以消除部分的數(shù)據(jù)沖突,指令調(diào)度影響CPU性能,通過使用指令調(diào)度提高了CPU的使用率,大大減少了指令沖突的次數(shù),提高了CPU性能。(5)采用延遲分支減少分支指令對(duì)性能的影響。步驟如下:
1)啟動(dòng)MIPSsim。2)載入branch.s。
3)關(guān)閉延遲分支功能。通過“配置”下取消“延遲槽”選項(xiàng)。4)執(zhí)行該程序,觀察并記錄發(fā)生分支延遲的時(shí)刻。
答:分支延遲的時(shí)刻為第13個(gè)周期。5)記錄該程序執(zhí)行的總時(shí)鐘周期數(shù)。
6)
7)8)9)
程序執(zhí)行的總時(shí)鐘周期數(shù)為38。
假設(shè)延遲槽為一個(gè),對(duì)程序進(jìn)行指令調(diào)度,然后保存到delay-branch.s中。delay-branch.s的指令代碼:.text main: ADDI $r2,$r0,1024 ADD
$r3,$r0,$r0 ADDI $r4,$r0,8 loop:
LW
$r1,0($r2)ADDI $r1,$r1,1 ADDI $r3,$r3,4 SUB
$r5,$r4,$r3 SW
$r1,0($r2)BGTZ $r5,loop ADD
$r7,$r0,$r6 TEQ
$r0,$r0 載入delay-branch.s。打開延遲分支功能。
執(zhí)行該程序,觀察時(shí)鐘周期圖。時(shí)鐘周期圖:
10)記錄執(zhí)行該程序的總的時(shí)鐘周期數(shù)。
程序的總的時(shí)鐘周期數(shù)為31。
11)對(duì)比上述兩種情況下的時(shí)鐘周期圖。12)根據(jù)記錄,比較沒有采用延遲分支和采用了延遲分支的性能之間的不同。論述延遲分支對(duì)CPU性能的作用。
答:比較兩種情況的時(shí)鐘周期總數(shù),可知:在使用延遲槽后,指令在運(yùn)行到跳轉(zhuǎn)指令時(shí),不會(huì)出現(xiàn)延遲等待,則能夠提高CPU的性能。3.4 實(shí)驗(yàn)結(jié)論和實(shí)驗(yàn)心得
實(shí)驗(yàn)結(jié)論:
從前調(diào)度,在任何情況下,被調(diào)度的指令必須與分支無關(guān)。從目標(biāo)處調(diào)度,當(dāng)分支成功時(shí),必須保證在分支失敗時(shí)執(zhí)行被調(diào)度的指令不會(huì)導(dǎo)致錯(cuò)誤,有可能需要復(fù)制指令。延遲可以提高CPU的性能。實(shí)驗(yàn)心得體會(huì):
通過本次實(shí)驗(yàn),我對(duì)指令調(diào)度和延遲分支有了進(jìn)一步的了解和掌握,并掌握了用指令調(diào)度技術(shù)解決指令流水線中的數(shù)據(jù)沖突問題的方法。理解了指令調(diào)度技術(shù)和延遲分支技術(shù)對(duì)CPU性能的改進(jìn)。這對(duì)我以后的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ),讓我不斷提高,增長了我的知識(shí)。
第二篇:電網(wǎng)調(diào)度術(shù)語和操作指令
電網(wǎng)調(diào)度術(shù)語和操作指令匯編 調(diào)度管理
1.1調(diào)度管理范圍
電網(wǎng)設(shè)備運(yùn)行和操作指揮權(quán)限的范圍 1.2調(diào)度指令
電網(wǎng)調(diào)度機(jī)構(gòu)值班調(diào)度員(以下簡稱值班調(diào)度員)對(duì)其下級(jí)調(diào)度機(jī)構(gòu)值班人員或調(diào)度管轄廠、站值班人員(以下簡稱運(yùn)行值班員)發(fā)布有關(guān)運(yùn)行和操作的指令 1.2.1口頭令
由值班調(diào)度員口頭下達(dá)(無須填寫操作票)的調(diào)度指令 1.2.2操作令
值班調(diào)度員對(duì)所管轄設(shè)備進(jìn)行操作,給下級(jí)調(diào)度機(jī)構(gòu)或調(diào)度管轄廠、站運(yùn)行值班員發(fā)布的有關(guān)操作的指令 1.2.2.1單項(xiàng)操作令
值班調(diào)度員向運(yùn)行值班員發(fā)布的單一一項(xiàng)操作的指令 1.2.2.2逐項(xiàng)操作令
值班調(diào)度員向運(yùn)行值班員發(fā)布的操作指令是具體的逐項(xiàng)操作步驟和內(nèi)容,要求運(yùn)行值班員按照指令的操作步驟和內(nèi)容逐項(xiàng)進(jìn)行操作。1.2.2.3綜合操作令
值班調(diào)度員給運(yùn)行值班員發(fā)布的不涉及其他廠站配合的綜合操作任務(wù)的調(diào)度指令。其具體的逐項(xiàng)操作步驟和內(nèi)容,以及安全措施,均由運(yùn)行值班員自行按規(guī)程擬訂。1.3調(diào)度同意。
值班調(diào)度員對(duì)運(yùn)行值班員提出的工作申請(qǐng)及要求等予以同意。1.4調(diào)度許可
設(shè)備由下級(jí)調(diào)度機(jī)構(gòu)管轄,但在進(jìn)行該設(shè)備有關(guān)操作前該級(jí)值班調(diào)度員必須報(bào)告上級(jí)值班調(diào)度員,征得同意。1.5許可操作
在改變電器設(shè)備的狀態(tài)和方式前,根據(jù)有關(guān)規(guī)定,由有關(guān)人員提出操作項(xiàng)目,值班調(diào)度員同意其操作。
1.6配合操作申請(qǐng)
需要上級(jí)調(diào)度機(jī)構(gòu)的值班調(diào)度員進(jìn)行配合操作時(shí),下級(jí)調(diào)度機(jī)構(gòu)的值班調(diào)度員根據(jù)電網(wǎng)運(yùn)行需要提出配合操作申請(qǐng) 1.7配合操作回復(fù)
上級(jí)調(diào)度機(jī)構(gòu)的值班調(diào)度員同意下級(jí)調(diào)度機(jī)構(gòu)的值班調(diào)度員提出的配合操作申請(qǐng),操作完畢后,通知提出申請(qǐng)的值班調(diào)度員配合操作完成情況 1.8直接調(diào)度
值班調(diào)度員直接向運(yùn)行值班員發(fā)布調(diào)度指令的調(diào)度方式(值班調(diào)度員向?qū)⒁唧w執(zhí)行調(diào)度指令的運(yùn)行值班員發(fā)布調(diào)度指令的調(diào)度方式)1.9調(diào)度
1.9.1發(fā)布指令
值班調(diào)度員正式向調(diào)度所屬各運(yùn)行值班員發(fā)布的調(diào)度指令 1.9.2接受指令
運(yùn)行值班員正式接受值班調(diào)度員所發(fā)布的調(diào)度指令 1.9.3復(fù)誦指令 運(yùn)行值班員發(fā)布指令或接受匯報(bào)時(shí),受話方重復(fù)通話內(nèi)容以確認(rèn)的過程。1.9.4回復(fù)指令
運(yùn)行值班員在執(zhí)行完值班調(diào)度員發(fā)布給他的調(diào)度指令后,向值班調(diào)度員報(bào)告已經(jīng)執(zhí)行完調(diào)度指令的步驟、內(nèi)容和時(shí)間等 2 調(diào)度術(shù)語釋疑 2.1開關(guān)和刀閘 2.1.1合上開關(guān)
使開關(guān)由分閘位置轉(zhuǎn)為合閘位置 2.1.2拉開開關(guān)
使開關(guān)由合閘位置轉(zhuǎn)為分閘位置 2.1.3合上刀閘
使刀閘由斷開位置轉(zhuǎn)為接通位置 2.1.4拉開刀閘
使刀閘由接通位置轉(zhuǎn)為斷開位置 2.2開關(guān)跳閘
未經(jīng)操作的開關(guān)三相同時(shí)由合閘轉(zhuǎn)為分閘位置 2.2.1開關(guān)X相跳閘
未經(jīng)操作的開關(guān)X相由合閘轉(zhuǎn)為分閘位置 2.2.2開關(guān)非全相合閘
開關(guān)進(jìn)行合閘操作時(shí)只合上一相或兩相 2.2.3開關(guān)非全相跳閘
未經(jīng)操作的開關(guān)一相或兩相跳閘 2.2.4開關(guān)非全相運(yùn)行
開關(guān)跳閘或合閘等致使開關(guān)一相或兩相合閘運(yùn)行 2.2.5開關(guān)X相跳閘重合成功
開關(guān)X相跳閘后,又自動(dòng)合上X相,未再跳閘 2.2.6開關(guān)跳閘,三相重合成功
開關(guān)跳閘后,又自動(dòng)合上三相,未再跳閘 2.2.7開關(guān)X相跳閘,重合不成功
開關(guān)X相跳閘后,又自動(dòng)合上X相,開關(guān)再自動(dòng)跳開三相 2.2.8開關(guān)跳閘,三相重合不成功
開關(guān)跳閘后,又自動(dòng)合上三相,開關(guān)再自動(dòng)跳開
2.2.9開關(guān)(X相)跳閘,重合閘未動(dòng)跳開三相(或非全相運(yùn)行)開關(guān)(X相)跳閘后,重合閘裝置雖已投入,但未動(dòng)作,XX保護(hù)動(dòng)作跳開三相(或非全相運(yùn)行)2.3繼電保護(hù)裝置 2.3.1將保護(hù)改投跳閘
將保護(hù)由停用或信號(hào)位置改為跳閘位置 2.3.2將保護(hù)改投信號(hào)
將保護(hù)由停用或跳閘位置改為信號(hào)位置 2.3.3將保護(hù)停用
將保護(hù)由跳閘或信號(hào)位置改為停用位置 2.3.4保護(hù)改跳
由于方式的需要,將設(shè)備的保護(hù)改為不跳本設(shè)備開關(guān)而跳其它開關(guān) 跳,某開關(guān)跳閘時(shí),同時(shí)連鎖跳其它開關(guān) 2.3.5投入X設(shè)備X保護(hù)(X段)X設(shè)備X保護(hù)(X段)投入運(yùn)行 2.3.6退出X設(shè)備X保護(hù)(X段)X設(shè)備X保護(hù)(X段)退出運(yùn)行 2.3.7X設(shè)備X保護(hù)(X段)改定值
X設(shè)備X保護(hù)(X段)整定值(阻抗、電壓、電流、時(shí)間等)從某一定值改為另一定值 2.3.8高頻保護(hù)測(cè)試通道
高頻保護(hù)按規(guī)定進(jìn)行通道對(duì)試 2.4合環(huán)、解環(huán) 2.4.1合環(huán)
合上網(wǎng)絡(luò)內(nèi)某開關(guān)(或刀閘)將網(wǎng)絡(luò)改為環(huán)路運(yùn)行 2.4.2同期合環(huán) 檢測(cè)同期后合環(huán)
2.4.3解除同期閉鎖合環(huán) 不經(jīng)同期閉鎖直接合環(huán) 2.4.4差30度合環(huán)
網(wǎng)絡(luò)經(jīng)結(jié)線相位角度差30度的變壓器組合環(huán) 2.4.5解環(huán)
將環(huán)狀運(yùn)行的電網(wǎng),解為非環(huán)狀運(yùn)行 2.5并列、解列 2.5.1核相
用儀表或其它手段對(duì)兩電源或環(huán)路相位檢測(cè)是否相同 2.5.2核對(duì)相序
用儀表或其它手段,核對(duì)兩電源的相序是否相同 2.5.3相位正確
開關(guān)兩側(cè)A、B、C三相相位均對(duì)應(yīng)相同 2.5.4并 列
兩個(gè)單獨(dú)電網(wǎng)使其并為一個(gè)電網(wǎng)運(yùn)行 2.5.5解 列
將一個(gè)電網(wǎng)分成兩個(gè)電氣相互獨(dú)立的部分運(yùn)行 2.6線 路
2.6.1線路強(qiáng)送電
線路開關(guān)跳閘后未經(jīng)處理即行送電 2.6.2線路強(qiáng)送成功
線路開關(guān)跳閘后未經(jīng)處理即行送電,開關(guān)未再跳閘 2.6.3線路強(qiáng)送不成功
線路開關(guān)事故跳閘后未經(jīng)處理即行送電,開關(guān)再跳閘 2.6.4線路試送電
線路事故跳閘經(jīng)處理后的首次送電 2.6.5線路試送成功
線路事故跳閘經(jīng)處理后首次送電正常 2.6.6線路試送不成功
線路事故跳閘處理后首次送電,開關(guān)再跳閘 2.6.7按單電源負(fù)荷線路處理 原為雙電源或環(huán)路,另一電源解列或環(huán)路開環(huán)后變成單電源負(fù)荷線路,線路故障開關(guān)跳閘后的處理,按調(diào)度規(guī)程中有關(guān)負(fù)荷線路故障,開關(guān)跳閘的處理規(guī)定進(jìn)行處理
第三篇:實(shí)驗(yàn)二分支程序 豆丁
微機(jī)《實(shí)驗(yàn)》報(bào)告
實(shí)驗(yàn)名稱 分支程序設(shè)計(jì)實(shí)驗(yàn)
指導(dǎo)教師 曹 丹 華
專業(yè)班級(jí) 光電1007班 姓名 余 冬 學(xué)號(hào) U201013524 序號(hào) 16 聯(lián)系方式 ***
一、任務(wù)要求
1.設(shè)有8bits符號(hào)數(shù)X存于外部RAM單元,按以下方式計(jì)算后的結(jié)果Y也存于外部RAM單元,請(qǐng)按要求編寫程序。
?X2當(dāng)X?40?Y??X/2當(dāng)20?X?40
?當(dāng)X?20?X2.利用51系列單片機(jī)設(shè)計(jì)一個(gè)24小時(shí)制電子時(shí)鐘,電子時(shí)鐘的時(shí)、分、秒數(shù)值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時(shí)開始計(jì)時(shí),為高電平時(shí)停止計(jì)時(shí)。提高部分(選做):
a.實(shí)現(xiàn)4位十進(jìn)制加、減1計(jì)數(shù),千位、百位由P1口輸出;十位、個(gè)位由P2口輸出。利用P3.7狀態(tài)選擇加、減計(jì)數(shù)方式。
b.利用P3口低四位狀態(tài)控制開始和停止計(jì)數(shù),控制方式自定。
二、設(shè)計(jì)思路
任務(wù)1:將位于2000H中的X取出,判斷是否為負(fù)數(shù),若為負(fù)數(shù),則對(duì)X按位取反,結(jié)果送入3000H單元。若為正數(shù),則將X的值與40比較,若大于等于40,則將X平方后的結(jié)果送入3000H低字節(jié)和高字節(jié)單元中。若X小于40,則將X的值與20比較,若X>20,則將除以2后存入3000H單元。否則對(duì)X按位取反,結(jié)果送入3000H單元。
其中,按位取反使用CPL指令實(shí)現(xiàn):除以2運(yùn)算使用2進(jìn)制位帶左移實(shí)現(xiàn):平方運(yùn)算使用MUL指令實(shí)現(xiàn)。并且平方運(yùn)算后的結(jié)果用2個(gè)存儲(chǔ)單元保存。任務(wù)2:
先將P2、P1和P0端口置0,注意P0沒有鎖存功能,用R5存儲(chǔ)P0的內(nèi)容,并將R5也置0.然后根據(jù)P3.0的值來判斷是否開始計(jì)時(shí),計(jì)時(shí)開始后等待一秒,而后P2加1,判斷P2與60的大小,若P2小于60,則重新判斷P3.0的值來決定是否開始計(jì)時(shí)。若P2等于60,則將P2置0,同時(shí)P1加1.再判斷P1與60的大小,若小于60,則重新看P3.0的值是否開始計(jì)時(shí)。若P1等于60,則將P1置0,同時(shí)R5加1后將其值賦給P0。再判斷R5與24的大小,若R5小于24,則重新判斷P3.0的值來看是否開始計(jì)時(shí)。若R5等于24,則將置1后將其值賦給P0。等待一秒后又再次判斷P3.0的值,目的是保證當(dāng)改變P3.0后程序能立即做出反應(yīng)。
三、資源分配
1.2000H:存入8bits符號(hào)數(shù)X 3000H、3001H:保存計(jì)算后的結(jié)果 DPTR:對(duì)片外RAM進(jìn)行讀寫操作 R1:減法運(yùn)算時(shí)保存A的值 2.R5:暫時(shí)存儲(chǔ)P0端口的值
R0、R1、R2、R3、R4:為實(shí)現(xiàn)延時(shí)一秒而指定操作的周期數(shù) P0、P1、P2:分別輸出時(shí)、分、秒數(shù)值 P3:起計(jì)時(shí)控制作用
四、流程圖1、2.五、源代碼(含文件頭說明、資源使用說明、語句行注釋)1.M EQU 10H ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV DPTR,#2000H MOV A,#10H
MOVX @DPTR,A;MOVX A,@DPTR
JB ACC.7,LOOP2 MOV R1,A
CLR C
SUBB A,#40H
MOV A,R1
JC LOOP1
MOV B,A MUL AB
MOV DPTR,#3000H MOVX @DPTR,A
MOV A,B INC DPTR MOVX @DPTR,A
DONE:SJMP DONE LOOP1:MOV R1,A
CLR C SUBB A,#20H
MOV A,R1
JC LOOP2
JZ LOOP2
CLR C
RRC A
將初始值存入2000H單元
;從2000H單元讀出M的值
;判斷M是否為負(fù),若為負(fù),跳轉(zhuǎn)LOOP2;暫時(shí)保存A的值
;將M的值與40進(jìn)行比較;將減法運(yùn)算之前的值再賦給A;若M的值小于40,跳轉(zhuǎn)LOOP1
;進(jìn)行M的平方運(yùn)算
;低位存入3000H單元
;高位存入3001H單元;暫時(shí)保存A的值
;將M的值與20進(jìn)行比較;將減法運(yùn)算之前的值再賦給A;若M小于20,跳轉(zhuǎn)LOOP2;若M等于20,跳轉(zhuǎn)LOOP2;進(jìn)行除了操作 OVER:MOV DPTR,#3000H MOVX @DPTR,A SJMP DONE
;字節(jié)取反
;將結(jié)果存于3000H單元
LOOP2:CPL A
SJMP OVER END
2、ORG 0000H LJMP MAIN ORG 0300H MAIN:MOV P2,#00H;將P2端口置0 MOV P1,#00H MOV P0,#00H MOV R5,#00H
;將P1端口置0;將P0端口置0
;將P0端口的暫時(shí)存儲(chǔ)器置0 START:JB P3.0,START;判斷P3.0是否為0,若為0,則向下執(zhí)行 LCALL DELAY;調(diào)用延時(shí)子程序 HERE: JB P3.0,HERE MOV A,P2
ADD A,#01H DA A MOV P2,A MOV A,P1 ADD A,#01H DA A MOV P1,A CLR C SUBB A,#60H JC LOOP2 MOV P1,#00H MOV A,R5 ADD A,#01H
;將秒鐘值加強(qiáng),并作十進(jìn)制修正
DA A MOV R5,A MOV P0,R5 CLR C SUBB A,#24H
JC LOOP3 MOV R5,#00H MOV P0,R5 MOV R0,#13 DELAY9:NOP NOP DJNZ R0,DELAY9 AJMP START LOOP3:MOV R0,#13 DELAY8:NOP NOP
DJNZ R0,DELAY8 NOP NOP NOP LJMP START LOOP2:MOV R0,#16 DELAY7:NOP
NOP DJNZ R0,DELAY7 NOP NOP NOP AJMP START LOOP1:MOV R0,#19H DELAY6:NOP NOP
DJNZ R0,DELAY6 NOP AJMP START DELAY:MOV R2,#6H DELAY3:MOV R1,#255 DELAY2:MOV R0,#255 DELAY1:NOP
NOP NOP DJNZ R0,DELAY1 DJNZ R1,DELAY2 DJNZ R2,DELAY3 MOV R4,#58 DELAY5:MOV R3,#255 DELAY4:NOP DJNZ R3,DELAY4
DJNZ R4,DELAY5 RET END
六、程序測(cè)試方法與結(jié)果、軟件性能分析 1.a.賦值X為-2,截圖如下 :
B.賦值X為16,截圖如下:
C.賦值X為22,截圖如下:
D.賦值X為42,截圖如下:
2.第一步,當(dāng)程序剛開始運(yùn)行的時(shí)候,時(shí)分秒全部清零,如下圖:
第二步,當(dāng)秒向分進(jìn)位時(shí),前后對(duì)比如下:
運(yùn)行前
運(yùn)行后 由上可以看出前后剛好延時(shí)一秒。
第三步,當(dāng)分向時(shí)進(jìn)位時(shí),前后對(duì)比如下:
運(yùn)行前
運(yùn)行后
由上可以看出分向時(shí)進(jìn)位時(shí),前后延時(shí)一秒。第四步,到23:59:59時(shí),運(yùn)行前后如下:
運(yùn)行前
運(yùn)行后
由上也可以看出,分向時(shí)進(jìn)位也延時(shí)一秒。綜上,軟件性能良好。
七、思考題
1.實(shí)現(xiàn)多分支結(jié)構(gòu)程序的主要方法有哪些?舉例說明、答:若分支比較少,則通常用條件轉(zhuǎn)移指令來實(shí)現(xiàn)。
例如,判斷兩個(gè)單字節(jié)無符號(hào)數(shù)的大小,分別存于片內(nèi)RAM的40H和41HUJ單元)并把人數(shù)存入單元??梢杂门袛郈Y的轉(zhuǎn)移指令來實(shí)現(xiàn),程序如下: JUDGE: MOM A,40H CLR C SUBB A,41H JNC LP MOV 42H,41H RET LP:MOV 42H RET 若分支比較多,則可采用的有三種形式:分支地址表、轉(zhuǎn)移指令表、地址偏移量表。具體例子不詳述。
2.在編程上,十進(jìn)制加1計(jì)數(shù)器與十六進(jìn)制加1計(jì)數(shù)器的區(qū)別是什么?怎樣用十進(jìn)制加法指令實(shí)現(xiàn)減1計(jì)數(shù)?
答:十進(jìn)制加法1計(jì)數(shù)器進(jìn)行加1操作時(shí),每加一次1,就得將每一字節(jié)進(jìn)行十進(jìn)制修正;而十六進(jìn)制加法是相當(dāng)于單字節(jié)或多字節(jié)的加法運(yùn)算,其中被加數(shù)是計(jì)數(shù)器的當(dāng)前值,加數(shù)始終是1.十進(jìn)制加法進(jìn)行減1計(jì)數(shù)時(shí),應(yīng)該將計(jì)數(shù)器的當(dāng)前值與-1的補(bǔ)碼FFH相加,然后將每一字節(jié)進(jìn)行修正,從而實(shí)現(xiàn)十進(jìn)制減1計(jì)數(shù)。
八、心得
本次實(shí)驗(yàn)遇到的問題包括時(shí)鐘的程序設(shè)計(jì)和流程圖的繪制??闯鰜?,單片機(jī)的基礎(chǔ)知識(shí)還沒掌握好,應(yīng)復(fù)習(xí)相應(yīng)的課件,補(bǔ)充缺陷的地方。下次實(shí)驗(yàn)再繼續(xù)努力。說明:
標(biāo)題:黑體,小四號(hào)
正文:宋體,五號(hào),1.5倍行距
流程圖使用 SmartDraw7
或Visio軟件繪制
第四篇:單片機(jī)實(shí)驗(yàn)9 多分支程序設(shè)計(jì)
實(shí)驗(yàn)9 多分支程序設(shè)計(jì)
1、實(shí)驗(yàn)內(nèi)容
用P1.0、P1.1控制流水燈的變化
P1.0、P1.1=00燈全滅
P1.0、P1.1=01單燈亮左循環(huán)
P1.0、P1.1=10單燈亮右循環(huán)
P1.0、P1.1=11雙燈亮左循環(huán)
燈亮的時(shí)時(shí)為1秒。用軟件延時(shí)實(shí)現(xiàn)。*用T0定時(shí)選作。
2、實(shí)驗(yàn)步驟
1)打開PV32編程序。匯編正確進(jìn)入調(diào)試界面。否則修改程序重新匯編直到通過。
2)打開P0、P1窗口給
3)調(diào)試燈全滅、單燈亮左循環(huán)、單燈亮右循環(huán)、雙燈亮左循環(huán)程序觀察并記祿寄存器、內(nèi)存的變化。判斷程序是否正確。若發(fā)現(xiàn)問題重返編輯界面,修改、存盤、匯編。返回調(diào)試界面調(diào)試通過。
4)設(shè)斷點(diǎn)調(diào)試主程序觀察并記祿寄存器、內(nèi)存的變化。判斷程序是否正確。若發(fā)現(xiàn)問題重返編輯界面,修改、存盤、匯編。返回調(diào)試界面調(diào)試通過。
首先將P1.0、P1.1置00觀察P2窗口燈是否全滅,然后改變P1.0、1.1的設(shè)置觀察流水燈運(yùn)行是否正確。
5)流水燈運(yùn)行中改變P1.0、1.1看流燈能否隨之變化。若執(zhí)行正確程序通過。否則在每個(gè)流水子程序中加入讀P1口散轉(zhuǎn)子程序。
3.實(shí)驗(yàn)報(bào)告
1.寫出主程序流程圖、子程序流程圖、程序清單
2.根據(jù)記淥數(shù)據(jù)給程序加注解
3.調(diào)試心得
第五篇:基本邏輯指令綜合設(shè)計(jì)實(shí)驗(yàn)
實(shí)驗(yàn)六 基本邏輯指令綜合設(shè)計(jì)實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康模?/p>
1.在掌握邏輯指令的基本應(yīng)用基礎(chǔ)上,通過綜合設(shè)計(jì)實(shí)驗(yàn)的訓(xùn)練,達(dá)到提高綜合分析問題、解決問題能力的目的。
2.通過程序的調(diào)試,進(jìn)一步掌握PLC的編程技巧和編程調(diào)試方法。
3.以工程應(yīng)用為出發(fā)點(diǎn),強(qiáng)化學(xué)生的工程意識(shí)。
二、實(shí)驗(yàn)設(shè)備:
PLC實(shí)驗(yàn)臺(tái):主機(jī)掛件(西門子S7-300 PLC)、基本邏輯指令實(shí)驗(yàn)掛件、繼電器掛件、直線運(yùn)動(dòng)模塊、PC機(jī)、連接導(dǎo)線
三、預(yù)習(xí)內(nèi)容:
1.熟悉西門子STEP 7編程軟件的使用方法。
2.熟悉西門子S7-300 PLC的基本位設(shè)備:I、Q、M、T、C。3.熟悉基本邏輯指令的編程方法。4.熟悉典型繼電器控制電路。
5.了解PLC設(shè)計(jì)控制系統(tǒng)的基本方法和步驟。
6.本次實(shí)驗(yàn)為一般設(shè)計(jì)類實(shí)驗(yàn),要求學(xué)生在實(shí)驗(yàn)前根據(jù)具體內(nèi)容完成以下任務(wù):(1)確定輸入/輸出信號(hào)
(2)分析控制要求,簡單畫出PLC電氣原理圖(按實(shí)驗(yàn)內(nèi)容要求)(3)編寫PLC(梯形圖)程序
(4)寫出程序調(diào)試步驟(5)寫出程序運(yùn)行結(jié)果
四、實(shí)驗(yàn)步驟:
1.電路連接好后經(jīng)指導(dǎo)教師檢查無誤,并將RUN/STOP開關(guān)置于STOP后,接入220V交流電源.2.在PC機(jī)啟動(dòng)西門子STEP 7編程軟件,新建工程,進(jìn)入編程環(huán)境。
3.根據(jù)實(shí)驗(yàn)內(nèi)容,在STEP 7編程環(huán)境下輸入梯形圖程序,轉(zhuǎn)換后,下載到PLC中。4.程序運(yùn)行調(diào)試并修改。5.寫實(shí)驗(yàn)報(bào)告。
五、實(shí)驗(yàn)內(nèi)容:
1.小車往復(fù)運(yùn)動(dòng)控制程序
本程序是以檢測(cè)為原則,實(shí)現(xiàn)PLC順控 系統(tǒng)設(shè)計(jì)。
(1)控制要求:
小車在初始狀態(tài)時(shí)停在中間,限位開關(guān) I0.0=ON;按下啟動(dòng)按鈕I0.3,小車按圖4.1所示
圖4.1 小車往復(fù)運(yùn)動(dòng)示意圖
順序往復(fù)運(yùn)動(dòng),按下停止按鈕I0.4,小車停在初始位置(中間)(2).設(shè)計(jì)指導(dǎo):
① 該程序?yàn)殡妱?dòng)機(jī)正、反轉(zhuǎn)控制的具體工程應(yīng)用。② 該程序的關(guān)鍵問題:按下停止按鈕時(shí),小車并不是立即停止,而是要回到原位(中間位置)才停,所以要對(duì)停止信號(hào)加自鎖保持,小車回到原位后再清除停止信號(hào)。2.電動(dòng)機(jī)Y-△降壓啟動(dòng)控制程序
本程序是用PLC改造典型繼電器電路的應(yīng)用(1)控制要求:
圖4.2所示為籠型異步電動(dòng)機(jī)Y-Δ降壓起動(dòng)繼電接觸器控制系統(tǒng)圖,寫出系統(tǒng)工作流程,設(shè)計(jì)用PLC改造后的電氣原理圖和控制程序。
(2)設(shè)計(jì)指導(dǎo):
圖4.2 電動(dòng)機(jī)Y-△降壓啟動(dòng)電路
① 該程序?yàn)殡妱?dòng)機(jī)降壓啟動(dòng)控制的具體工程應(yīng)用,學(xué)生先分析圖4.2后,確定輸入/輸出信號(hào),畫PLC電氣原理圖。
② 該程序的關(guān)鍵問題:程序中要考慮PLC的工作方式與繼電器控制系統(tǒng)不同,PLC沒有先斷后合的概念,所以在實(shí)際工程應(yīng)中,PLC編程時(shí)要人為加入切換延時(shí),即電動(dòng)機(jī)Y形接法運(yùn)行一段時(shí)間后,切除Y形接法的接觸器線圈后延時(shí)一點(diǎn)時(shí)間(2秒)后,再接通電動(dòng)機(jī)△形接法的接觸器線圈,使電動(dòng)機(jī)全壓運(yùn)行。定時(shí)器的編程學(xué)生可參考本書實(shí)驗(yàn)二中的相關(guān)內(nèi)容進(jìn)行設(shè)計(jì)
六、實(shí)驗(yàn)報(bào)告
本次實(shí)驗(yàn)為綜合設(shè)計(jì)型實(shí)驗(yàn),要求學(xué)生在實(shí)驗(yàn)前加強(qiáng)預(yù)習(xí),實(shí)驗(yàn)過程中重點(diǎn)是運(yùn)行、調(diào)試及修改自己設(shè)計(jì)的程序。本次實(shí)驗(yàn)報(bào)告的內(nèi)容主要是:
1.實(shí)驗(yàn)?zāi)康模罕敬螌?shí)驗(yàn)主要達(dá)到的要求及目的。
2.實(shí)驗(yàn)設(shè)備:本次實(shí)驗(yàn)的主要設(shè)備。
3.預(yù)習(xí)內(nèi)容:預(yù)習(xí)本次實(shí)驗(yàn)內(nèi)容后,按實(shí)驗(yàn)內(nèi)容畫出PLC電氣原理圖、PLC梯形圖程序以及程序調(diào)試步驟。
4.實(shí)驗(yàn)具體步驟:重點(diǎn)寫程序的運(yùn)行、調(diào)試、修改的過程。
5.實(shí)驗(yàn)程序上機(jī)驗(yàn)證:寫出運(yùn)行后得到的結(jié)果,并分析與預(yù)習(xí)中的結(jié)果是否相同 6.心得體會(huì):本次實(shí)驗(yàn)中遇到的問題、解決方法及收獲。
注:本次實(shí)驗(yàn)為綜合設(shè)計(jì)型實(shí)驗(yàn),要求學(xué)生的實(shí)驗(yàn)報(bào)告中必須畫出PLC電氣原理圖、以及寫出最終的梯形圖程序。