電氣工程與自動(dòng)化計(jì)算機(jī)綜合實(shí)踐指南_第1頁(yè)
電氣工程與自動(dòng)化計(jì)算機(jī)綜合實(shí)踐指南_第2頁(yè)
電氣工程與自動(dòng)化計(jì)算機(jī)綜合實(shí)踐指南_第3頁(yè)
電氣工程與自動(dòng)化計(jì)算機(jī)綜合實(shí)踐指南_第4頁(yè)
電氣工程與自動(dòng)化計(jì)算機(jī)綜合實(shí)踐指南_第5頁(yè)
已閱讀5頁(yè),還剩37頁(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)介

四川大學(xué)網(wǎng)絡(luò)教育學(xué)院

實(shí)踐課程匯報(bào)

實(shí)踐課程計(jì)算機(jī)綜合實(shí)踐9002

校外學(xué)習(xí)中心重慶黔江奧鵬學(xué)習(xí)中心[20]VIP

專業(yè)電氣工程及其自動(dòng)化

層次____________專升本_____________

年級(jí)___________W03_______________

學(xué)生姓名__________邱曉帆______________

學(xué)號(hào)aDH1001g1003

2011年8月10日

試驗(yàn)內(nèi)容:

一、熟悉、使用DEBUG調(diào)試工具

[摘要]借助DEBUG調(diào)試工具來(lái)發(fā)現(xiàn)匯編語(yǔ)言程序的錯(cuò)誤所在并

加以改正。通過(guò)試驗(yàn),掌握DEBUG的I常用基本命令,學(xué)會(huì)怎樣在

windows的命令模式下啟動(dòng)DEBUG,進(jìn)而學(xué)會(huì)怎樣使用DEBUG查看CPU

和內(nèi)存,以及進(jìn)行程序的跟蹤調(diào)試等。

1試驗(yàn)?zāi)康?/p>

1.1學(xué)習(xí)怎樣在WindowsH勺命令模式下啟動(dòng)DEBUGo

1.2掌握DEBUG的常用基本命令。

1.3學(xué)習(xí)怎樣使用DEBUG查看CPU和內(nèi)存以及進(jìn)行跟蹤調(diào)試。

2試驗(yàn)設(shè)備及軟件環(huán)境

裝有DOS系統(tǒng)及MASM6.X的微機(jī)一臺(tái)。

3預(yù)備知識(shí)

3.1什么是DEBUG?

Debug是DOS、Windows都提供的實(shí)模式(8086方式)程序的調(diào)

試工具。使用它,可以查看CPU多種寄存器日勺內(nèi)容、內(nèi)存的狀況和在

機(jī)器碼級(jí)跟蹤程序的運(yùn)行。

3.2常用的Debug命令及其含義

表1.1Debug命令及其含義

命令格式功能闡明

R[寄存器名]查看、變化CPU寄存器的內(nèi)容

D[范圍]查看指定范圍內(nèi)的J內(nèi)存中H勺內(nèi)容

E起始地址字節(jié)值表用值表中日勺值替代從“起始地址”開始日勺內(nèi)存

單元中的內(nèi)容

U[范圍]反匯編,將內(nèi)存中日勺機(jī)器指令翻譯成匯編指令

T[=地址][指令數(shù)]執(zhí)行一條機(jī)器指令

A[地址]以匯編指令的格式在內(nèi)存中寫入一條機(jī)器指

Q退出Debug,回到DOS狀態(tài)

4啟動(dòng)DEBUG

4.1打開Windows命令窗口

選擇“開始”一“運(yùn)行”一輸入“cmd”命令

4.2啟動(dòng)DEBUG

在命令窗口中啟動(dòng)DEBUG,將顯示連接符“一”,這時(shí)可輸入多

種DEBUG命令。

4.3有關(guān)使用命令的幾點(diǎn)闡明:

?在提醒符“一”下才能輸入命令,在按“回車”鍵后,該命令

才開始執(zhí)行;

?命令是單個(gè)字母,命令和參數(shù)日勺大小寫可混合輸入;

?可用Fl、F2、F3、Ins、Del.一等編輯鍵來(lái)編輯本行命令;

