川大計算機(jī)綜合實(shí)踐報告_第1頁
川大計算機(jī)綜合實(shí)踐報告_第2頁
川大計算機(jī)綜合實(shí)踐報告_第3頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

....四川大學(xué)網(wǎng)絡(luò)教育學(xué)院(網(wǎng)絡(luò)教育)計算機(jī)綜合實(shí)踐校外學(xué)習(xí)中心: 廈門 學(xué)院學(xué)專層生姓名:電氣工程及其自動化專升本級:2017秋學(xué)號:實(shí)踐時間:20193月4日實(shí)驗(yàn)一 DEBUG調(diào)試工具熟悉、使用一、實(shí)驗(yàn)題目 熟悉、使用DEBUG調(diào)試工二、實(shí)驗(yàn)?zāi)康慕獠⒅鸩绞煜R編語言的編輯方法及特點(diǎn).8088間的分配等。掌握匯編語言的編輯、匯編及連接的過程。解并逐步掌握運(yùn)用DEBUG進(jìn)調(diào)試匯編語言程序。借助DEBUG改正。三、實(shí)驗(yàn)內(nèi)容:1、進(jìn)入DEBUG方法:在Windows"DEBUG"方法2:在運(yùn)對話框中輸入"CMD"啟動DOS命窗口后輸入"DEBUG"DOS入"DEBUG"2、DEBUG命格式DEBUG的每個命是一個字母,后跟一個或多個參數(shù)。下面對DEBUG命作幾點(diǎn)說明?!ぷ帜阜执笮??!ぶ皇褂?6進(jìn)制數(shù),且能帶后綴 H?!ひ钥崭窕蚨禾栕鳛槊黜?xiàng)之間的分隔符。分隔符只在兩個數(shù)值之間是必須的?!た梢杂肅trl-C或Ctrl-Break終止命的執(zhí)?!ぽ斎氲拿姓Z法錯誤,則提示“ Error ,并用“^指出誤位置。3、常用的Debug功能用Debug的R命查看、改變 CPU寄存器的內(nèi)容用Debug的D命查看內(nèi)存中的內(nèi)容;用Debug的E命改寫內(nèi)存中的內(nèi)容;用Debug的U命將內(nèi)存中的機(jī)器指翻譯成匯編指;用Debug的T用Debug的A命以匯編指的格式在內(nèi)存中寫一條機(jī)器指4、用Debug的R命查看、改變 CPU寄存器的內(nèi)容;R命用來顯示和修改寄存器的值,包括以下兩種格式。R顯示所有寄存器和8個標(biāo)志位的值,并反匯編CS:IP所指的指。R顯示指定寄存器的值,并等待用戶鍵入新的值,按回車鍵結(jié)束R命。5Debug的D命查看內(nèi)存中的內(nèi)容;D命可以查看內(nèi)存中的內(nèi)容,D1M命可0000:0000H-FFFF:FFFFH中的任何一個單元的內(nèi)存10000H"d的格式來查看,如輸入-d1000:0d1000:91000:9處的內(nèi)容。d1000:091000:0-1000:9的內(nèi)容一進(jìn)入可直接使用D命直接查看,將出 Debug預(yù)的地址處的內(nèi)容6Debug的E命改寫內(nèi)存中的內(nèi)容;使用"e起始地址數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)..."的格式來進(jìn)1000:0-1000:934、5、6、7、8、9-e1000:00123456789也可以采用提問方式一個一個修改內(nèi)存中的內(nèi)容,如輸入e,按Enter入下一個要修改的數(shù)據(jù),最后Enter鍵結(jié)束操作。輸入字符的格式:如-e1000:101'a'2"c++"3"IBM"1a2c++3IBM到相應(yīng)單元向內(nèi)容中寫入機(jī)器碼,如b80100代表movax,0001),b90200(代表movcx,002),代表addax,-e1000:0b80100b9020001c就將該程序輸入內(nèi)容1000:0處,然后使用u命-u1000:0編指。如果要執(zhí)該程序,首先用r命將cs,再執(zhí)t命,單步執(zhí)程序。執(zhí)T命時,CPU執(zhí)CS:IP執(zhí)的指并將 IP加1.7、用Debug的A命以匯編指的形式在內(nèi)存中寫機(jī)器示:用 A命,輸入下程序并運(yùn)-a1000:0movax,1movbx,2movcx,3addax,bxaddax,cxaddax,ax直接按Enter鍵結(jié)果輸入。用r命將 cs修改成修改成再執(zhí)t命,單步執(zhí)程序。執(zhí) T命時,CPUCS:IP執(zhí)的指并將 IP加1.....實(shí)驗(yàn)二 設(shè)計匯編語言程序一. 實(shí)驗(yàn)題目 設(shè)計匯編語言程二. 實(shí)驗(yàn)?zāi)康淖址y(tǒng)計程序設(shè)計雙字乘法程序設(shè)計三. 實(shí)驗(yàn)內(nèi)容字符統(tǒng)計。在數(shù)據(jù)段中建一個緩沖區(qū)變 編程使得程具有如下功能:從鍵盤輸入一個子字符存入VER,從鍵盤輸入包含一個或幾個子字符的字符存入 BUFFER。統(tǒng)計BUFFER中的字符含有多少個子字符以及每個子字符的位置。雙字乘法程序。設(shè)計一個程序?qū)崿F(xiàn)32位帶符號雙數(shù)乘法運(yùn)算。 由于只有8位和16位的乘法指。因此32位乘法運(yùn)算是能直接用指實(shí)現(xiàn)的。但可以用16位乘法指,通過 4次想乘然后把部分積想加。對于帶符號數(shù),可以先根據(jù)絕對值求得積。然后判斷積的符號,積為負(fù)數(shù),應(yīng)將其用補(bǔ)碼表示。四、程序設(shè)計1、字符統(tǒng)計程序設(shè)計#include<iostream>usingnamespaceintmain(){chara;intb=0,c=0,d=0,e=0,f=0;cout<<"請輸入一任意字符:";a=cin.get();while(a!='\n'){if(a<0||a>=128)b++;elseif(a>='a'&&a<='z'||a>='A'&&a<='Z')c++;elseif(a=='d++;elseif(a>='0'&&a<='9')e++;elsef++;a=cin.get();}cout<<"總共有"<<b/2+c+d+e+f<<":"<<endl;cout<<"中文"<<"\t"<<"英文"<<"\t"<<"空格"<<"\t"<<"數(shù)字"<<"\t"<<"其他"<<endl;cout<<b/2<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<endl;return0;}分別統(tǒng)計出英文字母,空格,數(shù)字和其他字符的個數(shù)。2datasegmentxdw1,2;ydw3,4;乘數(shù)zdw4dup(?);dataendscodesegmentassumeds:data,cs:codestart:movmovds,axmovax,xmulymovz,axmovmovmulymovz+4,axmovz+6,dxmovax,xmuly+2addz+4,axadcz+6,dxmovax,x+2muly+2adcz+8,axadcz+10,dxadcz+12,0movax,4c00hint21hcodeendsendstart實(shí)驗(yàn)三 8253定時/計數(shù)器接口與數(shù)字電子琴一、實(shí)驗(yàn)題目 8253定時器/計數(shù)器接口與數(shù)字電子二、實(shí)驗(yàn)?zāi)康母淖兌〞r器2的計數(shù)值來改變聲音頻,通過編程來獲得聲調(diào)(頻)和節(jié)奏(延時長短),使計算機(jī)演奏出樂曲來。三、實(shí)驗(yàn)內(nèi)容設(shè)計程序讓微機(jī)演奏一段簡單樂曲用 DOS的鍵盤管功能。將微機(jī)變?yōu)橐粋€具有簡單功能的電琴(選作。四、程序設(shè)計硬件設(shè)計用實(shí)驗(yàn)板上的 8253計數(shù)/定時器和8255并接口,定時器用工作方式 3產(chǎn)生一定頻信號,通過可編程的并外圍接口芯片8255控制頻信號的通斷。8255的A口設(shè)置為輸出的A口的低兩位用來控制揚(yáng)聲器驅(qū)動當(dāng)輸出端口的PA0位為“1或?yàn)椤?時, 將使控制驅(qū)動器的與門電接通或關(guān)閉,使 8253所發(fā)出的音頻信號能到達(dá)驅(qū)動器或被阻斷。這樣通過控制PA0的變化,可使揚(yáng)聲器接通和斷開,控制揚(yáng)聲是否能發(fā)出聲音。此外,通過控PA0的通斷時間,就能發(fā)出同的音長。8255的PA1位為“1時,控制 8253定時器產(chǎn)生驅(qū)動揚(yáng)聲器發(fā)聲的音頻信號,該位為“0則發(fā)信號。 8253有三個定時器,分為0號1號和2號定時器,驅(qū)動揚(yáng)聲器的是0號定時器,該定時器工作在方式3,是一個頻發(fā)生器,它負(fù)責(zé)向揚(yáng)聲器發(fā)送指定頻的脈沖信號。當(dāng)8255的PA0和PA1為 1時發(fā)出指定頻的聲音信號的前提下,聲音信號通過與門到達(dá)驅(qū)動器驅(qū)動揚(yáng)聲器發(fā)聲硬件原圖如圖1所示:Q08255 8255

