實(shí)訓(xùn)一 匯編編程實(shí)訓(xùn)_第1頁(yè)
實(shí)訓(xùn)一 匯編編程實(shí)訓(xùn)_第2頁(yè)
實(shí)訓(xùn)一 匯編編程實(shí)訓(xùn)_第3頁(yè)
實(shí)訓(xùn)一 匯編編程實(shí)訓(xùn)_第4頁(yè)
實(shí)訓(xùn)一 匯編編程實(shí)訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)訓(xùn)一、匯編編程實(shí)訓(xùn)1.軟件1)存儲(chǔ)器塊清零2)程序跳轉(zhuǎn)3)數(shù)據(jù)排序

2.硬件1)流水燈2)蜂鳴器3)外部中斷4)四位七段數(shù)碼管顯示一1.軟件1)存儲(chǔ)器塊清零

實(shí)訓(xùn)要求:指定存儲(chǔ)器中某塊的起始地址和長(zhǎng)度,要求能將其內(nèi)容清零。程序:方法一:片外空間Blockequ4000horg0h

mov

dptr,#Block;首地址

movr0,#0;設(shè)置長(zhǎng)度

clraLoop:

movx@dptr,aincdptr;指向下一個(gè)地址

djnzr0,Loop;記數(shù)減一

ljmp$end2)程序跳轉(zhuǎn)實(shí)訓(xùn)要求:在多分支結(jié)構(gòu)的程序中,能夠按調(diào)用號(hào)執(zhí)行相應(yīng)的功能,完成指定操作。程序:方法一:主程序:org0

ljmpStartStart:

mova,#0callFuncEnter

mova,#1callFuncEnter

mova,#2callFuncEnter

mova,#3callFuncEnter

ljmp$查表程序:

FuncEnter:adda,acc;ajmp

為二字節(jié)指令,調(diào)用號(hào)X2

mov

dptr,#FuncTab

jmp@a+dptrFuncTab:

ajmpFunc0

ajmpFunc1

ajmpFunc2

ajmpFunc3子程序:Func0:movr0,#0retFunc1:movr0,#1retFunc2:movr0,#2retFunc3:movr0,#3ret3)數(shù)據(jù)排序?qū)嵱?xùn)要求給出一組隨機(jī)數(shù),將此組數(shù)據(jù)排序,使之成為有序數(shù)列。(即按大小排序)程序:方法一Sizeequ10;數(shù)據(jù)個(gè)數(shù)Arrayequ50h;數(shù)據(jù)起始地址Changeequ0;交換標(biāo)志org0hSort:

movr0,#Array

movr7,#Size-1

clrChangeGoon:

mova,@r0

movr2,aincr0

movB,@r0

cjnea,B,NotEqual

sjmpNextNotEqual:

jcNext;前小后大,不交換

setbChange;前大后小,置交換標(biāo)志

xcha,@r0;交換

decr0

xcha,@r0incr0Next:

djnzr7,Goon

jbChange,Sort

ljmp$end2.硬件1)流水燈實(shí)訓(xùn)要求編寫(xiě)循環(huán)程序,使得8個(gè)led燈循環(huán)點(diǎn)亮,形成流水狀。程序:方法一:左移動(dòng)循環(huán) ORG0000HSTART: MOVP0,#0FFH//初始化P0口MOVA,#0FEH//將11111110B放到累加器A中LOOP: MOVP0,A//將A的內(nèi)容放到P0口輸出RLA//不帶位左移累加器CALLDELAY//延時(shí),具體延時(shí)的時(shí)間,學(xué)員自行計(jì)算,

以更改延時(shí)子程序中R0,R1的數(shù)值實(shí)現(xiàn)長(zhǎng)短更改JMPLOOP//繼續(xù)循環(huán)DELAY://延時(shí)子程序 MOVR0,#0;1DD: MOVR1,#0;1 DJNZR1,$;2 DJNZR0,DD;2 RET;2 END延時(shí)時(shí)間=機(jī)器周期數(shù)×12/fosc完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期;一個(gè)機(jī)器周期為12個(gè)時(shí)鐘周期;時(shí)鐘周期為單片機(jī)外接晶振的倒數(shù),即fosc=11.0592

×106Hz2)蜂鳴器實(shí)訓(xùn)要求:用端口輸出不同頻率的脈沖,控制喇叭發(fā)出不同音調(diào)端口輸出的方波經(jīng)放大濾波后,驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。聲音的頻率由端口輸出時(shí)延時(shí)控制。通過(guò)不同頻率來(lái)控制,不同音調(diào)的聲音。蜂鳴器驅(qū)動(dòng):在三極管的基極給一個(gè)低電平(0V)的時(shí)候,三極管將導(dǎo)通,此時(shí)蜂鳴器將發(fā)聲。實(shí)現(xiàn)過(guò)程:定義定時(shí)器中斷入口,掃描數(shù)據(jù)表的數(shù)據(jù),送音頻到定時(shí)器,保持?jǐn)?shù)據(jù)到定時(shí)器,保護(hù)原有數(shù)據(jù)到堆棧,開(kāi)蜂鳴器,出堆棧,下一次掃描數(shù)據(jù)(下一個(gè)音頻數(shù)值)。定時(shí)器學(xué)習(xí)3)外部中斷

實(shí)訓(xùn)要求用單次脈沖申請(qǐng)中斷,在中斷處理程序中對(duì)輸出信號(hào)進(jìn)行反轉(zhuǎn),并將此信號(hào)發(fā)送到P0.0LED上顯示出來(lái)。外部中斷學(xué)習(xí)程序LEDequP1.0LEDBuf

equ0org0h

ljmpStartStart:

clr

LEDBuf

clrLED

movTCON,#01h;外部中斷0下降沿觸發(fā)

movIE,#81h;打開(kāi)外部中斷允許位(EX0)及總中斷

允許位(EA)

ljmp$org3Interrupt0:pushPSW;保護(hù)現(xiàn)場(chǎng)

cpl

LEDBuf;取反LED

movc,LEDBuf

movLED,cpopPSW;恢復(fù)現(xiàn)場(chǎng)

retiend4)四位七段數(shù)碼管顯示一

實(shí)訓(xùn)要求數(shù)碼管顯示0~9這10個(gè)數(shù)字,逐個(gè)顯示0~9;程序:方法一:查表法ORG0000HMOVP2,#0FEH;開(kāi)放P2.0對(duì)應(yīng)的位LED,其他封閉MOVDPTR,#TAB;指針指向數(shù)據(jù)表LOOP2: MOVA,#0 MOVR0,#10LOOP1: MOVA,@DPTR+A;讀取第一個(gè)數(shù)據(jù)MOVP0,A;向P0輸送數(shù)據(jù)CALLDELAY;延時(shí)INCA;指向下一個(gè)數(shù)據(jù)

DJNZR0,LOOP1;判斷0~9這十個(gè)數(shù)是否輸送完?JMPLOOP2DELAY:…………..RETTAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H;

;對(duì)應(yīng)

0,1,2,3,4,5,6,7,8,9

溫馨提示

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

評(píng)論

0/150

提交評(píng)論