?當(dāng)命令出現(xiàn)語(yǔ)法錯(cuò)誤時(shí),將在出錯(cuò)位置顯示“Error”;

?在DEBUG中使用時(shí)數(shù)都是以十六進(jìn)制來(lái)表達(dá)日勺。

5試驗(yàn)內(nèi)容

5.1R命令

作用:查看、變化CPU寄存器的內(nèi)容

(1)顯示所有寄存器之中的內(nèi)容:輸入R

我們重點(diǎn)關(guān)注AX、BX、CX、DX、CS及IP寄存器的內(nèi)容,其他

寄存器SP、BP、SLDI、ES、SS及標(biāo)志寄存器先不予理會(huì)。此外,

并列出了CS:IP所指向W、J內(nèi)存單元處所寄存出J機(jī)器碼,并將它翻譯為

匯編指令。

(2)變化寄存器中的內(nèi)容:輸入RAX

在提醒符后輸入1111,即可將AX的值設(shè)置為1111。在輸入

R命令,查看修改后日勺寄存器值。

5.2D命令

作用:查看指定范圍內(nèi)的內(nèi)存中的內(nèi)容

(1)直接輸入D命令

DEBUG將輸出3部分內(nèi)容,查看執(zhí)行成果。

闡明:

?左辿是福行晌起始地址,用“XXXX:YYYY”表達(dá),其中XXXX

表達(dá)內(nèi)存單元時(shí)段地址,YYYY表達(dá)內(nèi)存單元[I勺偏移量;

?中間以十六進(jìn)制的形式顯示從指定地址開始的128個(gè)內(nèi)存單

元的內(nèi)容,每行顯示16個(gè)字節(jié)的內(nèi)容;

?右邊顯示每個(gè)內(nèi)存單元中的數(shù)據(jù)對(duì)應(yīng)時(shí)可顯示的ASCII碼字

符,若沒(méi)有對(duì)應(yīng)可顯示的ASCII碼字符,DEBUG用”來(lái)替

代。

(2)執(zhí)行帶參數(shù)區(qū)JD命令

若執(zhí)行帶參數(shù)的命令D,DEBUG將顯示指定地址范圍口勺內(nèi)容。帶

參數(shù)日勺方式有三種。

?方式一:D起始位置

■DEBUG從起始位置開始顯示128個(gè)字節(jié)的內(nèi)容。

■輸入命令:D1AF5:1OO

?方式二:D起始位置結(jié)束位置

■DEBUG從起始位置開始一直顯示到結(jié)束位置。

■輸入命令:DDS:10011F

?方式三:D起始位置L長(zhǎng)度

■DEBUG命令從起始位置開始顯示指定長(zhǎng)度內(nèi)容。

■輸入命令:DDS:100L10

使用帶參數(shù)的D命令后,接著使用D命令,可列出后續(xù)的128

個(gè)內(nèi)存單元的內(nèi)容。

5.3E命令

格式:E起始地址字節(jié)值表

或E起始地址

作用:用值表中日勺值替代從“起始地址”開始的內(nèi)存單元中的內(nèi)

例1:將內(nèi)存1000:0-1000:9單元中日勺內(nèi)容分別寫為0、1、2、

3、4、5、6、7、8、9,可用“E起始地址數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)

據(jù)……”的格式來(lái)進(jìn)行。

環(huán)節(jié):

①用D命令查看1000:0-1000:f單元日勺內(nèi)容:D1000:0f

②用E命令修改從1000:0開始的10個(gè)單元中的內(nèi)容:E1000:

00123456789

③用D命令查看1000:0?1000:f單元中內(nèi)容的變化:D1000:

0f

例2:用E命令向內(nèi)存中寫入字符。從內(nèi)存1000:0開始寫入:

數(shù)值1,字符“a",數(shù)值2,字符“b",數(shù)值3,字符數(shù)”。

環(huán)節(jié):

①用D命令查看1000:0處口勺內(nèi)容:D1000:0

②用E命令輸入:E1000:01'a'2'b'3'c'

③用D命令查看1000:0?1000:f單元中內(nèi)容的變化:D1000:

