狠狠干影院/欧美午夜电影在线观看/高黄文/国产精品一区二区在线观看完整版

單片機(jī)實(shí)驗(yàn)報(bào)告1

| 瀏覽次數(shù):

 單片機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)一

 數(shù)據(jù)傳送 (RA M – 〉XRA M)

 一、實(shí)驗(yàn)?zāi)康?/p>

 熟悉星研集成環(huán)境軟件或熟悉 Keil C51集成環(huán)境軟件得使用方法。

 熟悉 MCS51 匯編指令,能自己編寫簡(jiǎn)單得程序,掌握數(shù)據(jù)傳輸?shù)梅椒ā?/p>

 二、實(shí)驗(yàn)內(nèi)容

 1、熟悉星研集成環(huán)境軟件或熟悉Keil C51 集成環(huán)境軟件得安裝與使用方法。

 2、編寫程序,實(shí)現(xiàn)內(nèi)外部數(shù)據(jù)段得傳送、校驗(yàn)。

 三、程序框圖

 開(kāi)始 堆棧指針初始化計(jì)數(shù)器、地址初始化內(nèi)部RAM數(shù)據(jù)傳送外部RAM一次地址指針+1

  計(jì)數(shù)器-1=0?計(jì)數(shù)器、地址指針復(fù)位取內(nèi)部RAM和對(duì)應(yīng)的外部RAM比較是否相等地址指針+1

 計(jì)數(shù)器-1=0?傳送正確傳送錯(cuò)誤結(jié)束NNYYYN數(shù)據(jù)傳送程序框圖 四、實(shí)驗(yàn)步驟

 MAR 據(jù)數(shù)部外測(cè)檢,序程試調(diào)式方點(diǎn)斷、步單用使;據(jù)數(shù)入輸中HF3~ H03 MAR 部?jī)?nèi)在?得 1000H ~100FH 中得內(nèi)容。熟悉查瞧特殊功能寄存器、內(nèi)部數(shù)據(jù) RAM、外部數(shù)據(jù)空間得各種方法. 五、程序清單

 ;將內(nèi)部RAM Address1 開(kāi)始得 16個(gè)字節(jié)送到外部RAM從 Address2開(kāi)始得單元里,再作比較。

 Address1 DATA 30H

 Address2 XDATA 1000H

  ORG 0000H

  LJMP STAR

  ORG 0100H

 STAR: MOV SP,#60H

  MOV R0,#Address1

  MOV DPTR,#Address2

  MOV R7,#10H

 STAR1: MOV A,R0 ;傳送

  MOVX DPTR,A

  INC R0

  INC DPTR

  DJNZ R7,STAR1

  MOV R0,#Address1

  MOV DPTR,#Address2

  MOV R7,#10H

 STAR2: MOV B,R0 ;比較

 MOVX A,DPTR

  CJNE A,B,STAR3

  INC R0

  INC DPTR

  DJNZ R7,STAR2

  SJMP $ ;傳送正確 STAR3: SJMP $ ;傳送錯(cuò)誤

 END

  實(shí)驗(yàn)二

 雙字節(jié) D BCD 碼( ( 十進(jìn)制數(shù)) ) 加法

 一、實(shí)驗(yàn)?zāi)康?/p>

 熟悉51 匯編指令,學(xué)會(huì)使用星研集成環(huán)境軟件,能自己編寫簡(jiǎn)單得程序,熟悉BCD 碼,了解如何調(diào)用系統(tǒng)提供得子程序. 二、實(shí)驗(yàn)內(nèi)容

 從鍵盤上輸入4位被加數(shù)、加數(shù),實(shí)現(xiàn)雙字節(jié) BCD 碼(四位數(shù))得加法,結(jié)果顯示在數(shù)碼管上;熟悉使用斷點(diǎn)、單步進(jìn)入、單步、運(yùn)行到光標(biāo)處、修改 PC 指針、全速運(yùn)行等各種調(diào)試手段;熟悉查瞧特殊功能寄存器、內(nèi)部數(shù)據(jù)RAM、外部數(shù)據(jù)空間得各種方法。

 三、實(shí)驗(yàn)框圖

 開(kāi)始初始化堆棧設(shè)定"先清LED,再接收鍵輸入"標(biāo)志通過(guò)鍵盤獲得4位被加數(shù)(壓縮BCD碼)置位"接收到第一個(gè)鍵后才清除LED"標(biāo)志通過(guò)鍵盤獲得4位加數(shù)(壓縮BCD碼)被加數(shù)與加數(shù)的低位字節(jié)不帶進(jìn)位加法被加數(shù)與加數(shù)的高位字節(jié)帶進(jìn)位加法十進(jìn)制調(diào)整十進(jìn)制調(diào)整壓縮BCD碼(結(jié)果)轉(zhuǎn)換為非壓縮BCD碼高位0消隱顯示結(jié)果雙字節(jié)BCD加法程序框圖

 四、實(shí)驗(yàn)步驟

 、1 :明說(shuō)線連?D3 區(qū) :CLK -- B2區(qū):2M D3 區(qū) :CS -- A3 區(qū):CS5 D3區(qū) :A0 -— A3區(qū):A0 2、在 F4 區(qū)得鍵盤上輸入 4 位被加數(shù)、加數(shù) 3、結(jié)果顯示在 F4 區(qū)得數(shù)碼管上 五、程序清單

 EXTRN CODE(Display8, GetBCDKey)

  Buffer DATA 30H ;8 字節(jié)顯示緩沖區(qū) F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(被加數(shù))

 SETB F1 ;接收到第一個(gè)鍵,才清除顯示

 MOV R0,#buffer+4

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(加數(shù))

  MOV A,buffer+1

  ADD A,buffer+5

  DA A

  MOV buffer+5,A

  MOV A,buffer

  ADDC A,buffer+4

  DA A

  MOV buffer+4,A

  CLR A

  RLC A

 Display: PUSH ACC ;顯示結(jié)果

 MOV R0,#buffer

  MOV A,buffer+5 ;低位

 ACALL B1toB2 ;壓縮 BCD 碼轉(zhuǎn)換成非壓縮 BCD 碼

 MOV A,buffer+4 ;高位

 ACALL B1toB2

  POP ACC ;進(jìn)位

 ACALL B1toB2

  MOV R0,#10H ;最高二位消隱

 INC R0

  MOV R0,#10H

  MOV R0,#buffer+5

  MOV R7,#5

  ACALL BlackDisplay ;將高位 0 消隱

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;將一個(gè)字節(jié)壓縮 BCD 碼轉(zhuǎn)換成二個(gè)字節(jié)非壓縮 BCD 碼 B1toB2: PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  Bla ckDisplay: MOV A,R0 ;將高位0消隱

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 Exit: RET

 END

  實(shí)驗(yàn)三

 雙字節(jié) D BCD 碼(十進(jìn)制數(shù))減法

 一、實(shí)驗(yàn)?zāi)康?/p>

 熟悉51 匯編指令,學(xué)會(huì)使用星研集成環(huán)境軟件,掌握匯編語(yǔ)言得設(shè)計(jì)與調(diào)試方法.能瞧懂程序流程框圖,能自己設(shè)計(jì)程序,熟悉 BCD 碼、補(bǔ)碼,了解如何調(diào)用系統(tǒng)提供得子程序。

 二、實(shí)驗(yàn)內(nèi)容

 從鍵盤上輸入4位被減數(shù)、減數(shù),實(shí)現(xiàn)雙字節(jié) BCD 碼(四位數(shù))得減法,結(jié)果顯示在數(shù)碼管上;進(jìn)一步熟悉使用斷點(diǎn)、單步進(jìn)入、單步、運(yùn)行到光標(biāo)處、修改 PC指針、全速運(yùn)行等各種調(diào)試手段;熟悉查瞧特殊功能寄存器、內(nèi)部數(shù)據(jù) RAM、外部數(shù)據(jù)空間得各種方法。

 三、程序框圖

 設(shè)定"先清LED,再接收鍵輸入"標(biāo)志堆棧初始化開(kāi)始通過(guò)鍵盤獲得雙字節(jié)十進(jìn)制被減數(shù)(壓縮BCD碼)置位"接收到第一個(gè)鍵后才清除LED"標(biāo)志通過(guò)鍵盤獲得雙字節(jié)十進(jìn)制減數(shù)(壓縮BCD碼)減數(shù)進(jìn)行十進(jìn)制取補(bǔ)雙字節(jié)十進(jìn)制加法操作C=1?C=0,有進(jìn)位(結(jié)果為負(fù)),再執(zhí)行一次求補(bǔ)運(yùn)算,調(diào)整為正數(shù)高位0消隱,若結(jié)果為負(fù),前面加上"-"顯示結(jié)果YN雙字節(jié)十進(jìn)制減法程序框圖

 四、實(shí)驗(yàn)步驟

 、1 :明說(shuō)線連?D3 區(qū) :CLK —— B2區(qū):2M

 D3 區(qū) :CS —— A3 區(qū):CS5 D3 區(qū) :A0 —— A3 區(qū):A0 2、在 F4 區(qū)得鍵盤上輸入 4 位被減數(shù)、減數(shù) 3、結(jié)果顯示在 F4區(qū)得數(shù)碼管上 五、程序清單

 EXTRN CODE(Display8, GetBCDKey)

  Buffer DATA 30H ;8 字節(jié)顯示緩沖區(qū) F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START:

 MOV SP,#60H

  CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(被減數(shù))

 SETB F1 ;接收到第一個(gè)鍵,才清除顯示

 MOV R0,#buffer+4

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(減數(shù))

 MOV A,#9AH

  CLR C

  SUBB A,buffer+5

  MOV buffer+5,A

  MOV A,#99H

  CLR C

  SUBB A,buffer+4

  MOV buffer+4,A ;減數(shù)取補(bǔ)

 MOV A,buffer+1

  ADD A,buffer+5

  DA A

  MOV buffer+5,A

  MOV A,buffer

  ADDC A,buffer+4

  DA A

  MOV buffer+4,A

  MOV F0,C ;借位標(biāo)志

 JC Display

  MOV A,#9AH

  SUBB A,buffer+5

  MOV buffer+5,A

  MOV A,#99H

  SUBB A,buffer+4

  XCH A,buffer+5

  ADD A,#00H

  DA A

  XCH A,buffer+5

  ADDC A,#00H

  DA A

  MOV buffer+4,A

 Display:

 MOV R0,#buffer ;顯示結(jié)果

 MOV A,buffer+5 ;低位

 ACALL B1toB2 ;壓縮BCD 碼轉(zhuǎn)換成非壓縮 BCD 碼

 MOV A,buffer+4 ;高位

 ACALL B1toB2

  MOV R0,#10H ;最高四位消隱

 INC R0

  MOV R0,#10H

  INC R0

  MOV R0,#10H

  INC R0

  MOV R0,#10H

  MOV R0,#buffer+3

  MOV R7,#3

  ACALL BlackDisplay ;將高位 0 消隱

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 BlackDi splay:

 MOV A,R0 ;將高位 0 消隱

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7, B l a c kDisplay

 Exit: JB F0,Exit1

  INC R0

  MOV R0,#11H ;負(fù)數(shù)標(biāo)志 Exit1: RET

  B1toB2: PUSH ACC

 ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDispl ay:

 MOV A,R0

  JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 Exit:

 RET

  END

 四 實(shí)驗(yàn)四 數(shù)制進(jìn)十轉(zhuǎn)數(shù)制進(jìn)六十節(jié)字四? 四字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)

 一、實(shí)驗(yàn)?zāi)康?/p>

 進(jìn)一步熟悉51 匯編指令,了解十六進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)得方法. 二、實(shí)驗(yàn)內(nèi)容

 從鍵盤上輸入 8 位十六進(jìn)制數(shù),實(shí)現(xiàn)四字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)8位十進(jìn)制數(shù),并在數(shù)碼管上顯示。注意輸入數(shù)據(jù)必須在00000000H~05F00000H 范圍,否則,結(jié)果超出8位十進(jìn)制數(shù),無(wú)法正確顯示。

 三、程序框圖

 初始化堆棧開(kāi)始設(shè)定"先清LED,再接收鍵輸入"標(biāo)志通過(guò)鍵盤獲得4字節(jié)十六進(jìn)制數(shù)置位"接收到第一個(gè)鍵后,才清除LED"標(biāo)志十六進(jìn)制轉(zhuǎn)十進(jìn)制子程序顯示開(kāi)始0→R4,R5,R6,R7(用于存放壓縮BCD碼)32→B(循環(huán)次數(shù))CLR

  C四字節(jié)十六進(jìn)制數(shù)帶進(jìn)位左移一位(R4R5R6R7)×2+進(jìn)位位C→(R4R5R6R7),同時(shí)進(jìn)行十進(jìn)制調(diào)整主程序 十六進(jìn)制轉(zhuǎn)十進(jìn)制子程序NY返回B-1=0? 四、實(shí)驗(yàn)步驟

 、1

 :明說(shuō)線連?D3區(qū) :CLK -- B2 區(qū):2M D3 區(qū) :CS -— A3區(qū):CS5 D3區(qū) :A0 —- A3區(qū):A0 2、在 F4區(qū)得鍵盤上輸入 8 位十六進(jìn)制數(shù) 3、結(jié)果顯示在 F4 區(qū)得數(shù)碼管上 五、程序清單

  ?EXTRN CODE(Display8, GetKey) Buffer DATA 30H ;8 字節(jié)顯示緩沖區(qū) F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer

  MOV A,#8 ;按鍵次數(shù)

 LCALL GetKey ;得到4字節(jié)十六進(jìn)制數(shù)

 SETB F1 ;接收到第一個(gè)鍵后,才清除顯示

 MOV R0,buffer

  MOV R1,buffer+1

  MOV R2,buffer+2

  MOV R3,buffer+3

  ACALL B4toD4 ;轉(zhuǎn)換成十進(jìn)制數(shù) Display: MOV R0,#buffer ;顯示結(jié)果

 MOV A,R7 ;低位

  ACALL B1toB2 ;壓縮BCD 碼轉(zhuǎn)換成非壓縮BCD 碼

 MOV A,R6

  ACALL B1toB2

  MOV A, R5

  ACALL B1toB2

  MOV A,R4 ;高位

 A C A LL B1toB2

  MOV R0,#buffer+7

  MOV R7,#7

  ACALL BlackDisplay ;將高位0消隱

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;四字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù):R0R1R2R3為十六進(jìn)制,R4R5R6R7為壓縮 BCD碼 B4toD4:

 CLR A

  MOV R4,A

  MOV R5,A

  MOV R6,A

  MOV R7,A

  MOV B,#32

 LOOP:

 CLR C

  MOV A,R3

  RLC A

  MOV R3,A

  MOV A,R2

  RLC A

  MOV R2,A

  MOV A,R1

  RLC A

  MOV R1,A

  MOV A,R0

  RLC A

  MOV R0,A

  MOV A,R7

  ADDC A,R7

  DA A

  MOV R7,A

  MOV A,R6

  ADDC A,R6

  DA A

  MOV R6,A

  MOV A,R5

  ADDC A,R5

  DA A

  MOV R5,A

  MOV A,R4

  ADDC A,R4

  DA A

  MOV R4,A

  DJNZ B,LOOP

  RET

  B1toB2: PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDisplay: MOV A,R0 ;將高位 0 消隱

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7, B lac kDisplay

 Exit: RET

  END

 五 實(shí)驗(yàn)五 節(jié)字雙? 雙字節(jié) D BCD 碼( ( 十 進(jìn)制數(shù)) ) 乘法

 一、實(shí)驗(yàn)?zāi)康?/p>

 進(jìn)一步熟悉51 匯編指令,掌握匯編語(yǔ)言得設(shè)計(jì)與調(diào)試方法.根據(jù)程序流程圖,自己設(shè)計(jì)程序,了解如何調(diào)用系統(tǒng)提供得子程序。

 二、實(shí)驗(yàn)內(nèi)容

 從鍵盤上輸入 4 位被乘數(shù)、乘數(shù),實(shí)現(xiàn)四位十進(jìn)制數(shù)得乘法,結(jié)果顯示在數(shù)碼管上。

 三、程序框圖

 開(kāi)始初始化堆棧設(shè)定"先清LED再接收鍵輸入"標(biāo)志通過(guò)鍵盤獲得4位十進(jìn)制被乘數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)并壓棧暫存置位"接收到第一個(gè)鍵后,才清除LED"標(biāo)志通過(guò)鍵盤獲得4位十進(jìn)制乘數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)(R2R3)被乘數(shù)出棧(R0R1)雙字節(jié)十六進(jìn)制乘法子程序十六進(jìn)制結(jié)果轉(zhuǎn)十進(jìn)制壓縮BCD碼轉(zhuǎn)非壓縮BCD碼將高位0消隱顯示雙字節(jié)BCD乘法程序框圖

 (R0)(R1) × (R2)(R3)(R3R1H)(R3R1L)(R3R0H)(R3R0L)(R2R1H)(R2R1L)(R2R0H)(R2R0L)R0

  R1

  R2

  R3+雙字節(jié)十六進(jìn)制乘法示意圖

 四、實(shí)驗(yàn)步驟

 、1

 :明說(shuō)線連?D3 區(qū) :CLK -— B2區(qū):2M D3 區(qū) :CS -— A3區(qū):CS5 D3區(qū) :A0 —— A3 區(qū):A0 2、在F4 區(qū)得鍵盤上輸入 4 位被乘數(shù)、乘數(shù) 3、結(jié)果顯示在 F4 區(qū)得數(shù)碼管上 五、程序清單

  EXTRN CODE(Display8, GetBCDKey)

 Buffer DATA 30H ;8字節(jié)顯示緩沖區(qū) F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(被乘數(shù))

 MOV R0,#buffer

  ACALL D4toB2 ;轉(zhuǎn)換成二進(jìn)制數(shù)

 PUSH 02H

  PUSH 03H

  SETB F1 ;接收到第一個(gè)鍵,才清除顯示

 MOV R0,#buffer

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(乘數(shù))

 MOV R0,#buffer

  ACALL D4toB2 ;轉(zhuǎn)換成二進(jìn)制數(shù)

 POP 01H

  POP 00H

  ACALL WordMul ;(R0R1)*(R2R3)=R0R1R2R3

 ACALL B4toD4 ;轉(zhuǎn)換成十進(jìn)制數(shù) Display: MOV R0,#buffer ;顯示結(jié)果

 MOV A,R7 ;低位

 ACALL B1toB2 ;壓縮 BCD 碼轉(zhuǎn)換成非壓縮 BCD 碼

 MOV A,R6

  ACALL B1toB2

  MOV A, R5

  ACALL B1toB2

  MOV A,R4 ;高位

 ACALL B1toB2

  MOV R0,#buffer+7

  MOV R7,#7

  ACALL BlackDisplay ;將高位 0 消隱

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;雙字節(jié)十六進(jìn)制數(shù)乘以雙字節(jié)十六進(jìn)制數(shù)子程序 WordMul:

 MOV A,R3 ; (

 )1R()0R? MOV B,R1 ;

 ×

  (R2)(R3)

 MUL AB ;—- - ---—-———-—— -——————---———

 XCH A,R3 ;

  (R3R1H)(R3R1L)

 MOV R7,B ;

  (R3R0H)(R3R0L)

 MOV B,R0 ;

  (R2R1H)(R2R1L)

 MUL AB ;(R2R0H)(R2R0L)

 ADD A,R7 ; — - - --——-— -————-—-—------————--——

 MOV R7,A ;

 R0

  R1

  R2

  R3

 CLR A

  ADDC A,B

  XCH A,R1

  MOV B,R2

  MUL AB

  ADD A,R7

  XCH A,R2

  PUSH ACC

  MOV A,B

  ADDC A,R1

  MOV R1,A

  CLR A

  RLC A

  XCH A,R0

  POP B

  MUL AB

  ADD A,R1

  MOV R1,A

  MOV A,R0

  ADDC A,B

  MOV R0,A

  RET

  ;雙字節(jié)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù) ,R0-—指向雙字節(jié)十進(jìn)制數(shù),結(jié)果在 R2R3 中 D4toB2: MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0

  INC R0

  MOV B,#10

  MUL AB

  MOV R2,B

  MOV R3,A

  MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  ADD A,R3

  XCH A,R2

  ADDC A,#0

  MOV B,#10

  MUL AB

  XCH A,R2

  MOV B,#10

  MUL AB

  ADD A,R0

  MOV R3,A

  MOV A,R2

  ADDC A,B

  MOV R2,A

  RET

  B1toB2:

 PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDisplay: MOV A,R0 ;將高位 0 消隱

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 B4toD4:

 ? CLR A

  MOV R4,A

  MOV R5,A

  MOV R6,A

  MOV R7,A

  MOV B,#32

 Exit: RET END 實(shí)驗(yàn)六

 雙字節(jié)BC C D碼除于單字節(jié) D BCD 碼

 一、實(shí)驗(yàn)?zāi)康?/p>

 進(jìn)一步熟悉 51 匯編指令,掌握匯編語(yǔ)言得設(shè)計(jì)與調(diào)試方法.自己設(shè)計(jì)程序,了解如何調(diào)用系統(tǒng)提供得子程序。

 二、實(shí)驗(yàn)內(nèi)容

 從鍵盤上輸入 4 位被除數(shù)、二位除數(shù),實(shí)現(xiàn)雙字節(jié) BCD碼除于單字節(jié)BCD 碼,結(jié)果顯示在數(shù)碼管上。

 三、程序框圖

 開(kāi)始初始化堆棧設(shè)定"先清LED,再接收鍵輸入"標(biāo)志通過(guò)鍵盤獲得4位被除數(shù),轉(zhuǎn)換為十六進(jìn)制數(shù)并暫存通過(guò)鍵盤獲得單字節(jié)除數(shù),轉(zhuǎn)換為16進(jìn)制數(shù)顯示子程序置位"接收到第一個(gè)鍵后,才清除LED"標(biāo)志單字節(jié)除法:被除數(shù)的高字節(jié)除以除數(shù),結(jié)果為最終商的高8位雙字節(jié)除以單字節(jié)(商為16位)雙字節(jié)除以單字節(jié)(商只有8位)子程序最終獲得結(jié)果(16位的商,8位余數(shù))雙字節(jié)除以單字節(jié)(商為16位)子程序循環(huán)次數(shù)8→R716位被除數(shù)(R2,R3)帶進(jìn)位左移一位(最低位補(bǔ)0, C →F0)R2-除數(shù)(B)F0=1?C=1?差→R2,R3自加1R7-1=0?雙字節(jié)除以單字節(jié)(商為8位)子程序開(kāi)始 開(kāi)始返回返回主程序YYYNNN雙字節(jié)BCD除法程序框圖 四、實(shí)驗(yàn)步驟

  1、連線說(shuō)明

 D3 區(qū) :CLK —— B2 區(qū):2M D3 區(qū) :CS -- A3區(qū):CS5 D3 區(qū) :A0 —— A3 區(qū):A0 2、在 F4 區(qū)得鍵盤上輸入 4 位被乘數(shù)、乘數(shù) 3、使用各種手段調(diào)試程序 4、結(jié)果顯示在 F4 區(qū)得數(shù)碼管上 單 五、程序清單 ??

  ?EXTRN ? CODE(Display8, GetBCDKey) Buffer DATA 30H ;8 字節(jié)顯示緩沖區(qū) F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV ? SP,#60H

  CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer

  MOV A,#4 ;按鍵次數(shù)

 LCALL GetBCDKey ;得到雙字節(jié)十進(jìn)制數(shù)(被除數(shù))

 SETB F1 ;接收到第一個(gè)鍵,才清除顯示

 MOV R0,#buffer

  ACALL D4toB2 ;轉(zhuǎn)換成二進(jìn)制數(shù)

 MOV R0,#buffer

  MOV A,#2

  LCALL GetBCDKey ;得到 1 字節(jié)十進(jìn)制數(shù)(除數(shù))

 MOV R0,#buffer

  ACALL D2toB2 ;轉(zhuǎn)換成二進(jìn)制數(shù)

 JNZ START2

  ACALL DisplayError ;除數(shù)為0,出錯(cuò)

 SJMP START

 START2:

 ACALL B2_DIV_B1 ;被除數(shù) / 除數(shù)

 ACALL Display ;顯示商與被除數(shù)

 SJMP START1

 ; 雙字節(jié)除于單字節(jié),R2R3為 16位二進(jìn)制數(shù),B 為除數(shù),商在 R2R3中, 余數(shù)在 A 中 B2_DIV_B1:

 PUSH B

  MOV A,R2

  DIV AB

  MOV R2,B

  POP B

  PUSH ACC

  CALL DIV_B2_B1

  POP ACC

  XCH A,R2

  RET

  ;雙字節(jié)除于單字節(jié),R2R3 為被除數(shù),B為除數(shù),結(jié)果:商 R3 中,余數(shù)在 R2中 DIV_B2_B1: MOV R7,#8 ;雙字節(jié)除于單字節(jié) DIV2: CLR C ;R2R3 為被除數(shù),B 為除數(shù),

 MOV A,R3 ;結(jié)果:商R3 中,余數(shù)在 R2 中

 RLC ? A

  MOV R3,A

  MOV A,R2

  RLC A

  MOV R2,A

  MOV F0,C

  CLR C

  SUBB A,B

  JB F0,DIV3

  JC DIV4

 DIV3: MOV R2,A

  INC ? R3

 DIV4: DJNZ R7,DIV2

  RET

  ;4 字節(jié)二進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù),R2R3 為 16位二進(jìn)制數(shù),R4R5R6為壓縮BCD 碼 B2toD5:

 CLR

 A

  MOV R4,A ;

 MOV R5,A

  MOV R6,A

  MOV R7,#16

 LOOP:

 CLR ? C

  MOV A,R3

  RLC ? A

  MOV R3,A

  MOV A,R2

  RLC ? A

  MOV R2,A

  MOV A,R6

  ADDC A,R6

  DA ? A

  MOV R6,A

  MOV A,R5

  ADDC A,R5

  DA ? A

  MOV R5,A

  MOV A,R4

  ADDC

 A,R4

  DA ? A

  MOV R4,A

  DJNZ R7,LOOP

  RET

  D2toB2: MOV A,R0 ;1 字節(jié)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)

 ANL A,#0FH ;R0——指向 1 字節(jié)十進(jìn)制數(shù),結(jié)果在B中

 XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0 ;轉(zhuǎn)換成二進(jìn)制數(shù)

 MOV B,A

  RET

  Display:

 PUSH ACC ;商在低四位,余數(shù)在高三位

 ACALL B2toD5 ;二進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)

 MOV R0,#buffer

  MOV A,R6

  ACALL B1toB2 ;壓縮BCD碼轉(zhuǎn)換成非壓縮 BCD 碼

 MOV A,R5

  ACALL B1toB2

  DEC R0

  MOV R7,#3

  ACALL BlackDisplay ;將高位0消隱

 MOV buffer+4,#10H ;消隱

  MOV R0,#buffer+7

  POP ? ACC

  MOV

 B,#100

  DIV ? AB

  MOV R0,A

  DEC R0

  MOV A,B

  MOV B,#10

  DIV ? AB

  MOV R0,A

  DEC R0

  MOV R0,B

  MOV R0,#buffer+7

  MOV R7,#2

  ACALL BlackDisplay ;將高位 0 消隱

 MOV R0,#buffer

  LCALL Display8

  RET

  Displa y E rror:

 MOV

 R0,#buffer

  MOV R7,#8

  MOV A,#0FH

 DisplayError1:

 MOV ? R0,A

  INC ? R0

  DJNZ R7,DisplayError1

  MOV R0,#buffer

  LCALL Display8

  RET

  D4toB2:

 MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0

  INC R0

  MOV B,#10

  MUL AB

  MOV R2,B

  MOV R3,A

  MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  ADD A,R3

  XCH A,R2

  ADDC A,#0

  MOV B,#10

  MUL AB

  XCH A,R2

  MOV B,#10

  MUL AB

  ADD A,R0

  MOV R3,A

  MOV A,R2

  ADDC A,B

  MOV R2,A

  RET

  B1toB2:

 PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  Blac k D i splay:

 MOV A,R0 ;將高位0消隱

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R 7 , Bl a ckD isplay

 END

 實(shí)驗(yàn)八

 冒泡排序

 一、實(shí)驗(yàn)?zāi)康?/p>

 熟悉使用 MCS51 指令,掌握匯編語(yǔ)言得設(shè)計(jì)與調(diào)試方法,了解如何使用高效方法對(duì)數(shù)據(jù)排序. 二、實(shí)驗(yàn)內(nèi)容

 。列排新重大到小從據(jù)數(shù)組一將法泡冒用使求要,序程序排個(gè)一試調(diào)并寫編?

 三、程 序框圖

 開(kāi)始初始化堆棧將待排序數(shù)組轉(zhuǎn)移到內(nèi)部30H開(kāi)始的RAM中數(shù)據(jù)數(shù)-1→R7,數(shù)據(jù)交換標(biāo)志bSort=0

 PUSH

 07H被比較數(shù)地址R0=30H比較數(shù)地址R1=R0+1DEC

  R7@R0>@R1?@R0與@R1互換1→bSortINC R0INC R1POP R7R7=R7-1 R7=0?bSort=0?結(jié)束NNNYYY冒泡排序程序框圖 四、實(shí)驗(yàn)步驟

  。列排序順得大到小從按否是就據(jù)數(shù)中 HF3~H03 MAR部?jī)?nèi)查檢,序程試調(diào)式方點(diǎn)斷用使?單 五、程序清單 ? ?bSort BIT F0

  ORG 0000H

  LJMP STAR

  ORG 0100H

 STAR: MOV SP,#60H ;堆棧

 MOV R0,#30H ;存放待排序數(shù)據(jù)得首地址

 MOV R7,#16 ;數(shù)據(jù)個(gè)數(shù)

 MOV DPTR,#TAB_1

 STAR1:

 CLR A

  MOVC A,A+DPTR

  MOV R0,A ;將數(shù)據(jù)移入內(nèi)部 RAM中

 INC R0

  INC DPTR

  DJNZ R7,STAR1

  MOV R7,#16-1 ;存放比較次數(shù) STAR2: PUSH 07H

  MOV R0,#30H ;存放啟始地址

 CLR bSort

  MOV R1,00H

  INC R1

  MOV A,R0

 STAR3:

 MOV B,A

  MOV A,R1

  CJNE A,B,$+3

  JNC

 STAR5

  XCH A,R0

  MOV R1,A

  SETB bSort

 STAR5: INC R0

  INC R1

  DJNZ R7,STAR3

  POP 07H

  JNB bSort,Exit

  DEC R7

  SJMP STAR2

 Exit:

 SJMP $

 TAB_1:

 DB 0H,5H,6H,3H,8H,92H,04H,57H,46H,01H,0FFH,0A0H,45H,99H,55H,66H

 END

