實驗報告(單片機實驗報告)_第1頁
實驗報告(單片機實驗報告)_第2頁
實驗報告(單片機實驗報告)_第3頁
實驗報告(單片機實驗報告)_第4頁
實驗報告(單片機實驗報告)_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1/1實驗報告(單片機實驗報告)1雙字節無符號數加法

例1:雙字節無符號數加法(R0R1)+(R2R3)→(R4R5),

R0、R2、R4存放16位數的高字節,R1、R3、R5存放低字節。已知(R0R1)=(93h,79h);(R2R3)=(25h,a4h)

假設其和不超過16位。請編程。

org0000h

Ljmpstart

org0050h

start:

movR0,#93h

movR1,#79h

movR2,#25h

movR3,#0a4h

movA,R1

ADDA,R3

movR5,A

movA,R0

ADDCA,R2

movR4,A

ss:jmpss

end

2雙字節無符號數減法

例2:雙字節無符號數相減(R0R1)-(R2R3)→(R4R5)。R0、R2、R4存放16位數的高字節,R1、R3、R5存放低字節,已知(R0R1)=(93h,79h);(R2R3)=(25h,a4h);請編程。同學自己可以設置被減數與減數數值

org0000h

Ljmpstart

org0050h

start:

movR0,#93h

movR1,#79h

movR2,#25h

movR3,#0a4h

movA,R1

CLRC

SUBBA,R3

movR5,A

movA,R0

SUBBA,R2

movR4,A

ss:jmpss

end

3雙字節數乘以單字節數

例3:利用單字節乘法指令,進行雙字節數乘以單字節數運算。若被乘數為16位無符號數,地址為M1(30H)和M1+1(31H)(低位先、高位后),乘數為8位無符號數,地址為M2(32H),積由高位到低位存入R2、R3和R4三個寄存器中。

30H,31H,32H內容12H,34H,56H;

org0000h

Ljmpstart

org0050h

start:

mov30h,#12h

mov31h,#34h

mov32h,#56h

mova,(30h)

movb,(32h)

mulab

movR3,b

movR4,a

mova,(31h)

movb,(32h)

mulab

addA,R3

movR3,A

movA,b

ADDCA,#00h

movR2,A

ss:jmpss

end

4.把8位二進制數轉換為3位BCD

例4:利用除法指令把累加器A中的8位二進制數轉換為3位BCD數,并以壓縮形式存放在地址M1、M2單元中。

設A中放A8H,M1、M2單元地址是30H,31H

org0000h

Ljmpstart

org0050h

start:

movA,#0A8h

movb,#64h

divAb

mov(30h),A

movA,b

movb,#0Ah

divAb

swapA

addA,b

mov(31h),A

ss:jmpss

end

5雙字節壓縮BCD碼加法

例6:雙字節壓縮BCD碼加法。

設R5(高)、R4(低)為被加數;R3(高)、R2(低)為加數,相加和的結果存入:R6(萬)、R5(千、百)、R4(十、個)。被加數98H,76H;加數54H,32H

org0000h

Ljmpstart

org0050h

start:

movR5,#98h;R5

movR4,#76h;R4

movR3,#54h;R3

movR2,#32h;R2

movA,R4

addA,R2

DAA

movR4,A

movA,R5

ADDCA,R3

DAA

movR5,A

movA,#0h

movR6,#0h

addca,R6

movR6,A

ss:jmpss

end

6利用DPTR取數據,并保持DPTR原數不變

例6:若在外部ROM/EPROM中2000H單元開始依次存放0~9的平方值,原來數據指針(DPTR)=3A00H,請用查表指令取出2003H單元的數據后,要求保持DPTR中的內容不變。

org0000h

Ljmpstart

start:

movDPTR,#3a00h

pushDPH

movDPTR,#TABLE

mova,#03h

movca,@A+DPTR

popDPH

ss:jmpss

org2000h

TABLE:DB0,1,4,9,16,25,36,49,64,81

End

716位數的算術左移

16位數的算術左移。16位數在內存中低8位存放在M1單元,高8位存放在M1+1單元。16位數是1234H,M1為30H,M2為31H

org0000h