0f

例3:用E命令向內(nèi)存中寫入字符串。從內(nèi)存1000:0開始寫入:

數(shù)值L字符串“a+b”,數(shù)值2,字符串“C++”,數(shù)值3,字符“IBM”。

環(huán)節(jié):

①用D命令查看1000:0處日勺內(nèi)容:D1000:0

②用E命令輸入:E1000:01'a+b'2'c++'3'IBM'

③用D命令查看1000:0-1000:f單元中內(nèi)容由J變化:D1000:

0

例4用E命令以提問(wèn)的方式來(lái)逐一地修改從某一地址開始的內(nèi)存單

元中區(qū)I內(nèi)容。

以從1000:10單元開始為例C

環(huán)節(jié):

①用D命令查看1000:10處的內(nèi)容:D1000:10

②用E命令輸入:E1000:10,按Enter鍵

③DEBUG將顯示起始地址1000:0010以及第一種單元(即1000:

0010單元)的原始內(nèi)容:00.,然后光標(biāo)停在”W、J背面,提

醒輸入想要寫入的數(shù)據(jù),此時(shí)有兩種選擇:其一輸入數(shù)據(jù),完

后按空格鍵,即用輸入的數(shù)據(jù)改寫且前日勺內(nèi)存單元;其二不輸

入數(shù)據(jù),直接按空格鍵,則表達(dá)不對(duì)目前內(nèi)存單元進(jìn)行改寫

④目前單元處理完畢后(不管是改寫或者沒(méi)有改寫,只要按了空

格鍵,就表達(dá)處理完畢),DEBUG將顯示下一種內(nèi)存單元的原始

內(nèi)容,并提醒進(jìn)行修改,可以用同樣的措施進(jìn)行處理

⑤所有但愿改寫的內(nèi)存單元改寫完畢后,按ENTER鍵,E命令結(jié)束

⑥用D命令查看1000:10單元中內(nèi)容的變化:D1用0:10

6試驗(yàn)任務(wù)

C:\>debug

-F10017F00

-A100

0B3E:0100MOVDL,01

0B3E:0102MOVAH,02

0B3E:0104INT21

0B3E:01061NT20

0B3E:0108

-NC:\1ST

-RBX

BX0000

*

-RCX

CX0000

:8

-w100

Writing00008bytes

-Q

C:\>

在dos下執(zhí)行程序

C:\>dir1st*.*

VolumeindriveCisNTFSCCCC

VolumeSerialNumberisFC03-2958

DirectoryofC:\

2010-8-1818:5181ST

1File(s)8bytes

0Dir(s)1,080,619,008bytesfree

C:\>lst

?

C:\>

措施一:

C:\>DEBUG1ST

-G=100

Programterminatednormally

措施二:

C:\>DEBUG

-NC:\1ST

-L100

-G=100

?

Programterminatednormally

借助DEBUG調(diào)試工具來(lái)發(fā)現(xiàn)匯編語(yǔ)言程序的錯(cuò)誤所在并加以改

正。

7體會(huì)

這次試驗(yàn),由于要自己去設(shè)計(jì)整個(gè)過(guò)程,因此就去理解學(xué)習(xí)自己

本來(lái)并沒(méi)有真正弄懂W、J東西。例如某些程序日勺代碼的J意思,匯編語(yǔ)言

的邏輯。使我對(duì)前面所做出J試驗(yàn)有了原理性KJ理解,回頭看某些試驗(yàn),

也知其然其因此然了。同步對(duì)書本上講出J某些內(nèi)容,不再像此前那樣

覺(jué)得抽象,通過(guò)這次設(shè)計(jì),有了詳細(xì)rJ理解。

二、設(shè)計(jì)匯編語(yǔ)言程序

1試驗(yàn)?zāi)康?/p>

進(jìn)行程序設(shè)計(jì)試驗(yàn),掌握匯編語(yǔ)言程序。試驗(yàn)包括對(duì)字符串記錄

程序進(jìn)行設(shè)計(jì);設(shè)計(jì)雙字乘法程序設(shè)計(jì);設(shè)計(jì)字符串記錄程序設(shè)計(jì)雙