門控控制喇叭

8253計數(shù)器1硬件圖

揚(yáng)聲揚(yáng)聲器驅(qū)動 器揚(yáng)聲器驅(qū)動電如圖2所示。2揚(yáng)聲器驅(qū)動電軟件設(shè)計系統(tǒng)要求實(shí)2個功能電子琴和音樂盒的功能兩者發(fā)聲的方法一樣,只是一個數(shù)據(jù)是從鍵盤讀取的,另一個是已經(jīng)保存好的數(shù)據(jù)首先我們可以用一個子程序?qū)崿F(xiàn)單個音調(diào)的產(chǎn)生對8253輸入同的計數(shù)初值生成同頻的波形, 然后延時一段時間電子琴程序主要是讀取鍵盤按鍵,根據(jù)鍵值產(chǎn)生同的音調(diào)即可。而樂曲的播放先將樂曲的音符編碼表和節(jié)拍編碼表建好的,然后在播放時讀取數(shù)據(jù)。SOUND單音調(diào)子程序的調(diào)用前需要進(jìn)以下幾個方面工作:確定相應(yīng)的音調(diào)所對應(yīng)的頻,查表可以得到,再由頻得到對應(yīng)的8253計數(shù)初值。確定音長,即一個音符所持續(xù)的時間。讀取8253計數(shù)初值和音長8253置初值讀取8253計數(shù)初值和音長8253置初值8253GATE延時8253GATE返回圖3單音調(diào)子程序程圖音樂盒程序音樂盒的樂曲播放程序中需要有兩組數(shù)據(jù)支持一組是頻數(shù)據(jù),一組是節(jié)拍時間數(shù)據(jù)音符的頻可以通過簡譜從頻表中查得。 節(jié)拍時間就是音符的持續(xù)時間取決于樂曲的速和每個音符的節(jié)拍數(shù)據(jù)。如四四拍)中,每小節(jié)包括4拍,全音符持續(xù)4拍,二音符持續(xù)2拍,四分音符持續(xù)一拍,八分音符持續(xù)半拍等。有音調(diào)與頻和時間的關(guān)系后,就可以按照樂曲的曲譜將每個音符的頻和持續(xù)的時間定義成兩組數(shù)據(jù)表,然后編程依次取出表中的頻值和節(jié)拍值,調(diào)用單音調(diào)子程序就可依次產(chǎn)生各個音調(diào),播放出樂曲。在程序中存儲幾個樂曲數(shù)據(jù),根據(jù)音樂盒子菜單選擇相應(yīng)的樂曲演奏,讀取對應(yīng)的數(shù)據(jù)輸出。樂曲《兩只虎》的簡譜如下:兩只虎1=C 4/41 2 3 1|1 2 3 1|3 4 5 -|3 4 5 -|56 54 3 1|56 54 3 1|2 5 1 -|2 5 1 -|對應(yīng)的頻數(shù)據(jù)表Freq、節(jié)拍數(shù)據(jù)Time如下:TWOTIGERS_FRE DW 2DUP(524,588,660,524,0);樂曲的頻表DW 2DUP(660,698,784,0)DW 2DUP(784,880,784,698,660,524,0)DW 2DUP(588,392,524,0),1TWOTIGERS_TIME;樂曲的時間表DW10DUP(100),200,100,100,200DW2DUP(50,50,50,50,100,100)DW2DUP(100,100,200)outb_p(0x34,0x43);outb_p(LATCH&0xff,0x40);outb_p(LATCH>>8,0x40);outb(inb_p(0x21)&~0x01,0x21);//允許接收定時器中斷}voiddo_timer(void){這是定時器主程序,用于每隔一段時間后進(jìn)某些操作}[8253.asm]://以下是nasm格式的匯編代碼,這個中斷處函數(shù)必須用匯編timer_interrupt:pushgspushfspushespushdspushebppushedipushesipushedxpushecxpushebxpusheax;如果你在操作系統(tǒng)下使用,以下三必須刪除 ,否則必須把0x10改為內(nèi)核段選擇符movmovds,axmoves,axmoval,0x20out0xa0,alout0x20,alcalldo_timerpopebxpopecxpopedxpopesipopedipopebppopdspopespopfspopgsxoriretd實(shí)驗(yàn)四 實(shí)時時鐘實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模赫莆誂RM7LPC2148時器模塊的使用方法;掌握LPC2148RTC模塊的使用方法。二、實(shí)驗(yàn)內(nèi)容:學(xué)習(xí)使用LPC2148的內(nèi)部定時器以及RTC模塊;自編程實(shí)現(xiàn)用RTC模塊在口調(diào)試助手上顯示當(dāng)前時間,自編程實(shí)現(xiàn)用定器模塊在口調(diào)試助手上顯示 9-0的倒計時,間隔1S三、實(shí)驗(yàn)原:1、定時器模塊:對TOTC設(shè)置,即設(shè)置定時器的值,TOPR,設(shè)置預(yù)分頻值,TOMCR設(shè)置匹配模式,復(fù)位并中斷,TOMR,設(shè)置匹配值,TOTCR,啟動寄存器。2、RTC模塊。設(shè)置RTC基準(zhǔn)時鐘分頻器。初始化RTC如。報警中斷設(shè)置,如等。啟動RTC,即CCR的CLKKEN四、實(shí)驗(yàn)步驟:在D:\ARM7_Tool\Debug_Tool\R340安裝RTC打開對應(yīng)的IAR工作空間RS232_SMG;修改主程序使其達(dá)到實(shí)驗(yàn)內(nèi)容的要求并仿真直至程序無誤;將程序燒入試驗(yàn)箱中,運(yùn);打開D:\ARM7_Tool\Debug_Tool\口調(diào)試助手 V2.2我的電腦-管 -設(shè)備管器 -端(com和觀測口號 修改口調(diào)試助手對應(yīng)的口號,選擇十進(jìn)制發(fā)送,手動發(fā)送。五、實(shí)驗(yàn)程序:RTC實(shí)時時鐘:#include"includes.h"#include<stdlib.h>#include<stdio.h>#defineUART_BPS9600uint8strymd[16]=" uint8strhms[16]=" : : ";voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--);for(i=0;i<5000;i++);}voidUART0_Ini(void){U0LCR=0x83;U0DLM= 0x00;U0DLL= 0x14;U0LCR=0x03;}voidUART0_SendByte(uint8data){U0THR =data;while((U0LSR&0x40)==0);}uint8UART0_RcvByte(viod){uint8rcv_data;while((U0LSR&0x01)==0);rcv_data=U0RBR;returnrcv_data;}voidUART0_SendStr(uint8constwhile(1){if(*str=='\0')break;UART0_SendByte(*str++);}voidRTCIni(void){PREINT=95;PREFRAC=0;YEAR=2005;MONTH=6;DOM=10;HOUR=8;MIN=30;SEC=0;CIIR=0x01;CCR=0x01;}structDATE{uint16year;uint8mon;uint8day; //uint8dow;};structTIME{uint8uint8min;uint8sec;};voidGetTime(structDATE*d,structTIME*t){d->year=YEAR;d->mon=d->day=DOM;t->hour=t->min=MIN;t->sec=SEC;}voidtimefuz(structDATE*d,structTIME*t){strymd[0]=d->year/1000+'0';strymd[1]=d->year/100%10+'0';strymd[2]=d->year/10%10+'0';strymd[3]=d->year%10+'0';strymd[5]=d->mon/10+'0';strymd[6]=d->mon%10+'0';strymd[8]=d->day/10+'0';strymd[9]=d->day%10+'0';strhms[0]=t->hour/10+'0';strhms[1]=t->hour%10+'0';strhms[3]=t->min/10+'0';strhms[4]=t->min%10+'0';strhms[6]=t->sec/10+'0';strhms[7]=t->sec%10+'0';}intmain(void){RTCIni();structDATE*d;structTIME*td=(structDATE*)malloc(sizeof(structt=(structTIME*)malloc(sizeof(structwhile(1){while((T0IR&0x01)==T0IR=0x01;GetTime(d,t);timefuz(d,t);UART0_SendStr(strymd);UART0_SendStr(strhms);}free(d);free(t);return0;}TIMR0-10秒voidTime0Init(void){T0PR=99;T0MCR=0x03;T0MR0=110592;T0TCR=0x03;T0TCR=0x01;}intmain(void){Time0Init();uint8Char='9';while(1){while((T0IR&0x01)==T0IR=0x01;UART0_SendByte(Char);Char--;if(Char=='/')Char='9';return0;}實(shí)驗(yàn)五 8255并接口鍵盤實(shí)一、實(shí)驗(yàn)?zāi)康暮鸵髮W(xué)習(xí)用并接口芯片 8255構(gòu)成并接口電的基本方法。熟悉掌握并接口芯片 8255的基本性能及在實(shí)際應(yīng)用中硬件接、初始化編程方法。二、實(shí)驗(yàn)內(nèi)容8255219口為輸出口,218218口將K0~K7219三、實(shí)驗(yàn)算法8255219口設(shè)置為輸出口,218過輸入指從82552188255219口輸出,在燈上顯示出來。四、實(shí)驗(yàn)電圖電圖如下所示:五、

溫馨提示

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

最新文檔

評論

0/150

提交評論