版權(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
b±
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國(guó)大唐集團(tuán)限公司重慶分公司所屬石柱發(fā)電公司招聘46人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年江蘇省南通市事業(yè)單位考試招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川內(nèi)江市市中區(qū)部分事業(yè)單位招聘21人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海城建城市運(yùn)營(yíng)(集團(tuán))限公司招聘51人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年廣東省深圳市事業(yè)單位招聘1420人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川自貢市沿灘區(qū)事業(yè)單位招聘工作人員67人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省瀘州市江陽(yáng)區(qū)事業(yè)單位考試招聘125人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025“才聚齊魯成就未來(lái)”山東南郊集團(tuán)投資限公司招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 防護(hù)頭盔勞動(dòng)防護(hù)用品管理細(xì)則
- 2024年電子設(shè)備租賃及售后服務(wù)合同范本2篇
- 一體化綜合指揮平臺(tái)(應(yīng)急指揮部分)建設(shè)方案
- 理正深基坑之鋼板樁受力計(jì)算
- 國(guó)家開放大學(xué)電大??啤吨袊?guó)當(dāng)代文學(xué)》期末試題及答案
- 廣東話粵語(yǔ)姓名拼音大全
- 《金融工程原理-無(wú)套利均衡分析》筆記01
- 工程項(xiàng)目收尾管理辦法
- 閘門及啟閉機(jī)安裝專項(xiàng)施工方案
- 應(yīng)征公民體格檢查表(征兵)
- 電力系統(tǒng)分析名詞解釋、簡(jiǎn)答、模擬試卷
- 家具制造企業(yè)消防安全要求
- 巖石堅(jiān)固性和穩(wěn)定性分級(jí)表
評(píng)論
0/150
提交評(píng)論