字乘法程序設(shè)計(jì)。掌握宏匯編中的標(biāo)號(hào)時(shí)使用

學(xué)會(huì)使用msam編寫簡(jiǎn)樸的I程序

2預(yù)備知識(shí)

匯編語(yǔ)言程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)口勺課程。編寫程序、上機(jī)調(diào)

試、運(yùn)行程序是深入學(xué)習(xí)和掌握匯編語(yǔ)言程序設(shè)計(jì)的必要手段。在編

譯匯編程序后,需要進(jìn)行調(diào)試,DEBUG.EXE是DOS提供時(shí)用于調(diào)試可

執(zhí)行程序日勺工具軟件,是匯編語(yǔ)程序設(shè)計(jì)中常用日勺調(diào)試工具。在DEBUG

環(huán)境下,不僅可以調(diào)試經(jīng)匯編、連接生成日勺可執(zhí)行程序,也可以編寫

簡(jiǎn)樸的程序。調(diào)試匯編語(yǔ)言程序,能使顧客接觸到計(jì)算機(jī)內(nèi)部,容許

顧客直接觀測(cè)和修改CPU日勺寄存器;能觀測(cè)、修改內(nèi)存單元;容許直

接輸入機(jī)器指令并單步執(zhí)行;能反匯編程序。可以說(shuō),debug是觀測(cè)

和理解計(jì)算機(jī)內(nèi)部運(yùn)行狀況日勺有利助手。

3匯編語(yǔ)言源程序上機(jī)操作過(guò)程

3.1源程序上機(jī)過(guò)程流程圖

調(diào)LINK程序,連接目的文獻(xiàn)?

連接有錯(cuò)?

EXE文獻(xiàn)存盤

用DELBUG杳錯(cuò)

N

3.2試驗(yàn)環(huán)節(jié)

1)編寫一段代碼(m.asm)功能是:顯示字符串

datasegmentmovax,num

numdw8072horax,ax

dataendsjnsdone

codesegmentnegax

assumecs:code,ds:datamovnum,aX

startprocfardone:rte

pushdsstartendp

xorax,axcodeends

pushaxendstart

movax,data

movds,ax

2)在DOS提醒符下鍵入:對(duì)名為m.asmd的文獻(xiàn)進(jìn)行編譯,連接

生產(chǎn).obj和.exe文獻(xiàn):-cd..

_cd..

-cd\masm

-msam

-m

-linkt

-debugm.exe得到可執(zhí)行文獻(xiàn)后就可以直接調(diào)用可執(zhí)行文獻(xiàn)名,

從盤上調(diào)到內(nèi)存中運(yùn)行。

程序及運(yùn)行成果(或試驗(yàn)數(shù)據(jù)記錄及分析)

Microsoft(R)OverlayLinkerVersion3.60

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

RunFileIN.EXE):

ListFileINULNAPJ:

LibrariesI.LIBJ:

LINK:warningL4021:segNent

C:MO$M>debugH.CXG

-u

RICmeIEAX

1A1C33C0os

141Ceee3sofix,14

141COeeiB81B14AX

fl附x

141Ceee?8ED8(O

141CnieeeeAX

141COBCOos.5

7905

?ieF7D8fix,

?12A30000flx

1015C8ooi

附16FF362A2112124J

MIAB8E005AflXx.05ED

MDtbW

?1F90

Proaraaternindtednoran1Iv

ix=eeeeBX^OOOOCX=OO26DXOOOOSP-OOOOS

is-ueeES=140BSS=141BCS=U1CIP-0000%IJL°MO

41C:08OOIEPUSHDS

dds:eeeeu

4郵:ee幽CD20FF升

3)編寫一段代碼(m.asm)功能是:顯示字符串

datasegmentip3:cmpax,64hmovdl,[bx+si]

sdb4dup(?)movds,axadddl,30h

xdb?jblp4int21h

dataendsincdlincsi

codesegmentsubax,64hlooplp7

assumecs:code,ds:datajmplp3movah,1

start:movax,datelp4:movs+1,dlint21h

movds,axmovdl,0movah,4ch

