川大2012春計(jì)算機(jī)綜合實(shí)踐_第1頁(yè)
川大2012春計(jì)算機(jī)綜合實(shí)踐_第2頁(yè)
川大2012春計(jì)算機(jī)綜合實(shí)踐_第3頁(yè)
川大2012春計(jì)算機(jī)綜合實(shí)踐_第4頁(yè)
川大2012春計(jì)算機(jī)綜合實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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é)院計(jì)算機(jī)綜合實(shí)踐校外學(xué)習(xí)中心:貴陽(yáng)學(xué)院學(xué)生姓名:吳衛(wèi)專(zhuān)業(yè):電氣工程及其自動(dòng)化層次:專(zhuān)升本年級(jí):2012年春學(xué)號(hào):DH1121Y1002實(shí)踐時(shí)間: 2013年11月實(shí)驗(yàn)一:熟悉、使用DEBUG調(diào)試工具借助DEBUG調(diào)試工具來(lái)發(fā)現(xiàn)匯編語(yǔ)言程序的錯(cuò)誤所在并加以改正。通過(guò)實(shí)驗(yàn),掌握DEBUG的常用基本命令,學(xué)會(huì)如何在windows的命令模式下啟動(dòng)DEBUG,進(jìn)而學(xué)會(huì)如何使用DEBUG查看CPU和內(nèi)存,以及進(jìn)行程序的跟蹤調(diào)試等。1實(shí)驗(yàn)?zāi)康?.1學(xué)習(xí)如何在Windows的命令模式下啟動(dòng)DEBUG。1.2掌握DEBUG的常用基本命令。1.3學(xué)習(xí)如何使用DEBUG查看CPU和內(nèi)存以及進(jìn)行跟蹤調(diào)試。2啟動(dòng)DEBUG2.1打開(kāi)Windows命令窗口選擇“開(kāi)始”→“運(yùn)行”→輸入“cmd”命令2.2啟動(dòng)DEBUG在命令窗口中啟動(dòng)DEBUG,將顯示連接符“-”,這時(shí)可輸入各種DEBUG命令。2.3關(guān)于使用命令的幾點(diǎn)說(shuō)明:在提示符“-”下才能輸入命令,在按“回車(chē)”鍵后,該命令才開(kāi)始執(zhí)行;命令是單個(gè)字母,命令和參數(shù)的大小寫(xiě)可混合輸入;可用F1、F2、F3、Ins、Del、→等編輯鍵來(lái)編輯本行命令;=1\*GB3①用D命令查看1000:0處的內(nèi)容:D1000:0=2\*GB3②用E命令輸入:E1000:01‘a(chǎn)+b’2‘c++’3‘IBM’=3\*GB3③用D命令查看1000:0~1000:f單元中內(nèi)容的變化:D1000:0例4用E命令以提問(wèn)的方式來(lái)逐個(gè)地修改從某一地址開(kāi)始的內(nèi)存單元中的內(nèi)容。以從1000:10單元開(kāi)始為例。步驟:=1\*GB3①用D命令查看1000:10處的內(nèi)容:D1000:10=2\*GB3②用E命令輸入:E1000:10,按Enter鍵=3\*GB3③DEBUG將顯示起始地址1000:0010以及第一個(gè)單元(即1000:0010單元)的原始內(nèi)容:00.,然后光標(biāo)停在“.”的后面,提示輸入想要寫(xiě)入的數(shù)據(jù),此時(shí)有兩種選擇:其一輸入數(shù)據(jù),完后按空格鍵,即用輸入的數(shù)據(jù)改寫(xiě)當(dāng)前的內(nèi)存單元;其二不輸入數(shù)據(jù),直接按空格鍵,則表示不對(duì)當(dāng)前內(nèi)存單元進(jìn)行改寫(xiě)=4\*GB3④當(dāng)前單元處理完成后(不論是改寫(xiě)或者沒(méi)有改寫(xiě),只要按了空格鍵,就表示處理完成),DEBUG將顯示下一個(gè)內(nèi)存單元的原始內(nèi)容,并提示進(jìn)行修改,可以用同樣的方法進(jìn)行處理=5\*GB3⑤所有希望改寫(xiě)的內(nèi)存單元改寫(xiě)完畢后,按ENTER鍵,E命令結(jié)束=6\*GB3⑥用D命令查看1000:10單元中內(nèi)容的變化:D1000:104實(shí)驗(yàn)任務(wù)C:\>debug-F10017F00-A1000B3E:0100MOVDL,010B3E:0102MOVAH,020B3E:0104INT210B3E:0106INT200B3E:0108-NC:\1ST.COM-RBXBX0000:-RCXCX0000:8-W100Writing00008bytes-QC:\>在dos下執(zhí)行程序C:\>dir1st*.*VolumeindriveCisNTFSCCCCVolumeSerialNumberisFC03-2958DirectoryofC:\2010-8-1818:5181ST.COM1File(s)8bytes0Dir(s)1,080,619,008bytesfreeC:\>1st?C:\>方法一:C:\>DEBUG1ST.COM-G=100?Programterminatednormally方法二:C:\>DEBUG-NC:\1ST.COM-L100-G=100?Programterminatednormally借助DEBUG調(diào)試工具來(lái)發(fā)現(xiàn)匯編語(yǔ)言程序的錯(cuò)誤所在并加以改正。5實(shí)驗(yàn)結(jié)論這次實(shí)驗(yàn),因?yàn)橐约喝ピO(shè)計(jì)整個(gè)過(guò)程,所以就去了解學(xué)習(xí)自己原來(lái)并沒(méi)有真正弄懂的東西。比如一些程序的代碼的意思,匯編語(yǔ)言的邏輯。使我對(duì)前面所做的實(shí)驗(yàn)有了原理性的了解,回頭看一些實(shí)驗(yàn),也知其然其所以然了。同時(shí)對(duì)課本上講的一些內(nèi)容,不再像以前那樣覺(jué)得抽象,通過(guò)這次設(shè)計(jì),有了具體的理解。實(shí)驗(yàn)二、設(shè)計(jì)匯編語(yǔ)言程序1實(shí)驗(yàn)?zāi)康倪M(jìn)行程序設(shè)計(jì)實(shí)驗(yàn),掌握匯編語(yǔ)言程序。實(shí)驗(yàn)包括對(duì)字符串統(tǒng)計(jì)程序進(jìn)行設(shè)計(jì);設(shè)計(jì)雙字乘法程序設(shè)計(jì);設(shè)計(jì)字符串統(tǒng)計(jì)程序設(shè)計(jì)雙字乘法程序設(shè)計(jì)。掌握宏匯編中的標(biāo)號(hào)的使用學(xué)會(huì)使用msam編寫(xiě)簡(jiǎn)單的程序2預(yù)備知識(shí)匯編語(yǔ)言程序設(shè)計(jì)是一門(mén)實(shí)踐性很強(qiáng)的課程。編寫(xiě)程序、上機(jī)調(diào)試、運(yùn)行程序是進(jìn)一步學(xué)習(xí)和掌握匯編語(yǔ)言程序設(shè)計(jì)的必要手段。在編譯匯編程序后,需要進(jìn)行調(diào)試,DEBUG.EXE是DOS提供的用于調(diào)試可執(zhí)行程序的工具軟件,是匯編語(yǔ)程序設(shè)計(jì)中常用的調(diào)試工具。在DEBUG環(huán)境下,不但可以調(diào)試經(jīng)匯編、連接生成的可執(zhí)行程序,也可以編寫(xiě)簡(jiǎn)單的程序。調(diào)試匯編語(yǔ)言程序,能使用戶接觸到計(jì)算機(jī)內(nèi)部,允許用戶直接觀察和修改CPU的寄存器;能觀察、修改內(nèi)存單元;允許直接輸入機(jī)器指令并單步執(zhí)行;能反匯編程序??梢哉f(shuō),debug是觀察和了解計(jì)算機(jī)內(nèi)部運(yùn)行情況的有利助手。3匯編語(yǔ)言源程序上機(jī)操作過(guò)程3.1源程序上機(jī)過(guò)程流程圖開(kāi)始建立源文件Y有人工檢查嗎?修改源程序NASM文件存盤(pán)調(diào)MASM程序匯編源文件Y有語(yǔ)法錯(cuò)誤?N調(diào)LINK程序,連接目標(biāo)文件?連接有錯(cuò)?EXE文件存盤(pán)用DELBUG查錯(cuò)執(zhí)行EXE文件Y結(jié)果有錯(cuò)?N結(jié)束3.2實(shí)驗(yàn)步驟1)編寫(xiě)一段代碼(m.asm)功能是:顯示字符串datasegmentmovax,numnumdw8072horax,axdataendsjnsdonecodesegmentnegaxassumecs:code,ds:datamovnum,axstartprocfardone:rte pushdsstartendp xorax,axcodeends pushaxendstartmovax,datamovds,ax2)在DOS提示符下鍵入:對(duì)名為m.asmd的文件進(jìn)行編譯,連接生產(chǎn).obj和.exe文件:-cd..-cd..-cd\masm-msam-m-linkt-debugm.exe得到可執(zhí)行文件后就可以直接調(diào)用可執(zhí)行文件名,從盤(pán)上調(diào)到內(nèi)存中運(yùn)行。3)編寫(xiě)一段代碼(m.asm)功能是:顯示字符串datasegmentlp3:cmpax,64hmovdl,[bx+si]sdb4dup(?)movds,axadddl,30hxdb?jblp4int21hdataendsincdlincsicodesegmentsubax,64hlooplp7assumecs:code,ds:datajmplp3movah,1start:movax,datalp4:movs+1,dlint21hmovds,axmovdl,0movah,4chmovbx,1lp5:cmpax,0ahint21hmovax,0jblp6codeendsmovcx,100incdlendstartlop:addax,bxsubax,0ahincbxjmplp5looploplp6:movs+2,dlmovdl,0movs+3,allp1:cmpax,3e8hmovbx,offsetsjblp2movsi,0incdlmovah,2subax,3e8hmovcl,4jmplp1lp7:movdi,[bx+si]lp2:movs,dlordi,30hmovdl,04)在DOS提示符下鍵入:對(duì)名為m.asmd的文件進(jìn)行編譯,連接生產(chǎn).obj和.exe文件:-cd..-cd..-msam-linkt-cd\masm–m-debugm.exe4實(shí)驗(yàn)結(jié)論編寫(xiě)好一個(gè)程序后,要想在計(jì)算機(jī)中調(diào)試、運(yùn)行,必須要有一個(gè)程序來(lái)支持程序的編輯、修改等操作。這種支援程序叫編輯程序。編輯程序有很多種,但按功能劃分,主要有兩大類(lèi)。一類(lèi)是行編輯程序,如EDIT編輯程序;另一類(lèi)是全屏幕編輯程序如QuickEdit(QE)。行編輯程序功能較弱,不如全屏幕編輯程序方便、靈活。在編輯匯編語(yǔ)言的源程序時(shí),可以使用已熟悉的。實(shí)驗(yàn)三、8253定時(shí)器/計(jì)數(shù)器接口與數(shù)字電子琴選擇利用實(shí)驗(yàn)儀揚(yáng)聲器/PC機(jī)內(nèi)8253驅(qū)動(dòng)內(nèi)揚(yáng)聲器改變定時(shí)器2的計(jì)數(shù)值來(lái)改變聲音頻率,通過(guò)編程來(lái)獲得聲調(diào)(頻率)和節(jié)奏(延時(shí)長(zhǎng)短),利用鍵盤(pán)1、2、3、4、5、6、7、8設(shè)計(jì)一個(gè)電子琴,通過(guò)按數(shù)字鍵響相應(yīng)的樂(lè)符1、2、3、4、5、6、7、i,使能演奏簡(jiǎn)單的樂(lè)曲。使計(jì)算機(jī)演奏出樂(lè)曲來(lái)。1實(shí)驗(yàn)?zāi)康臋z驗(yàn)和提高我在原理與接口綜合應(yīng)用方面分析問(wèn)題與解決問(wèn)題的能力,同時(shí)也給我提供更多、更好的訓(xùn)練機(jī)會(huì)。根據(jù)設(shè)計(jì)要求,盡可能完成設(shè)計(jì)要求的功能,選擇最合適的器件,構(gòu)成最有效的硬件電路來(lái)完成。2實(shí)驗(yàn)要求選擇利用實(shí)驗(yàn)儀揚(yáng)聲器/PC機(jī)內(nèi)8253驅(qū)動(dòng)內(nèi)揚(yáng)聲器與鍵盤(pán)1、2、3、4、5、6、7、8設(shè)計(jì)一個(gè)電子琴,通過(guò)按數(shù)字鍵響相應(yīng)的樂(lè)符1、2、3、4、5、6、7、i,使能演奏簡(jiǎn)單的樂(lè)曲。3程序流程和程序?qū)崿F(xiàn)3.1流程圖開(kāi)始鍵盤(pán)讀入一個(gè)字符是ESC鍵嗎?NN返回DOS是數(shù)字1~8鍵嗎?Y讀出音階值保存賦相應(yīng)頻率延時(shí)3.2程序segsegmentfreqdw262,294,330,349,392,440,494,523;揚(yáng)聲器發(fā)聲各頻率值msgdb'Press1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'timdw400numdb?dsegendsssegsegmentstackdw256dup(?)ssegendscsegsegmentassumecs:cseg,ds:dsegstart:movax,dsegmovds,axmovdx,offsetmsgmovah,9int21h;顯示提示信息sss:movah,7int21h;等待從鍵盤(pán)接收字符,不回顯al=asc碼cmpal,1bhjeexit;若為ESC鍵,則轉(zhuǎn)EXIT退出cmpal,31hjlsss;小于31hcmpal,38h;大于38hjgsss;不在'1'-'8'之間轉(zhuǎn)ssssubal,31hmovnum,al;num求出相應(yīng)的時(shí)間常數(shù)的序號(hào)jinei:moval,numaddal,almovah,00hmovsi,axagain:movdi,freq[si]movbx,timcallgenjmpsssexit:movah,4chint21hgenprocnearmoval,0b6h;設(shè)置8253通道2方式3二進(jìn)制計(jì)數(shù)out43h,almovdx,12hmovax,12928;DXAX=896*533h=18*65536+12928=1.19Mdivdiout42h,al;8253通道2口設(shè)置初值moval,ahout42h,alinal,61h;讀8255PB口movah,aloral,3out61h,alwait1:movcx,0hdelay3:movax,10;延時(shí)子程序delay2:nopdecaxjnzdelay2loopdelay3decbxjnzwait1moval,ahout61h,alretgenendpcsegendsendstart3.3試驗(yàn)儀電子琴流程圖3.4實(shí)驗(yàn)電路:3.5程序datasegmentioport equ0d400h-0280hio8253a equioport+280hio8253b equioport+283hio8255a equioport+288hio8255b equioport+28bhio0832a equioport+290hdata1db80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhdb0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb80h,66h,4eh,38h,25h,15h,09h,04hdb00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波數(shù)據(jù)timedb120,106,94,89,79,70,63,59 ;發(fā)不同音時(shí)8253的計(jì)數(shù)器初值msgdb'Press1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'numdb? ;num為8253計(jì)數(shù)器初值的序號(hào)dataendscodesegmentassumecs:code,ds:datastart: movax,data movds,ax movdx,offsetmsg movah,9 int21h;顯示提示信息sss: movah,7 int21h;從鍵盤(pán)接收字符,不回顯 cmpal,1bh jeexit;若為ESC鍵,則轉(zhuǎn)EXIT cmpal,31h jlsss cmpal,38h jgsss;若不在'1'-'8'之間轉(zhuǎn)sss subal,31h movnum,al;求出相應(yīng)的時(shí)間常數(shù)的序號(hào) movcx,60;取60次32個(gè)正弦波數(shù)據(jù)ddd: movsi,0lll: 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ù) jmpsssexit: movah,4ch int21hdelayprocnear;延時(shí)子程序ccc: movbx,offsettime movdx,io8253b;置8253通道0為方式0工作 moval,10h outdx,al movdx,io8255b;設(shè)8255A口輸入 moval,9bh outdx,al moval,num;取相應(yīng)的時(shí)間常數(shù) xlat movdx,io8253a outdx,al;向8253通道0輸出kkk: movdx,io8255a inal,dx;從8255A口讀一字節(jié) testal,01;判PA0口是否為1 jzkkk;若不為1,則轉(zhuǎn)KKK ret;子程序返回delayendpcodeendsendstart4測(cè)試方案和測(cè)試結(jié)果測(cè)試方案測(cè)試結(jié)果啟動(dòng)程序,出現(xiàn)按鍵提示,按下1~8鍵機(jī)內(nèi)/實(shí)驗(yàn)儀發(fā)出相應(yīng)的音階改變開(kāi)關(guān)狀態(tài)(可隨時(shí)任意改變),按1~8鍵對(duì)應(yīng)發(fā)出相應(yīng)的音階“彈琴”發(fā)出優(yōu)美旋律按下ESC鍵退出程序5實(shí)驗(yàn)結(jié)論通過(guò)這次微機(jī)實(shí)驗(yàn)課程設(shè)計(jì),使我對(duì)微機(jī)軟硬件結(jié)合有了進(jìn)一步的了解。原來(lái)并不太清楚是什么意思,一直都很模糊,聽(tīng)課本也是很迷茫;而之前的那些單元實(shí)驗(yàn),也沒(méi)有都做好。之前做的實(shí)驗(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ì)前面所做的實(shí)驗(yàn)有了原理性的了解,回頭看一些實(shí)驗(yàn),也知其然其所以然了。同時(shí)對(duì)課本上講的一些內(nèi)容,不再像以前那樣覺(jué)得抽象,通過(guò)這次設(shè)計(jì),有了具體的理解。實(shí)驗(yàn)四、實(shí)時(shí)時(shí)鐘實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康?.1了解RTC實(shí)時(shí)時(shí)鐘特性、功能、結(jié)構(gòu)1.2了解RTC實(shí)時(shí)時(shí)鐘寄存器描述1.3了解RTC中斷2實(shí)驗(yàn)過(guò)程2.1利用RTC的增量功能進(jìn)行1s的定時(shí),當(dāng)定時(shí)時(shí)間到,取反LED控制#include"config.h"#defineLED1CON0x00000400/*P0.10口為L(zhǎng)ED1控制器*//*定義Fpclk值,用于設(shè)置串口波特率*/#defineFPCLK3686250L2.2初始化實(shí)時(shí)時(shí)鐘voidRTCIni(void){PREINT=FPCLK/32768-1;//設(shè)置預(yù)分頻器PREFRAC=FPCLK-(FPCLK/32768)*32768;YEAR=2005;//初始化年MONTH=6;//初始化月DOM=10;//初始化日CIIR=0x01;//設(shè)置秒值的增量產(chǎn)生一次中斷CCR=0x01;//啟動(dòng)RTC}2.3使用RTC的秒增量中斷功能控制LED閃動(dòng)intmain(void){PINSEL0=0x00000000;//引腳連接設(shè)置PINSEL1=0x00000000;IODIR=LED1CON;RTCIni();//初始化RTCwhile(1){IOSET=LED1CON;//熄滅LED1while(0==(ILR&0x01));//等待RTC增量中斷標(biāo)志ILR=0x01;//清除中斷標(biāo)志IOCLR=LED1CON;//點(diǎn)亮LED1while(0==(ILR&0x01));ILR=0x01;}return(0);}2.4運(yùn)行rtc進(jìn)行計(jì)時(shí),并將所計(jì)時(shí)間值不斷地通過(guò)串口向上位機(jī)發(fā)送#include"config.h"#defineLED1CON0x00000400/*P0.10口為L(zhǎng)ED1控制端*//*定義Fpclk值,用于設(shè)置串口波特率*/#defineFPCLK2764800L/*定義串口模式設(shè)置數(shù)據(jù)結(jié)構(gòu)*/typedefstructUartMode{uint8datab;//字長(zhǎng)度,5/6/7/8uint8stopb;//停止位,1/2uint8parity;//奇偶校驗(yàn)位,0為無(wú)校驗(yàn),1為奇數(shù)校驗(yàn),2為偶數(shù)校驗(yàn)}UARTMODE;uint8send_buf[16];//UART0數(shù)據(jù)接收緩沖區(qū)2.5初始化串口0,設(shè)置其工作模式及波特率入口參數(shù):baud波特率set模式設(shè)置(UARTMODE數(shù)據(jù)結(jié)構(gòu))出口參數(shù):返回值為1時(shí)表示初始化成功,為0時(shí)表示參數(shù)出錯(cuò)uint8UART0_Ini(uint32baud,UARTMODEset){uint32bak;/*參數(shù)過(guò)濾*/if((0==baud)||(baud>115200))return(0);if((set.datab<5)||(set.datab>8))return(0);if((0==set.stopb)||(set.stopb>2))return(0);if(set.parity>4)return(0);/*設(shè)置串口波特率*/U0LCR=0x80;//DLAB位置1bak=(FPCLK>>4)/baud;U0DLM=bak>>8;U0DLL=bak&0xff;/*設(shè)置串口模式*/bak=set.datab-5;//設(shè)置字長(zhǎng)度if(2==set.stopb)bak|=0x04;//判斷是否為2位停止位if(0!=set.parity){set.parity=set.parity-1;bak|=0x08;}bak|=set.parity<<4;//設(shè)置奇偶校驗(yàn)U0LCR=bak;return(1);}2.6向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢voidSendByte(uint8data){U0THR=data;//發(fā)送數(shù)據(jù)while((U0LSR&0x20)==0);//等待數(shù)據(jù)發(fā)送}2.7將緩沖區(qū)的數(shù)據(jù)發(fā)送回主機(jī)入口參數(shù):buf數(shù)據(jù)緩沖區(qū)no發(fā)送數(shù)據(jù)的個(gè)數(shù)出口參數(shù):無(wú)voidISendBuf(uint8const*buf,uint8no){uint8i;for(i=0;i<no;i++)SendByte(buf[i]);}2.8讀取rtc的時(shí)間值,并將讀出的時(shí)分秒值由串口發(fā)送到上位機(jī)顯示voidSendTimeRtc(void){uint8constMESSAGE[]="RTCTimeis:";uint32times;uint8bak;times=CTIME0;//讀取完整時(shí)鐘寄存器0bak=(times>>16)&0x1F;//取得時(shí)的值send_buf[0]=bak/10+'0';send_buf[1]=bak%10+'0';send_buf[2]=':';bak=(times>>8)&0x3F;//取得分的值send_buf[3]=bak/10+'0';send_buf[4]=bak%10+'0';send_buf[5]=':';bak=times&0x3F;//取得秒的值send_buf[6]=bak/10+'0';send_buf[7]=bak%10+'0';send_buf[8]='\n';ISendBuf(MESSAGE,14);//發(fā)送數(shù)據(jù)ISendBuf(send_buf,9);}2.9初始化實(shí)時(shí)時(shí)鐘voidRTCIni(void){PREINT=FPCLK/32768-1;//設(shè)置預(yù)分頻器PREFRAC=FPCLK-(FPCLK/32768)*32768;YEAR=2005;//初始化年MONTH=6;//初始化月DOM=10;//初始化日HOUR=8;MIN=30;SEC=0;CIIR=0x01;//設(shè)置秒值的增量產(chǎn)生一次中斷CCR=0x01;//啟動(dòng)RTC}2.10讀取實(shí)時(shí)時(shí)鐘的值,并從串口發(fā)送出去intmain(void){UARTMODEuart0_set;PINSEL0=0x00000005;//設(shè)置I/O連接到UART0PINSEL1=0x00000000;IODIR=LED1CON;//設(shè)置LED1控制口為輸出,其它I/O為輸入uart0_set.datab=8;//8位數(shù)據(jù)位uart0_set.stopb=1;//1位停止位uart0_set.parity=0;//無(wú)奇偶校驗(yàn)位UART0_Ini(9600,uart0_set);//初始化串口模式U0FCR=0x01;//使能FIFORTCIni();//初始化RTCwhile(1){IOSET=LED1CON;//熄滅LEDwhile(0==(ILR&0x01));//等待RTC增量中斷標(biāo)志位ILR=0x01;//清除中斷標(biāo)志位SendTimeRtc();//讀取時(shí)鐘值,并向UART0發(fā)送IOCLR=LED1CON;//點(diǎn)亮LEDwhile(0==(ILR&0x01));ILR=0x01;SendTimeRtc();}return(0);}3實(shí)驗(yàn)電路圖4實(shí)驗(yàn)結(jié)論通過(guò)學(xué)習(xí)rtc很有收獲的,這次畢竟使自己有機(jī)會(huì)去學(xué)習(xí)一些貼近硬件的知識(shí),如果將來(lái)有機(jī)會(huì)再學(xué)習(xí),我還是很樂(lè)意的。畢竟一個(gè)真正學(xué)習(xí)計(jì)算機(jī)的人不能只知道軟件的知識(shí)。實(shí)驗(yàn)五、8255并行接口鍵盤(pán)實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康?.1掌握8255A的功能及方式0、1的實(shí)現(xiàn)1.2熟悉8255A與CPU的接口,以及傳輸數(shù)據(jù)的工作原理及編程方法。2實(shí)驗(yàn)過(guò)程鍵盤(pán)驅(qū)動(dòng)的主要作用就是實(shí)時(shí)監(jiān)測(cè)外部按鍵中斷,一旦發(fā)現(xiàn)外部有鍵按下就向內(nèi)核發(fā)送鍵盤(pán)消息實(shí)現(xiàn)鍵盤(pán)輸入功能。鍵盤(pán)驅(qū)動(dòng)創(chuàng)建了中斷服務(wù)線程和4個(gè)鍵盤(pán)中斷事件,每行按鍵對(duì)應(yīng)一個(gè)鍵盤(pán)中斷事件。有鍵被按下時(shí),中斷服務(wù)例程得到對(duì)應(yīng)的中斷標(biāo)識(shí)符并報(bào)告給系統(tǒng)任務(wù)調(diào)度進(jìn)程,同時(shí)產(chǎn)生鍵盤(pán)中斷事件,鍵盤(pán)中斷服務(wù)線程響應(yīng)鍵盤(pán)中斷事件,開(kāi)始掃描矩陣鍵盤(pán)。根據(jù)產(chǎn)生的中斷事件類(lèi)型不同,可以首先確定被按下鍵的行位置。由于鍵盤(pán)被按下后,該鍵對(duì)應(yīng)的行和列被連通,因此根據(jù)判斷各列對(duì)應(yīng)的I/O口的電平,可以得到被按下鍵的列位置;得到按鍵的準(zhǔn)確位置后,通過(guò)向操作系統(tǒng)發(fā)送鍵盤(pán)消息KEYBD_EVENT,實(shí)現(xiàn)一次鍵盤(pán)輸入。循環(huán)掃描鍵盤(pán),直到按鍵被彈起則發(fā)送KEYEVENTF_KEYUP事件。響應(yīng)鍵盤(pán)中斷輸入的整個(gè)流程如圖。2.1在OAL層加入中斷源矩陣鍵盤(pán)采用4路I/O口中斷,每路中斷對(duì)應(yīng)1個(gè)中斷源。矩陣鍵盤(pán)驅(qū)動(dòng)首先要在OAL層加入這些中斷源。以其中一路中斷為例:#defineSYSINTR_KEYONE(SYSINTR_FIRMWARE+0)2.2中斷服務(wù)例程(ISR)設(shè)計(jì)本鍵盤(pán)驅(qū)動(dòng)將GPIO_6、GPIO_7、

溫馨提示

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