ljmpstart

org0050h

start:

mov(30h),#34H

mov(31h),#12h

mova,30h

movb,#02h

mulab

mov30h,a

movr1,b

mova,31h

movb,#02h

mulab

adda,r1

mov31h,a

ss:jmpss

end

8比較內部RAMI、J單元中A、B兩數的大小

例3:比較內部RAMI、J單元中A、B兩數的大小,設A、B數均為帶符號數,以補碼數存入I、J中,若A=B,則使內部RAM的位K置1;若A≠B,則大數存M單元,小數存N單元。

設內部RAMI、J是30H,40H;(A)=58H,(B)=97H

M單元=50H,N單元=60H,位K=00H

該帶符號數比較子程序的比較過程示意圖如圖3―9所示。

org0000h

ljmpstart

org0050h

start:

mov(30h),#58h

mov(40h),#58h

mova,30h

anla,#80h

jnzm;a>10

mulab

movr3,a;暫存相乘結果mova,r5

anla,#0fh

adda,r3

movb,#64h;b>>100

mulab

movr5,b

movr3,a

mova,r4

anla,#0F0h

swapa

movb,#0ah;b>>10

mulab

movr2,a;暫存相乘結果mova,r4

anla,#0fh

adda,r2

adda,r3

movr4,a

ss:ljmpss

end

10冒泡排序

有8個數據存放在20H為首地址的內部RAM,進行升序排列編程,原始數據:39,27,13,44,78,22,6,51;設R7為比較次數計數器,初始值為07H,F0為標志位,F0=0表明無互換發生,F0=1表明有互換發生

org0000h

ljmpstart

org0050h

start:

mov(20h),#39;27h

mov(21h),#27;1Bh

mov(22h),#13;0DH

mov(23h),#44;2CH

mov(24h),#78;4EH

mov(25h),#22;16H

mov(26h),#6;06H

mov(27h),#51;33H

a0:movr0,#20h

movr1,#1fh

movr7,#07h

clrf0

clrc

a1:

mova,@r0

incr0

incr1

movb,a

subba,@r0

jca3

a2:mova,b

xcha,@r0mov@r1,asetbf0

a3:djnzr7,a1jbf0,a0

ss:ljmpss

End

11中斷方式下定時器應用設計

設單片機的晶振為12MHz,,定時器0方式0工作,產生1ms定時,在P1.0引腳上輸出周期為2ms的方波,中斷方式完成,試設計程序。

org000BH

LJMPINT

org2000H

ljmpstart

start:

movTMOD,#00H

movth0,#1ch

movtl1,#18h

setbEA

setbET0

setbTR0

sjmp$

INT:CPLp1.0;輸出方波

MOVTH0,#1ch;重新裝入計數初值,如果是方式2就不需要重裝。

MOVTL0,#18h

RETI

ss:jmpss

end

12查詢方式下定時器應用設計

設單片機的晶振為12MHz,,定時器0方式0工作,產生1ms定時,在P1.0引腳上輸出周期為2ms的方波,查詢方式完成,試設計程序。

org2000H

ljmpstart

start:

movTMOD,#00H

movth0,#1ch

movtl1,#18h

mova,#00h

movIE,#00H

setbTR0

loop:jbctf0,loop1

sjmploop

loop1:

clrtf0

CPLp1.0;輸出方波

inca

MOVTH0,#1ch;重新裝入計數初值,如果是方式2就不需要重裝。

MOVTL0,#18h

sjmploop

ss:jmpss

End

13中斷方式下定時器應用設計

設片內RAM的70H單元的初值為01H,要求每1秒鐘將其內容左環移一位,采用定時器T1,采用定時方式1,晶振頻率為6MHz。中斷方式完成,試設計程序。

ORG0000H

LJMPMAIN

ORG001BH;T1中斷入口

LJMPINT;轉至INT處

ORG2000H;主程序

MAIN:

MOVTMOD,#10H;T1工作于方式1

MOVTH1,#3CH;設置計數初值

MOVTL1,#0B0H

SETBEA;CPU開中斷

SETBET1;允許T1中斷

SETBTR1;啟動T1定時

MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論