movbx,1lp5:empax,Oahint21h

movax,0jblp6codeends

movex,100incdlendstart

lop:addax,bxsubax,Oah

incbxjmplp5

loop1op1p6:movs+2,dl

movdl,0movs+3,al

Ipl:cmpax,3e8hmovbx,offsets

jblp2movsi,0

incdlmovah,2

subax,3e8hmovcl,4

jmpIpllp7:movdi,[bx+si]

1p2:movs,dlordi,30h

movdl,0

4)在DOS提醒符下鍵入:對(duì)名為m.asmd日勺文獻(xiàn)進(jìn)行編譯,連接

生產(chǎn).obj和.exe文獻(xiàn):-cd..

-cd..-msam-linkt

-cd\masm-m-debugm.exe

程序及運(yùn)行成果(或試驗(yàn)數(shù)據(jù)記錄及分析)

Microsoft(R)OverlayLinkerVersion3.60

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

RunFileIN.EXE):

ListFile(NUL.HAP):

Libraries(.LIBI:

LINK:warningL4021:nostocksegnent

I::MOSH)<M3OU9R.?xo

IEAX

U1C:MK)133C0os

U1C:AW350fix,14

1410:0064B81B14AX

fl附x

uic:eee7SEDS(O

filOOOOAX

OBCOos.5

7905fix,

10F/08

12A30000flx

15CBooi

16FF362A2112124J

1AB8ED05AflXx.05ED

10EB880027

IF90

ProyraatcmindtednorHalIv

幾*0BX=0000CX=0026DX0OOOSP-0000眸8W8SI^OOOODI0000

畛=1406ES=140BSS=141BCS=U1CIP-0000NVUPEIPLNZNfiP0NC

141C:08OOIEPUSHDS

-dds:oeeou

uw:eeeeco20FF卯...

4體會(huì)

編寫好一種程序后,要想在計(jì)算機(jī)中調(diào)試、運(yùn)行,必須要有一種

程序來(lái)支持程序口勺編輯、修改等操作。這種支援程序叫編輯程序,編

輯程序有諸多種,但按功能劃分,重要有兩大類。一類是行編輯程序,

如EDIT編輯程序;另一類是全屏幕編輯程序如QuickEdit(QE)。行

編輯程序功能較弱,不如全屏幕編輯程序以便、靈活。在編輯匯編語(yǔ)

言的源程序時(shí),可以使用已熟悉的。

三、8253定期器/計(jì)數(shù)器接口與數(shù)字電子琴

[摘要]選擇運(yùn)用試驗(yàn)儀揚(yáng)聲器/PC機(jī)內(nèi)8253驅(qū)動(dòng)內(nèi)揚(yáng)聲器變化

定期器2的計(jì)數(shù)值來(lái)變化聲音頻率,通過(guò)編程來(lái)獲得聲調(diào)(頻率)和

節(jié)奏(延時(shí)長(zhǎng)短),運(yùn)用鍵盤1、2、3、4、5、6、7、8設(shè)計(jì)一種電子

琴,通過(guò)按數(shù)字鍵響對(duì)應(yīng)的樂(lè)符1、2、3、4、5、6、7、i,使能演

奏簡(jiǎn)樸的樂(lè)曲。使計(jì)算機(jī)演奏出樂(lè)曲來(lái)。

1試驗(yàn)?zāi)康?/p>

檢查和提高我在原理與接口綜合應(yīng)用方面分析問(wèn)題與處理問(wèn)題的能

力,同步也給我提供更多、更好的訓(xùn)練機(jī)會(huì)。根據(jù)設(shè)計(jì)規(guī)定,盡量完畢

設(shè)計(jì)規(guī)定的功能,選擇最合適的器件,構(gòu)成最有效日勺硬件電路來(lái)完畢。

2試驗(yàn)規(guī)定

選擇運(yùn)用試驗(yàn)儀揚(yáng)聲器/PC機(jī)內(nèi)8253驅(qū)動(dòng)內(nèi)揚(yáng)聲器與鍵盤1、2、3、