推薦訪問(wèn): 單片機(jī) 實(shí)驗(yàn) 報(bào)告

工作總結(jié)最新推薦

NEW
  • 同志們:今天這個(gè)大會(huì),是市委全面落實(shí)黨要管黨、從嚴(yán)治黨要求的一項(xiàng)重大舉措,也是對(duì)縣市區(qū)委書記履行基層黨建工作第一責(zé)任人情況的一次集中檢閱,同時(shí)是對(duì)全市基層黨建工作的一次再部署、再落實(shí)的會(huì)議。前面,**

  • ***年,我認(rèn)真履行領(lǐng)班子、帶隊(duì)伍、抓黨員、保穩(wěn)定的基層黨建工作思路,以學(xué)習(xí)貫徹習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想和黨的十九大歷次全會(huì)精神為主線,以市局基層黨建工作考核細(xì)則為落腳點(diǎn),落實(shí)全面從嚴(yán)治黨主體

  • 根據(jù)會(huì)議安排,現(xiàn)將2022年履行抓基層黨建工作職責(zé)情況報(bào)告如下:一、履職工作特色和亮點(diǎn)1 突出政治建設(shè),著力在思想認(rèn)識(shí)上提高。牢固樹(shù)立抓黨建就是抓政績(jī)的理念,以“黨建工作抓引領(lǐng)、社區(qū)治理求突破,為民服

  • 2022年以來(lái),在**黨委的正確領(lǐng)導(dǎo)下,堅(jiān)持以習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想為指導(dǎo),深入學(xué)習(xí)宣傳貫徹黨的二十大精神,以黨建工作為統(tǒng)領(lǐng),扎實(shí)開(kāi)展夯實(shí)“三個(gè)基本”活動(dòng),以“四化四力”行動(dòng)為抓手,聚力創(chuàng)建

  • 各位領(lǐng)導(dǎo),同志們:根據(jù)會(huì)議安排,現(xiàn)就2022年度抓基層黨建工作情況匯報(bào)如下:一、主要做法及成效(一)強(qiáng)化政治引領(lǐng)。一是不斷強(qiáng)化理論武裝。堅(jiān)持通過(guò)黨組會(huì)、中心組學(xué)習(xí)會(huì)和“三會(huì)一課”,第一時(shí)間、第一議題學(xué)

  • 2022年度抓基層黨建工作述職報(bào)告按照黨委工作部署,現(xiàn)將本人2022年度抓基層黨建工作情況報(bào)告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發(fā)展首要位置,積極開(kāi)展

  • 2022年,是我在數(shù)計(jì)系黨總支書記這個(gè)新崗位上度過(guò)的第一個(gè)完整的工作年度。回首一年來(lái)在校黨委的正確領(lǐng)導(dǎo)下,與數(shù)計(jì)系領(lǐng)導(dǎo)班子和全體師生共同走過(guò)的日子,艱辛歷歷在目,收獲溫潤(rùn)心田。作為黨總支書記,我始終牢

  • 按照考核要求,現(xiàn)將本人一年來(lái),作為統(tǒng)戰(zhàn)部長(zhǎng)履行職責(zé)、廉潔自律等方面情況報(bào)告如下:一、著眼增強(qiáng)政治素質(zhì),不斷深化理論學(xué)習(xí)堅(jiān)持把旗幟鮮明講政治作為履職從政的第一位要求,帶領(lǐng)統(tǒng)戰(zhàn)系統(tǒng)干部堅(jiān)決擁護(hù)“兩個(gè)確立”

  • **年,緊緊圍繞黨工委、管委會(huì)的決策部署,全體人員團(tuán)結(jié)協(xié)作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開(kāi)拓進(jìn)取,認(rèn)真履職盡責(zé),圓滿完成各項(xiàng)工作任務(wù)。一、個(gè)人思想政治狀況檸檬文苑www bgzjy

  • 按照縣委關(guān)于開(kāi)展抓基層黨建述職評(píng)議會(huì)議的有關(guān)要求,經(jīng)請(qǐng)示縣委組織部同意,今天,我們?cè)诖苏匍_(kāi)2022年度基層黨組織書記抓基層黨建述職評(píng)議會(huì)議。1 首先,請(qǐng)**黨委書記,**同志述職。**黨委能夠主動(dòng)研究