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

正文內(nèi)容

mcs51程序設(shè)計(jì)(編輯修改稿)

2024-09-01 10:02 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 元的起始地址 MOV A, @R0 ;讀出數(shù)送 A 暫存 MOV DPTR, 20xxH ;定外部存儲(chǔ)器存數(shù)單元的起始地址 MOVX @DPTR, A ;送數(shù)到 20xxH 單元 MOV R7, 08 ;定送數(shù)的個(gè)數(shù) LOOP: INC R0 ;取數(shù)單元加 1,指向下一個(gè)單元 INC DPTR ;存數(shù)單元加 1,指向下一個(gè)單元 MOV A, @R0 ;讀出數(shù)送 A 暫存 MOVX @DPTR, A ;送數(shù)到新單元 DJNZ R7, LOOP ; 8 個(gè)送完了嗎?未完轉(zhuǎn)到 LOOP 繼續(xù)送 END 送完了順序執(zhí) 行,結(jié)束。 程序初步編好后,在仿真軟件中調(diào)試,調(diào)試時(shí)先打開 Franklin 仿真軟件的數(shù)據(jù)窗口( Data View),在窗口中的 40H 為起點(diǎn)的 8 個(gè)單元中任意送數(shù),再打開 Franklin 仿真軟件的外部數(shù)據(jù)窗口( Xdata View),首先全速運(yùn)行程序,看所有數(shù)據(jù)是否傳到 20xxH為起點(diǎn)的 8 個(gè)單元中,若不正確,再單步運(yùn)行程序,看程序的每一步是否正確,若不正確,再反復(fù)修改,直到正確為止。 例 12: 將外部存儲(chǔ)器以 20xxH 為起始地址的 8 個(gè)單元中的內(nèi)容傳到內(nèi)部 RAM以 40H為起始地址的 8 個(gè)單元中。 仿照例 2 我們可寫 出程序如下: ORG 0000H MOV DPTR, 20xxH ;定外部存儲(chǔ)器取數(shù)單元的起始地址 MOVX A, @DPTR ;讀出數(shù)送 A 暫存 MOV R0, 40H ;定內(nèi)部 RAM 存數(shù)單元的起始地址 MOV @R0 , A ;送數(shù)到 40H 單元 MOV R7, 08 ;定送數(shù)的個(gè)數(shù) LOOP: INC R0 ;取數(shù)單元加 1,指向下一個(gè)單元 INC DPTR ;存數(shù)單元加 1,指向下一個(gè)單元 MOV A, @DPTR ;讀出數(shù)送 A 暫存 MOVX @R0, A ;送數(shù)到新單元 DJNZ R7, LOOP ; 8 個(gè)送完了嗎?未完轉(zhuǎn)到 LOOP 繼續(xù)送 END 送完了順序執(zhí)行,結(jié)束。 程序初步編好后,在仿真軟件中調(diào)試,調(diào)試時(shí)先打開 Franklin 仿真軟件的外部數(shù)據(jù)窗口( Xdata View),在外部數(shù)據(jù) 窗口( Xdata View)中的 20xxH 為起點(diǎn)的 8 個(gè)單元中任意送數(shù),再打開 Franklin 仿真軟件的內(nèi)部數(shù)據(jù)窗口( Data View)。首先全速運(yùn)行程序,看所有數(shù)據(jù)是否傳到 40H 為起點(diǎn)的 8 個(gè)單元中,若不正確,再單步運(yùn)行程序,看程序的每一步是否正確,若不正確,再反復(fù)修改,直到正確為止,若正確說明此程序編好了。 例 13: 將外部存儲(chǔ)器以 20xxH 為起始地址的 8 個(gè)單元中的內(nèi)容傳到外部存儲(chǔ)器以4000H 為起始地址的 8 個(gè)單元中。 編程時(shí)可以沿用以上編程思路,但在循環(huán)時(shí)要將 DPTR 分成兩個(gè)字節(jié),即 DPH 和 DPL,只要 這樣改動(dòng)就可編程如下: ORG 0000H MOV R2, 00H ;定外部存儲(chǔ)器取數(shù)單元的起始地址低字節(jié) MOV R3, 20H ;定外部存儲(chǔ)器取數(shù)單元的起始地址高字節(jié) MOV R4, 00H ;定外部存儲(chǔ)器存數(shù)單元的起始地址低字節(jié) MOV R5, 40H ;定外部存儲(chǔ)器存數(shù)單元的起始地址高字節(jié) MOV R7, 08 ;定送數(shù)的個(gè)數(shù) LOOP: MOV DPL, R2 MOV DPH, R3 MOV A, @DPTR ;讀出 20xx 單元的數(shù)送 A 暫存 MOV DPL, R4 MOV DPH, R5 MOVX @DPTR, A ;送數(shù)到 4000H 單元 INC R2 ;取數(shù)單元加 1,指向下一個(gè)單元 INC R4 ;存數(shù)單元加 1,指向下一個(gè)單元 DJNZ R7, LOOP ; 8 個(gè)送完了嗎?未完轉(zhuǎn)到 LOOP 繼續(xù)送 END 送完了順序執(zhí)行,結(jié)束。 程序初步編好后,在仿真軟件中調(diào)試,調(diào)試時(shí)先打開 Franklin 仿真軟件的外部數(shù)據(jù)窗口( Xdata View),在外部數(shù)據(jù)窗口( Xdata View)中的 20xxH 為起點(diǎn)的 8 個(gè)單元中任意送數(shù),再又打開一個(gè) Franklin 仿真軟件的外部數(shù)據(jù)窗口( Xdata View)。首先全速運(yùn)行程序,看所有數(shù)據(jù)是否傳到 4000H 為起點(diǎn)的 8 個(gè)單元中,若不正確,再單步運(yùn)行程序,看程序的每一步是否正確,若不正確,再反復(fù)修改,直到正確為止。 此程序傳數(shù)的最大個(gè)數(shù)為 FFH 即 256 個(gè),超過此數(shù)該程序就有問題,該問題出在高字節(jié)不能改變,要使高字節(jié)也能變,程序要作如下變動(dòng): ORG 0000H MOV R2, 00H ;定外部存儲(chǔ)器取數(shù)單元的起始地址低字節(jié) MOV R3, 20H ;定外部存儲(chǔ)器取數(shù)單元的起始地址高字節(jié) MOV R4, 00H ;定外部存儲(chǔ)器存數(shù)單元的起始地址低字節(jié) MOV R5, 40H ;定外部存儲(chǔ)器存數(shù)單元的起始地址高字節(jié) MOV R6, 08H ;定送數(shù)的個(gè)數(shù)低字 節(jié) MOV R7, 04H ;定送數(shù)的個(gè)數(shù)高字節(jié) MOV A, R7 JZ LOP2 JNZ LOP ;以上三句是判一下 R7 高字節(jié)是否為 0 LOP1: MOV DPL, R2 MOV DPH, R3 MOV A, @DPTR ;讀出 20xx 單元的數(shù)送 A 暫存 INC DPTR ;取數(shù)單元加 1,指向下一個(gè)單元 MOV R2, DPL MOV R3, DPH ;新地址送 R R3,為送下一個(gè)作準(zhǔn)備 MOV DPL, R4 MOV DPH, R5 MOVX @DPTR, A ;送數(shù)到 4000H 單元 INC DPTR ;存數(shù)單元加 1,指向下一個(gè)單元 MOV R4, DPL MOV R5, DPH ;新地址送 R R5,為送下一個(gè)作準(zhǔn)備 LOP: DJNZ R7, LOP1 ;高字節(jié)送完了嗎?未完轉(zhuǎn)到 LOP1 繼續(xù)送 LOP2: DJNZ R6, LOP1 ;未完接著轉(zhuǎn)去送低字節(jié),完了順序執(zhí)行, END ;結(jié)束程序。 象這樣的小程序很有用的,一般將它編寫成通用的子程序: MOVE: MOV DPL, R2 MOV DPH, R3 MOVX A, @DPTR MOV DPL, R4 MOV DPH, R5 MOVX A, @DPTR CJNE R2, 0FFH, MOV1 INC R3 MOV1: INC R2 CJNE R2, 0FFH, MOV2 INC R5 MOV2: INC R4 CJNE R6, 00H, MOV3 CJNE R7, 00H, MOV4 MOV3: DEC R6 SJMP MOVE MOV4: DEC R6 DEC R7 SJMP MOVE RET 程 序中 R R3 定數(shù)據(jù)塊的首地址, R R5 定數(shù)據(jù)塊目標(biāo)地址, R6 為傳送多少個(gè)數(shù)的低字節(jié), R7 為傳送多少個(gè)數(shù)的高字節(jié),使用此子程序時(shí)只要將這 6 個(gè)數(shù)送入,調(diào)用此程序就行。此章講的所有程序都應(yīng)在 Franklin 仿真軟件中調(diào)試,調(diào)試是研究程序、讀懂程序、學(xué)習(xí)編寫程序的過程。 多重循環(huán)程序 如果在一個(gè)循環(huán)體中又包含了其他的循環(huán)程序,即循環(huán)中還套著循環(huán),這種程序稱為多重循環(huán)程序。 例 14: 10 秒延時(shí)程序 延時(shí)程序與 MCS51 執(zhí)行指令的時(shí)間有關(guān),如果使用 6MHz 晶振,一個(gè)機(jī)器周期為2μ s,計(jì)算出執(zhí)行一條指令以至一個(gè)循環(huán)所需要的時(shí)間,給出相應(yīng)的循環(huán)次數(shù),便能達(dá)到延時(shí)的目的。 程序如下: DEL: MOV R5, 100 DEL0: MOV R6, 200 DEL1: MOV R7, 248 DEL2: DJNZ R7, DEL2 ; 248*+4 DJNZ R6, DEL1 ;( 248*2+4) *200+4 DJNZ R5, DEL0 ;( 248*+4) *200+4) *100+4 RET 上例延時(shí)程序?qū)嶋H延時(shí)為 秒。它是一個(gè)三重循環(huán)程序,利用程序嵌套的方法對(duì)時(shí)間實(shí)行延遲是程序設(shè)計(jì)中常用的方法。使用多重循環(huán)程序時(shí),必須注意以下幾點(diǎn): ( 1)循環(huán)嵌套,必須層次分明,不允許產(chǎn)生內(nèi)外層循環(huán)交叉。 ( 2)外循環(huán)可以一層層向內(nèi)循環(huán)進(jìn)入,結(jié)束時(shí)由里往外一層層退出。 ( 3)內(nèi)循環(huán)體可以直接轉(zhuǎn)入外循環(huán)體,實(shí)現(xiàn)一個(gè)循環(huán)由多個(gè)條件控制的循環(huán)結(jié)構(gòu)方式。 據(jù)以上程序可編出多重循環(huán)程序,也可 編出一(單)重循環(huán)程序 LOOP: MOV R7, 0FFH LOP1: DJNZ R7, LOP1 RET 也可編出兩重循環(huán)程序?yàn)椋? DEL0: MOV R6, 200 DEL1: MOV R7, 248 DEL2: DJNZ R7, DEL2 DJNZ R6, DEL1 RET 例 15 冒泡程序 設(shè)有 N 個(gè)數(shù),它們依次存放于 LIST 地址開始的存儲(chǔ) 區(qū)域中,將 N 個(gè)數(shù)比較大小后,使它們按由小到大(或由大到小)的次序排列,存放在原存儲(chǔ)區(qū)域中。 編制該程序的方法:依次將相鄰兩個(gè)單元的內(nèi)容作比較,即第一個(gè)數(shù)和第二個(gè)數(shù)比較,第二個(gè)數(shù)和第三個(gè)數(shù)比較??,如果符合從小到大的順序則不改變它們?cè)趦?nèi)存中的位置,否則交換它們之間的位置。如此反復(fù)比較,直至數(shù)列排序完成為止。 由于在比較過程中將小數(shù)(或大數(shù))向上冒,因此這種算法稱為“冒泡法”或稱排序法,它是通過一輪一輪的比較, 第一輪經(jīng)過六次兩兩比較后,得到一個(gè)最大數(shù)。 第二輪經(jīng)過五次兩兩比較后,得到次大數(shù)。 每 輪比較后得到本輪最大數(shù)(或最小數(shù)),該數(shù)就不再參加下一輪的兩兩比較,故進(jìn)入下一輪時(shí),兩兩比較次數(shù)減 1。為了加快數(shù)據(jù)排序速度,程序中設(shè)置一個(gè)標(biāo)志位,只要在比較過程中兩數(shù)之間沒有發(fā)生過交換,就表示數(shù)列已按大小順序排列了。可以結(jié)束比較。 設(shè)數(shù)列首地址在 R0 寄存器中, R2 為外循環(huán)次數(shù)計(jì)數(shù)器, R3 為內(nèi)循環(huán)次數(shù)計(jì)數(shù)器,R1 為交換標(biāo)志。 程序如下: ORG 8000H MOV R2, CNT1 ;數(shù)列個(gè)數(shù) 1 LOOP1: MOV A, R2 ;外循環(huán)計(jì)數(shù)值 MOV R3, A ;內(nèi)循環(huán)計(jì)數(shù)值 MOV R1, 01 ;交換標(biāo)志置 1 LOOP2: MOV A, @R0 ;取數(shù)據(jù) MOV B, A ;暫存 B INC R0 CLR C SUBB A,
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1