4、5、6、7、8設(shè)計(jì)一種電子琴,通過(guò)按數(shù)字鍵響對(duì)應(yīng)的樂(lè)符1、2、3、

4、5、6、7、i,使能演奏簡(jiǎn)樸的樂(lè)曲。

3程序流程和程序?qū)崿F(xiàn)

3.1流程圖

開始

讀出音階值保留

賦對(duì)應(yīng)頻率

延時(shí)

3.2程序

segsegment

freqdw262,294,330,349,392,440,494,523

;揚(yáng)聲器發(fā)聲各頻率值

msgdb'Pressl,2,3,4,5,6,7,8,ESC:',0dh,0ah;$,

timdw400

numdb?

dsegends

ssegsegmentstack

dw256dup(?)

ssegends

csegsegment

assumecs:cseg,ds:dseg

start:movax,dseg

movds,ax

movdx,offsetmsg

movah,9

int21h;顯示提醒信息

sss:movah,7

int21h

;等待從鍵盤接受字符,不回顯al=asc碼

cmpal,lbh

jeexit;若為ESC鍵,則轉(zhuǎn)EXIT退出

cmpal,3lh

jlsss;不不小于31h

cmpal,38h;不小于38h

jgsss;不在之間轉(zhuǎn)sss

subal,31h

movnum,al;num求出對(duì)應(yīng)日勺時(shí)間常數(shù)H勺序號(hào)

jinei:moval,num

addal,al

movah,()()h

movsi,ax

again:movdi,freq[si]

movbx,tim

callgen

jmpsss

exit:movah,4ch

int21h

genprocnear

moval,0b6h;設(shè)置8253通道2方式3二進(jìn)制計(jì)數(shù)

out43h,al

movdx,12h

movax,12928

;DXAX=896*533h=18*65536+12928=1.19M

divdi

out42h,al;8253通道2口設(shè)置初值

moval,ah

out42h,al

inal,61h;讀8255PB口

movah,al

oral,3

out61h,al

waitl:movex,Oh

delay3:movax,1();延時(shí)子程序

delay2:nop

decax

jn7delay2

loopdelay3

decbx

jnzwaitl

moval,ah

out61h,al

ret

genendp

csegends

endstart

3.3試驗(yàn)儀電子琴流程圖

主程序延時(shí)于程序

3.4試驗(yàn)電路:

82538255DAC0832

3.5程序

datasegment

ioportequ0d4()0h-0280h

io8253aequioport+280h

io8253bequioport+283h

io8255aequioport+288h

io8255bequioport+28bh

io0832aequioport+290h

dataldb80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh

db0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h

db80h,66h,4eh,38h,25h,15h,09h,04h

db00h,04h,09h,15h,25h,38h,4eh,66h;正弦波數(shù)據(jù)

timedb120,106,94,89,79,70,63,59;發(fā)不?樣音口寸8253口勺計(jì)數(shù)器

初值

msgdb'Pressl,2,3,4,5,6,7,8,ESC:',0dh,0ah,$

numdb?;num為8253計(jì)數(shù)器初值日勺序號(hào)

dataends

codesegment

assumecs:code.ds:data

start:movax,data

movds,ax

movdx,offsetmsg

movah,9

int21h;顯示提醒信息

sss:movah,7

int21h;從鍵盤接受字符,不回顯

cmpal,lbh

jeexit;若為ESC鍵,則轉(zhuǎn)EXIT

cmpal,3lh

jlsss

cmpal,38h

jgSSS;若不在之間轉(zhuǎn)sss

subal,31h

movnum,al;求出對(duì)應(yīng)[f、j時(shí)間常數(shù)ff、j序號(hào)

movex,60;取60次32個(gè)正弦波數(shù)據(jù)

ddd:movsi,()

111:moval,data1[si];取正弦波數(shù)據(jù)

movdx,io0832a

outdx,al;放音

calldelay;調(diào)延時(shí)子程序

incsi

cmpsi,32;與否取完32個(gè)數(shù)據(jù)

jllll;若沒(méi)有,則繼續(xù)

loopddd;總循環(huán)次數(shù)60與否完,沒(méi)有,則繼續(xù)

jnipsss

exit:movah,4ch

int21h

delayprocnear;延時(shí)子程序

ccc:movbx,offsettime

movdx,io8253b;置8253通道0為方式0工作

moval,l()h

outdx,al

movdx,io8255b;設(shè)8255A口輸入

moval,9bh

outdx,al

movaLnum;取對(duì)應(yīng)的時(shí)間常數(shù)

xlat

movdx,io8253a

outdx,al;向8253通道。輸出

kkk:movdx,io8255a

inal,dx;從8255A口讀一字節(jié)

testal,01^IJPAO口與否為1

jzkkk;若不為1,則轉(zhuǎn)KKK

ret;子程序返回

delayendp

codeends

endstart

4測(cè)試方案和測(cè)試成果

測(cè)試方案測(cè)試成果

啟動(dòng)程序,出現(xiàn)按繼提醒,按下機(jī)內(nèi)/試驗(yàn)儀發(fā)出對(duì)應(yīng)的音階

1?8鍵

變化開關(guān)狀態(tài)(可隨時(shí)任意變對(duì)應(yīng)發(fā)出對(duì)應(yīng)口勺音階

化),按1?8鍵

“彈琴”發(fā)出優(yōu)美旋律

按下ESC鍵退出程序

5體會(huì)

通過(guò)這次微機(jī)試驗(yàn)課程設(shè)計(jì),使我對(duì)微機(jī)軟硬件結(jié)合有了深入

W、J理解。本來(lái)并不太清晰是什么意思,一直都很模糊,聽書本也是很

迷茫;而之前的那些單元試驗(yàn),也沒(méi)有都做好。之前做日勺試驗(yàn),由于

大部分是驗(yàn)證性日勺,因此就很被動(dòng)地去做,甚至并沒(méi)有想為何要那樣

連電路,內(nèi)部的代碼更沒(méi)有認(rèn)真看。這次課程設(shè)計(jì),要自己去設(shè)計(jì)整

個(gè)過(guò)程,理解學(xué)習(xí)自己本來(lái)并沒(méi)有真正弄懂日勺東西。例如某些程序的

代碼日勺意思,匯編語(yǔ)言日勺邏輯,例如某些芯片的用途。使我對(duì)前面所

做日勺試驗(yàn)有了原理性的理解,回頭看某些試驗(yàn),也知其然其因此然了。

同步對(duì)書本上講H勺某些內(nèi)容,不再像此前那樣覺(jué)得抽象,通過(guò)這次設(shè)

計(jì),有了詳細(xì)日勺理解。

同步,我也懂得了設(shè)計(jì)一種項(xiàng)目,應(yīng)當(dāng)怎樣下手。應(yīng)當(dāng)先對(duì)項(xiàng)目

規(guī)定有個(gè)全面日勺理解,懂得要做什么,然后根據(jù)規(guī)定所要波及到日勺知

識(shí)我們要積極去攝取,結(jié)合自己已學(xué)過(guò)日勺,再對(duì)整體框架有個(gè)感知,

心里有數(shù)后,進(jìn)行設(shè)計(jì)。設(shè)計(jì)時(shí)用流程圖,這很重要,這樣整個(gè)思緒

就很清晰,并且是按照軟硬件語(yǔ)言H勺邏輯次序進(jìn)行,就很以便。設(shè)計(jì)

過(guò)程可以分模塊,不要一開始就想把所有的功能都實(shí)現(xiàn)了,應(yīng)當(dāng)一種

模塊一種模塊地實(shí)現(xiàn),再總的連起來(lái),實(shí)現(xiàn)最終的總模塊。在每個(gè)模

塊設(shè)計(jì)時(shí),盡量想到比較簡(jiǎn)樸的設(shè)計(jì),簡(jiǎn)化編程和電路,也可少出錯(cuò)。

對(duì)微機(jī)是這樣,對(duì)其他的像數(shù)字系統(tǒng)設(shè)計(jì):也是同樣的。

因此,我也覺(jué)得微機(jī)試驗(yàn)的這種形式的課程設(shè)計(jì)是很好也很有必

要的,對(duì)我們對(duì)微機(jī)試驗(yàn)的理解有很大協(xié)助口

四、實(shí)時(shí)時(shí)鐘試驗(yàn)

1試驗(yàn)?zāi)康?/p>

1.1理解RTC實(shí)時(shí)時(shí)鐘特性、功能、構(gòu)造

1.2理解RTC實(shí)時(shí)時(shí)鐘寄存器描述

L3理解RTC中斷

2試驗(yàn)過(guò)程

2.1運(yùn)用RTC口勺增量功能進(jìn)行1s口勺定期,當(dāng)定期時(shí)間到,取反LED

控制

#include"config.h〃

SdefineLEDICON0x00000400APO.10口為L(zhǎng)ED1

控制器*/

/*定義Fpclk值,用于設(shè)置串口波特率*/

ttdefineFPCLK3686250L

2.2初始化實(shí)時(shí)時(shí)鐘

voidRTCIni(void)

{PREINT=FPCLK/32768-l;〃設(shè)置預(yù)分頻器

PREFRAC=FPCLK-(FPCLK/32768)*32768;

YEAR=2023;〃初始化年

M0NTH=6;〃初始化月

D0M=10;〃初始化日

CIIR=OxOl;〃設(shè)置秒值的增量

產(chǎn)生一次中斷

CCR=OxOl;〃啟動(dòng)RTC

)

2.3使用RTC的秒增量中斷功能控制LED閃動(dòng)

intmain(void)

{PINSELO=OxOOOOOOOO;〃引腳連接設(shè)置

PINSELl=OxOOOOOOOO;

IODIR=LEDICON;

RTCIni();〃初始化RTC

while(1)

{IOSET=LED1CON;〃熄滅LED1

while(O=(TLR&OxO1));〃等待RTC增量中

斷標(biāo)志

ILR=0x01;〃清除中斷標(biāo)志

IOCLR=LED1CON;〃點(diǎn)亮LED1

while(0==(ILR&0x01));

TLR=OxOl;

)

return(0);

U1

S3.3V

XTAL1P0.0.H-xD0:PWM1

XTAL2P0.1/RxDaPWM3

P0.2/SCUCAP0.0遑

P0.3/SDA/MAT0.0

P0.4/SCK/OAP0.1

D

P0.5/MISO/MAT0.1遑

P0.6/MOSI/CAP0.2

P0.7/SSEUPWM2

P0.aaxD1,PWM4璞

P0.9/RxDVPWM6

P0.10/RTS1/CAP1.0

P0.11/CTS1/CAP1.1a

P0.12/DSR1XMAT1.0

P0.13/DTR1/MAT1.1

DBGSELP0.14/DCD1/EINT1H

P0.15/RI1/EINT2

P0.16/EINT0/MAT0.2

RTCKP0.17/CAP1.2/TRST

PO.IS/CAPl.a^TMS2

P0.19/MAT1.2/TCK-

RSTP0.20/MAT1.3/TDI3

P0.21/PWM50TDO-

0P0.22H-RACECLKH

1.8VP0.23/PIPESTAT0

H8i

P0.24/PIPESTAT1

9一

P0.25/PIPESTAT2

H一

V18P0.26/TRACESYNC

SsPO.Sy.Q-RACEPKTO/TRST

SsP0.28/TRACEPKT0/IMS

SsP0.29/TRACEPKT2/TCK

SSP0.30/TRACEPKT3/TDI

IP0.31/EXTIN0/TDO

2.4運(yùn)行rtc進(jìn)行計(jì)時(shí),并將所計(jì)時(shí)間值不停地通過(guò)串口向上位機(jī)發(fā)

#include"config.h〃

SdefineLEDICON0x00000400/*P0.10口為L(zhǎng)ED1控

制端*/

/*定義Fpclk值,用于設(shè)置串口波特率*/

SdefineFPCLK2764800L

/*定義串口模式設(shè)置數(shù)據(jù)構(gòu)造*/

typcdefstructUartMode

{uint8datab;〃字長(zhǎng)度,5/6/7/8

uint8stopb;〃停止位,1/2

uint8parity;〃奇偶校驗(yàn)位,0

溫馨提示

  • 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)論