2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(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)介

1、<p>  題目: 《可編程頻率計(jì)》設(shè)計(jì) </p><p>  學(xué)號(hào): </p><p>  姓名: LXZ-2008 </p><p>  專(zhuān)業(yè)班級(jí): </p><p>  指導(dǎo)老師:

2、 </p><p>  實(shí)踐日期: 2010年8月31號(hào)—10月12號(hào)</p><p><b>  目錄</b></p><p><b>  1引言3</b></p><p><b>  1.1編寫(xiě)目的3</b></p

3、><p><b>  1.2背景3</b></p><p><b>  1.3定義3</b></p><p><b>  1.4參考資料4</b></p><p><b>  2實(shí)際開(kāi)發(fā)結(jié)果4</b></p><p><b

4、>  2.1產(chǎn)品4</b></p><p>  2.2主要功能和性能4</p><p><b>  2.3基本流程5</b></p><p><b>  2.4進(jìn)度7</b></p><p><b>  2.5費(fèi)用8</b></p>&

5、lt;p><b>  3開(kāi)發(fā)工作評(píng)價(jià)9</b></p><p>  3.1對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)9</p><p>  3.3對(duì)技術(shù)方法的評(píng)價(jià)9</p><p>  3.4出錯(cuò)原因的分析9</p><p><b>  4經(jīng)驗(yàn)與教訓(xùn)10</b></p><p>  5

6、附錄—程序清單及結(jié)構(gòu)圖14</p><p>  5.1邏輯結(jié)構(gòu)圖及流程圖14</p><p>  5.2程序清單16</p><p><b>  項(xiàng)目設(shè)計(jì)總結(jié)報(bào)告</b></p><p>  --可編程頻率計(jì)的設(shè)計(jì)</p><p><b>  1引言</b></p

7、><p><b>  1.1編寫(xiě)目的</b></p><p>  經(jīng)過(guò)一段時(shí)間的努力,我們終于完成了對(duì)可編程頻率計(jì)的設(shè)計(jì)。為了讓讀者更加了解我們?cè)O(shè)計(jì)的這個(gè)可編程頻率計(jì)的原理、工作方式、運(yùn)行環(huán)境、功能和我們?cè)O(shè)計(jì)的流程等等,我們寫(xiě)了這個(gè)項(xiàng)目設(shè)計(jì)的總結(jié)報(bào)告。對(duì)于學(xué)生的我們,這份報(bào)告的主要目的是提高我們規(guī)范化的工程實(shí)驗(yàn)方法,進(jìn)行系統(tǒng)的、高效地開(kāi)發(fā)項(xiàng)目,同時(shí)也作為指導(dǎo)。在編寫(xiě)報(bào)告與

8、實(shí)驗(yàn)同步能提高我們做項(xiàng)目和實(shí)戰(zhàn)的能力。</p><p><b>  1.2背景</b></p><p>  硬件課程設(shè)計(jì)的課題是:可編程頻率計(jì)的設(shè)計(jì)。</p><p>  這次可編程頻率計(jì)的設(shè)計(jì)是由劉曉澤提出來(lái)的,由劉曉澤和劉春一起討論、共同編程、實(shí)踐,最后成功完成的。</p><p>  該可編程頻率計(jì)能夠快速準(zhǔn)確的捕

9、捉到被測(cè)信號(hào)頻率的變化,所以該頻率計(jì)適用于需要精確測(cè)量信號(hào)頻率變化的設(shè)備。</p><p>  本頻率計(jì)是方波頻率計(jì),由于實(shí)驗(yàn)箱資源的有限性,我們只能設(shè)計(jì)這個(gè)方波頻率計(jì)。</p><p>  該設(shè)計(jì)的頻率計(jì)需要在16/32位微機(jī)接口技術(shù)實(shí)驗(yàn)系統(tǒng)的實(shí)驗(yàn)箱上完成,連接電腦,用到了8279芯片和鍵盤(pán),8253計(jì)數(shù)器和I/O輸入輸出設(shè)備,用匯編語(yǔ)言完成編程驅(qū)動(dòng)可編程頻率計(jì)的實(shí)現(xiàn)。</p>

10、;<p><b>  1.3定義</b></p><p><b>  中文名稱:頻率計(jì)</b></p><p>  英文名稱:frequency meter </p><p>  定義:測(cè)量周期量頻率值的儀表。</p><p>  I/O:輸出/輸入(Input/Output)<

11、/p><p>  匯編語(yǔ)言:(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。用助記符(Memoni)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。</p><p><b>  中文名稱:計(jì)數(shù)器 </b></p><p>  英文名稱:counter </p><p>  定義:通過(guò)傳動(dòng)

12、機(jī)構(gòu)驅(qū)動(dòng)計(jì)數(shù)元件,指示被測(cè)量累計(jì)值的器件。計(jì)時(shí)器即計(jì)數(shù)器。</p><p><b>  中文名稱:脈沖 </b></p><p>  英文名稱:pulse </p><p>  定義:一個(gè)物理量在短持續(xù)時(shí)間內(nèi)突變后迅速回到其初始狀態(tài)的過(guò)程。</p><p>  LED:(Light Emitting Diode),發(fā)光二

13、極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。</p><p><b>  中文名稱:流程圖 </b></p><p>  英文名稱:flow diagram </p><p>  定義:表示生產(chǎn)過(guò)程中事物各個(gè)環(huán)節(jié)進(jìn)行順序的簡(jiǎn)圖。</p><p><b>  1.4參考資料</b></

14、p><p>  《微型計(jì)算機(jī)原理與接口技術(shù)》第四版 周荷琴 吳秀清/著 中國(guó)科學(xué)技術(shù)出版社</p><p><b>  HK88TE說(shuō)明書(shū)</b></p><p>  8279芯片使用說(shuō)明文檔</p><p><b>  2實(shí)際開(kāi)發(fā)結(jié)果</b></p><p><b>

15、  2.1產(chǎn)品</b></p><p>  程序: Is_Start ;檢測(cè)是否按下開(kāi)始脈沖鍵</p><p>  程序: InitClock2 ;初始化計(jì)數(shù)器2,并產(chǎn)生可編程的方波頻率</p><p>  程序: InitClock0 ;初始化計(jì)數(shù)器0</p><p>  程序: InitClo

16、ck1 ;初始化計(jì)數(shù)器1</p><p>  程序: CheckClock0Over ;檢測(cè)計(jì)數(shù)器0是否工作結(jié)束,并將讀取的結(jié)果存入變量a中</p><p>  程序:Display ;顯示變量a的值到LED上</p><p>  主程序:Main ;整個(gè)程序的主程序運(yùn)行部分</p><p>  本項(xiàng)

17、目的程序結(jié)構(gòu)是扁平式的,即在一個(gè)主程序的作用下,分別調(diào)用各個(gè)小的程序來(lái)完成整個(gè)項(xiàng)目的功能。而各個(gè)小程序又是不可劃分的最小程序模塊。</p><p>  本項(xiàng)目總共200行代碼。數(shù)據(jù)段與代碼段共用,均用CS作為段寄存器。數(shù)據(jù)部分21行,其中19行是宏定義,在編譯時(shí)用,在生成2進(jìn)制可執(zhí)行文件時(shí)不用。只有2行是真正的數(shù)據(jù),占用程序空間。主程序20行代碼。Display程序70行代碼,InitClock0、InitClo

18、ck1、InitClock2程序均為10行代碼,CheckClock0Over程序20行代碼。</p><p>  本項(xiàng)目有兩個(gè)版本。但實(shí)質(zhì)為一個(gè)版本。由于一開(kāi)始沒(méi)有頻率發(fā)生設(shè)備,我們利用8253產(chǎn)生頻率,其中用到8個(gè)開(kāi)關(guān)作為產(chǎn)生頻率的種類(lèi)。但由于我們的模塊是高內(nèi)聚、低耦合的。獨(dú)立性比較強(qiáng)。這個(gè)產(chǎn)生頻率的模塊可以隨時(shí)替換。后來(lái)老師找來(lái)了頻率發(fā)生器做檢驗(yàn),檢驗(yàn)通過(guò)。而之前的代碼并未用到。因此實(shí)質(zhì)為一個(gè)版本。<

19、/p><p>  2.2主要功能和性能</p><p>  在這次可編程頻率計(jì)的設(shè)計(jì)中,我們的項(xiàng)目的計(jì)劃的主要功能是:完成方波頻率的測(cè)試。主要原理:對(duì)一個(gè)脈沖進(jìn)行頻率計(jì)數(shù),通過(guò)測(cè)量它在單位時(shí)間內(nèi)的脈沖數(shù),然后用 ,其中 為測(cè)出的方波頻率,N為單位時(shí)間內(nèi)的頻率數(shù),T為單位時(shí)間(這里為0.5S)。</p><p>  首先對(duì)8253賦初始值,讓0通道在外界輸入1/8MHZ的

20、情況下,通過(guò)賦值62500計(jì)數(shù),在方式0下產(chǎn)生0.5秒的定時(shí)。而計(jì)時(shí)器0的輸出接輸入芯片,通過(guò)一個(gè)循環(huán)不斷檢測(cè)計(jì)時(shí)器0是否定時(shí)完畢。而計(jì)時(shí)器1的CLK1端口接帶檢測(cè)的方波頻率,這個(gè)計(jì)時(shí)器是在方式2下工作的,每次頻率計(jì)工作都賦初始值0給它,讓它在單位時(shí)間內(nèi)對(duì)產(chǎn)生的脈沖計(jì)數(shù)。通過(guò) ,其中N為最終的計(jì)數(shù)值, 為計(jì)數(shù)的最大值,這里是65536,即 , 是計(jì)時(shí)器1上讀出的計(jì)數(shù)值,N為測(cè)出的頻率數(shù)。然后將N轉(zhuǎn)換成8279能顯示的數(shù)碼,最后用8279

21、顯示出來(lái)。在這當(dāng)中用一個(gè)開(kāi)關(guān)負(fù)責(zé)開(kāi)啟檢測(cè)和重置。即第一次使用撥動(dòng)開(kāi)關(guān),不到1秒及出來(lái)結(jié)果,以后每撥動(dòng)2次,即可看到結(jié)果。</p><p><b>  性能:</b></p><p>  本產(chǎn)品為方波頻率發(fā)生器,只能檢測(cè)方波,我們用標(biāo)準(zhǔn)的實(shí)驗(yàn)頻率發(fā)生器產(chǎn)生方波進(jìn)行檢測(cè)。由于我們的8279附近的數(shù)碼管只有6個(gè),而8253上的寄存器是16位的,我們就設(shè)計(jì)出一個(gè)0到65535

22、HZ范圍的可編程方波頻率計(jì),即用到5個(gè)數(shù)碼管來(lái)顯示。如果數(shù)碼管增加,本產(chǎn)品的程序只需改動(dòng)少量代碼變可迅速做到擴(kuò)展。</p><p>  通過(guò)標(biāo)準(zhǔn)的實(shí)驗(yàn)頻率發(fā)生器檢測(cè),本產(chǎn)品的精確度為千分之一。這部分誤差是由于在定時(shí)結(jié)束后,在讀取計(jì)數(shù)值的這部分時(shí)間內(nèi),CPU執(zhí)行時(shí)間占用所導(dǎo)致的誤差。還有另一個(gè)原因就是芯片的硬件誤差引起的。前者通過(guò)縮短代碼,基本達(dá)到極限。因此若想再提高誤差,只有用更好的運(yùn)算芯片或硬件中斷來(lái)處理。&l

23、t;/p><p><b>  2.3基本流程</b></p><p>  用圖給出本程序系統(tǒng)的實(shí)際的基本的處理流程。</p><p> ?。?)頻率計(jì)程序流程圖 (2)可編程頻率計(jì)使用流程圖</p><p><b>  (3)硬件框架圖</b></p><p

24、><b>  2.4進(jìn)度</b></p><p><b>  原定進(jìn)度:</b></p><p>  8個(gè)學(xué)時(shí)的時(shí)間選定硬件課程設(shè)計(jì)的課題,提出本項(xiàng)目的任務(wù);</p><p>  16個(gè)學(xué)時(shí)的時(shí)間進(jìn)行課程設(shè)計(jì)的分析、編程、硬件連接,最后實(shí)現(xiàn)頻率計(jì)的功能。</p><p>  8個(gè)學(xué)時(shí)的時(shí)間編寫(xiě)

25、硬件課程設(shè)計(jì)報(bào)告。</p><p><b>  實(shí)際進(jìn)度:</b></p><p>  我們課上用了4個(gè)學(xué)時(shí)的時(shí)間就選擇好了我們的硬件設(shè)計(jì)課題—可編程頻率計(jì)的設(shè)計(jì)。課下花了大量的時(shí)間編程。</p><p>  然后是設(shè)計(jì)階段,我們開(kāi)始對(duì)可編程頻率計(jì)的設(shè)計(jì)進(jìn)行分析,討論該如何設(shè)計(jì)、編程。我們從網(wǎng)上找了一些有用的資料,編程過(guò)程中,連接硬件運(yùn)行過(guò)程中

26、也都遇到過(guò)一些問(wèn)題,不過(guò)我們還是通過(guò)查找資料,相互討論,與老師交流等方式成功地解決了。設(shè)計(jì)階段課上我們花了12個(gè)學(xué)時(shí)調(diào)試完成了。</p><p>  寫(xiě)設(shè)計(jì)報(bào)告我們用了大概8個(gè)學(xué)時(shí)的時(shí)間。</p><p><b>  分析:</b></p><p>  通過(guò)原定計(jì)劃的進(jìn)度和實(shí)際使用的進(jìn)度我們可以很容易的看出,我們?cè)O(shè)計(jì)的實(shí)際進(jìn)度提前了。</

27、p><p>  主要原因是:我們迅速地選定課題,之后我們就盡快地投入到了設(shè)計(jì)當(dāng)中去。在課題選擇這個(gè)階段我們就節(jié)約了很大一部分時(shí)間。在實(shí)際設(shè)計(jì)階段,我們不僅僅在實(shí)驗(yàn)室里積極認(rèn)真的調(diào)試硬件,改進(jìn)方式。同時(shí)我們?cè)谄渌鼤r(shí)間還查閱了很多關(guān)于我們這個(gè)課題的相關(guān)資料,包括頻率計(jì)的原理,實(shí)現(xiàn)方式,相關(guān)的8253和8279的使用等等。這些充分的課余準(zhǔn)備使我們?cè)趯?shí)驗(yàn)室里比較容易地就設(shè)計(jì)出了我們滿意的結(jié)果,并且也用了更少的時(shí)間。而且有部分

28、實(shí)驗(yàn)箱的問(wèn)題得到了老師的指點(diǎn)。最重要的是我們對(duì)實(shí)驗(yàn)原理的深刻理解,然后設(shè)計(jì)好方案思路之后在課下花大量時(shí)間編程,而在實(shí)驗(yàn)室里主要是調(diào)試。</p><p><b>  2.5費(fèi)用</b></p><p><b>  費(fèi)用預(yù)算:</b></p><p>  在設(shè)計(jì)之前,我們預(yù)算實(shí)際設(shè)計(jì)操作并完成可編程頻率計(jì)需要16個(gè)學(xué)時(shí),合計(jì)為

29、800分鐘,大概13.3個(gè)小時(shí)的時(shí)間。</p><p>  預(yù)計(jì)我們用到的物料主要是實(shí)驗(yàn)室里的電腦和實(shí)驗(yàn)箱里的儀器,不會(huì)有出差的情況,所以也沒(méi)有出差費(fèi)的預(yù)算。</p><p><b>  實(shí)際支出:</b></p><p>  我們的設(shè)計(jì)的時(shí)間是我們使用了12個(gè)學(xué)時(shí)的,合計(jì)為600分鐘,10個(gè)小時(shí)的時(shí)間。這段時(shí)間我們都在實(shí)驗(yàn)室里,在電腦上連通實(shí)

30、驗(yàn)儀器試驗(yàn),改進(jìn)。</p><p>  在可編程頻率計(jì)的設(shè)計(jì)中,我們主要用到的是實(shí)驗(yàn)室里的電腦和實(shí)驗(yàn)箱里的儀器,并沒(méi)有什么物料消耗,也沒(méi)有出差,所以也沒(méi)有費(fèi)等支出。</p><p><b>  分析:</b></p><p>  按照以上預(yù)算與實(shí)際支出情況,我們的設(shè)計(jì)經(jīng)費(fèi)是有節(jié)余的。</p><p>  實(shí)際物料消耗與費(fèi)

31、用支出與預(yù)算基本上一致,而主要有節(jié)余的地方是我們比預(yù)計(jì)花費(fèi)了更少的時(shí)間,預(yù)計(jì)要16個(gè)學(xué)時(shí)的設(shè)計(jì)而我們只用了12個(gè)學(xué)時(shí)的時(shí)間就完成了。</p><p><b>  3開(kāi)發(fā)工作評(píng)價(jià)</b></p><p>  3.1對(duì)產(chǎn)品質(zhì)量的評(píng)價(jià)</p><p>  頻率計(jì)在質(zhì)量上滿足我們預(yù)先的需求。而且穩(wěn)定性好,精確度達(dá)到千分之一,多次檢測(cè)一直達(dá)到這個(gè)精確值,

32、沒(méi)出現(xiàn)什么誤差。所不足的是僅能檢測(cè)方波。而且在無(wú)法連續(xù)檢測(cè)不斷變化的頻率,只能檢測(cè)出穩(wěn)定的方波,當(dāng)要檢測(cè)另一頻率時(shí)必須撥動(dòng)開(kāi)關(guān)重新檢測(cè)。而且檢測(cè)速度不是很快,大概0.5S。但是,總體上滿足產(chǎn)品預(yù)先的要求。</p><p>  3.3對(duì)技術(shù)方法的評(píng)價(jià)</p><p>  本項(xiàng)目用的是HK88TE實(shí)驗(yàn)箱里的8088CPU、8253芯片、IO輸入芯片、8279芯片、LED數(shù)碼管、8個(gè)開(kāi)關(guān)、連線若

33、干、HK88TE實(shí)驗(yàn)平臺(tái)。</p><p>  檢測(cè)工具是:頻率發(fā)生器</p><p>  編程工具及語(yǔ)言:用匯編語(yǔ)言,編程平臺(tái)是HK88TE實(shí)驗(yàn)箱配備的軟件。</p><p>  在開(kāi)發(fā)中用到了模塊化的思想,將一個(gè)一個(gè)的實(shí)現(xiàn)功能代碼做成高內(nèi)聚低耦合的獨(dú)立性強(qiáng)的模塊,模塊可以單獨(dú)處理,加快了編程效率,增強(qiáng)了擴(kuò)展功能。由于硬件平臺(tái)缺少硬件中斷功能的缺陷,我們采用軟件中

34、斷來(lái)實(shí)現(xiàn)開(kāi)關(guān)、定時(shí)的檢測(cè)。通過(guò)循環(huán)條件的設(shè)定來(lái)跳出循環(huán)。</p><p>  3.4出錯(cuò)原因的分析</p><p><b>  出錯(cuò)情況:</b></p><p>  無(wú)法取出數(shù)據(jù)段的數(shù)據(jù)。</p><p>  編譯通過(guò),運(yùn)行無(wú)法通過(guò)。</p><p>  單步調(diào)試通過(guò),全速運(yùn)行無(wú)法進(jìn)行。<

35、/p><p><b>  無(wú)法顯示頻率。</b></p><p><b>  啟動(dòng)開(kāi)關(guān)無(wú)法檢測(cè)。</b></p><p>  出錯(cuò)原因分析及解決方法:</p><p>  我一開(kāi)始定義一個(gè)數(shù)據(jù)段即data segment….data ends,然后取里面的數(shù)據(jù),無(wú)論如何都不行,我看了一下實(shí)驗(yàn)箱手冊(cè)里的例

36、子,他們?nèi)珱](méi)用到data段,而是數(shù)據(jù)段和代碼段共用,用ds :code 及push cs,pop ds來(lái)解決。因此我分析的結(jié)果是實(shí)驗(yàn)箱不支持的問(wèn)題,我在PC機(jī)上用匯編均支持。</p><p>  經(jīng)老師指點(diǎn),是因?yàn)榇a長(zhǎng)了,實(shí)驗(yàn)箱的監(jiān)控程序不支持,通過(guò)滑動(dòng)下載軟件上的延遲到高的部分解決了。</p><p>  我是用一個(gè)循環(huán)來(lái)檢測(cè)計(jì)時(shí)器0的輸出情況,由于我在循環(huán)里忘了加一條IN指令,而陷入

37、死循環(huán),加了后解決了。</p><p>  主要是不了解8279的原理及使用方法,還有數(shù)碼管的編碼方式,通過(guò)查看文檔資料及摸索解決了。</p><p>  這個(gè)問(wèn)題跟第3點(diǎn)類(lèi)似,也是在循環(huán)里忘了先用IN指令讀取數(shù)據(jù),再用AND截取數(shù)據(jù)檢測(cè)。發(fā)現(xiàn)后加了IN指令解決了。</p><p><b>  4經(jīng)驗(yàn)與教訓(xùn)</b></p><

38、;p><b>  小組成員:劉曉澤</b></p><p><b>  體會(huì):</b></p><p>  這是一個(gè)小的項(xiàng)目開(kāi)發(fā),我試著用規(guī)范的方法去做,我在項(xiàng)目開(kāi)始時(shí)先想著確定一個(gè)題目,老師推薦了幾個(gè)題目,又要求一個(gè)小組只能有一個(gè)且不能重復(fù)。因此我們選了頻率計(jì)作為我們的項(xiàng)目。一開(kāi)始時(shí)我并不知道什么是頻率計(jì),然后詢問(wèn)了老師。大概明白了,后來(lái)

39、在課上我在百度里打頻率計(jì),然后在百度百科里看了一下什么叫頻率計(jì)以及頻率計(jì)的主要原理是什么,這個(gè)比較重要。我覺(jué)得做一個(gè)陌生的項(xiàng)目,首先搞明白這個(gè)項(xiàng)目的概念及原理,這樣才能下手。我看了一下我們那個(gè)HK88TE這個(gè)實(shí)驗(yàn)箱,以及實(shí)驗(yàn)箱可用的部分,感覺(jué)只能完成方波的測(cè)試,因此進(jìn)行了方波的頻率計(jì)設(shè)計(jì)。我進(jìn)行了需求分析,搞明白了我們到底要干什么,以及是否在規(guī)定的時(shí)間內(nèi)可行,以及取得所做項(xiàng)目所需的技術(shù)知識(shí)及資料,這些統(tǒng)統(tǒng)在第一次課后進(jìn)行了準(zhǔn)備。我把老師

40、給的資料全打印下來(lái)了。</p><p>  由于我們做的是頻率計(jì),那么必然有顯示的輸出部分,以及頻率的輸入部分,還有處理轉(zhuǎn)換這樣3個(gè)主要模塊。這三個(gè)模塊中所需的知識(shí)只有顯示部分之前沒(méi)遇到過(guò)。剩下的在上學(xué)期的微機(jī)原理用過(guò),而且第一次課的時(shí)間又熟悉了一下,還是比較熟悉的,忘了的命令字翻翻書(shū)也就能解決了,欠缺的是8279這個(gè)芯片的使用方法和原理。第一次課后,我便把8279的資料全看了,由于我只用到顯示部分,因此主要看顯

41、示部分的原理和操作。</p><p>  第一次課時(shí)我并不清楚6個(gè)數(shù)碼管的顯示方法,后來(lái)仔細(xì)看了實(shí)驗(yàn)臺(tái)上的數(shù)碼管,通過(guò)看例子以及自己的推測(cè),發(fā)現(xiàn)一個(gè)數(shù)碼管是用1個(gè)字節(jié)里的數(shù)據(jù)來(lái)顯示的,按照數(shù)碼管上的標(biāo)號(hào),從a到h,按照順時(shí)針?lè)绞叫D(zhuǎn),0表示滅,1表示亮,這樣的信息用8位數(shù)據(jù)里的低字節(jié)到高字節(jié)表示。</p><p>  我是這樣認(rèn)為的,實(shí)驗(yàn)課的時(shí)間是十分寶貴的,主要是用來(lái)搞硬件的,即主要是用

42、來(lái)驗(yàn)證自己對(duì)硬件的理解以及調(diào)試自己的電路和代碼的,不是主要用來(lái)編程和看資料的。而實(shí)驗(yàn)箱比較貴,聽(tīng)說(shuō)幾千塊,而且實(shí)驗(yàn)結(jié)束或者十分了解實(shí)驗(yàn)箱后,實(shí)驗(yàn)箱對(duì)自己的作用也不大,實(shí)驗(yàn)箱主要是教學(xué)用,不必一人買(mǎi)一個(gè)。不像學(xué)習(xí)單片機(jī),買(mǎi)個(gè)51芯片,自己焊電路那樣,可以長(zhǎng)期持有,使用。而且用51單片機(jī)芯片自己搞一個(gè)電子產(chǎn)品,價(jià)格也很低,很實(shí)用。因此,我在課下盡量地花時(shí)間編程和看資料,在課上盡可能地調(diào)試程序,以及檢驗(yàn)自己的電路。</p>&l

43、t;p>  我在假期時(shí),有自己買(mǎi)過(guò)一些單片機(jī)芯片自己玩。但是,我跟別人學(xué)單片機(jī)不太一樣。由于自己是計(jì)科的,專(zhuān)業(yè)方向不同,很難花大量的時(shí)間在電子方面。但由于有些興趣,也自己在假期有空時(shí)學(xué)學(xué)。發(fā)現(xiàn)單片機(jī)的核心還是編程,當(dāng)把電路搭好后,原理也明白后,剩下的大量時(shí)間是在編程。因此,總的來(lái)說(shuō)對(duì)自己的專(zhuān)業(yè)方向偏差不大。</p><p>  我是在網(wǎng)上聽(tīng)說(shuō)有人用面包板來(lái)學(xué)習(xí)單片機(jī)的。就是買(mǎi)上一塊面包板和線,由于面包板上有

44、一個(gè)個(gè)小孔,用線插拔十分方便,不用焊東西,對(duì)自己的學(xué)習(xí)十分有利。然后我就照著別人的推薦買(mǎi)了51單片機(jī),不過(guò)這個(gè)是國(guó)產(chǎn)的STC系列的芯片,因?yàn)樗菄?guó)產(chǎn),自然網(wǎng)上的官方文檔是中文版的,對(duì)于英語(yǔ)不好的我來(lái)說(shuō)比較方便。買(mǎi)了一些晶振什么的就在面包板上接起來(lái),然后照著例子看著原理圖學(xué)習(xí)。用的是C語(yǔ)言編程。</p><p>  后來(lái)在實(shí)驗(yàn)課上想用C語(yǔ)言,發(fā)現(xiàn)實(shí)驗(yàn)平臺(tái)的軟件不支持,而我用的芯片是8088CPU。所以最終就用匯編來(lái)

45、編程了,盡管過(guò)程中有一段痛苦的過(guò)程,但是隨著我把自己的實(shí)驗(yàn)完成,又自己玩了一下其它人做的什么時(shí)鐘、計(jì)算器、電子琴和交通燈,這樣我間接在硬件課程的這段時(shí)期編了幾千行的匯編代碼。盡管我自己的實(shí)驗(yàn)是只有200行代碼,但是我在這幾千行的代碼編程中中對(duì)匯編比較自信,也不再恐懼它了。</p><p>  我在使用匯編中沒(méi)用到多少種指令,也就是常用的那20幾種。什么MOV、JMP、LEA、RET、CALL、ADD、SUB、MU

46、L、ADD、DIV、IN、OUT、JL、JZ、JA、JNZ、LOOP、INC、DEC、AND、NOT、SLL、SLR、PUSH、POP。</p><p>  我也就熟悉這么些指令。</p><p>  我在網(wǎng)上看到的頻率計(jì)的原理是:通過(guò)在單位時(shí)間內(nèi)檢測(cè)出的頻率數(shù),用 ,其中 為測(cè)出的方波頻率,N為單位時(shí)間內(nèi)的頻率數(shù),T為單位時(shí)間(項(xiàng)目里為0.5S)。這樣求出的 即為頻率,單位是HZ。<

47、;/p><p>  我就用這條幾句話的原理進(jìn)行方波頻率計(jì)的設(shè)計(jì)。開(kāi)始時(shí)想自己買(mǎi)芯片來(lái)焊(盡管我不是很自信,但是知道一點(diǎn)原理,我覺(jué)得可行),但是我們大三上學(xué)期的課程太多了,一天8節(jié)課,不光有硬件的課程設(shè)計(jì),還有軟件工程的課程設(shè)計(jì),覺(jué)得在時(shí)間上可能安排不過(guò)來(lái)。而且這學(xué)期的專(zhuān)業(yè)課程比較重要,很多都是原理,而且有些課程的老師不錯(cuò),不花時(shí)間的話,可能過(guò)了這村就沒(méi)這店了。我認(rèn)為本科生與專(zhuān)科生的差別在于理論原理的研究。本科生普遍比

48、職業(yè)學(xué)校的學(xué)生缺少動(dòng)手時(shí)間和經(jīng)歷,而職業(yè)學(xué)校的學(xué)生由于一開(kāi)始的生源不同,他們?cè)诶碚搶W(xué)習(xí)上的時(shí)間要少,學(xué)習(xí)能力稍差。而缺乏理論原理的學(xué)習(xí),在技術(shù)上很快會(huì)到達(dá)瓶頸。而他們?cè)賹W(xué)習(xí)能力有限,再自我學(xué)習(xí)理論原理時(shí)就會(huì)遇到困難,自學(xué)能力也有限。因此,就必須找到一個(gè)平衡點(diǎn)。因此,我在不落下平常的課程的學(xué)習(xí)下,盡可能多地動(dòng)手做實(shí)驗(yàn),編程。</p><p>  我把我們的項(xiàng)目分析了一下,發(fā)現(xiàn)必須用中斷。而實(shí)驗(yàn)箱有缺陷,上學(xué)期馬海波

49、老師教我們微機(jī)原理,當(dāng)時(shí)他說(shuō)我們實(shí)驗(yàn)箱缺少中斷的連接口,所以我們上學(xué)期的實(shí)驗(yàn)也就沒(méi)有中斷的實(shí)驗(yàn)。中斷有兩種方法實(shí)現(xiàn),即軟中斷和硬中斷。而硬件中斷方式,實(shí)驗(yàn)箱無(wú)法實(shí)現(xiàn),那么只能采取軟件中斷。軟中斷就是用循環(huán)來(lái)實(shí)現(xiàn),盡管很浪費(fèi)CPU資源,但是也算是一種響應(yīng)不錯(cuò)的方法。軟中斷也是比較不好把握的,因?yàn)楸仨毎讶炙枰幚淼膬?nèi)容的順序安排好。把需要不斷檢測(cè)及更新的部分全部安排在一起,一次一次地掃描。而其余的安排在這個(gè)代碼段的外面。</p&g

50、t;<p>  開(kāi)這門(mén)課之前,我在課余時(shí)間看了幾頁(yè)反匯編的書(shū),就是看原先C語(yǔ)言編的代碼在轉(zhuǎn)成匯編時(shí)如何實(shí)現(xiàn)的。里面的函數(shù)在轉(zhuǎn)成匯編代碼時(shí),是在調(diào)用前把所謂的參數(shù)入棧,然后用CALL命令將程序段調(diào)入(在C里叫函數(shù)),在程序段的末尾用RET指令返回調(diào)用處。我大概看了一些CALL指令,這個(gè)指令可以用JMP和PUSH指令代替,其本質(zhì)是把當(dāng)前的CPU狀態(tài)入棧,把IP寄存器內(nèi)容入棧,然后用JMP跳到相應(yīng)的標(biāo)號(hào),即代碼段上偏移的地址處執(zhí)

51、行指令。而RET就是把之前入棧的內(nèi)容按順序出棧。由于用這兩條指令省事,而且讓人更了解代碼的內(nèi)容和思想,我在以后的編碼中經(jīng)常用。</p><p>  編匯編是十分頭疼的事情,至少在開(kāi)這門(mén)課之前。編300行的匯編和編300行的C絕對(duì)不是一個(gè)數(shù)量級(jí)的,如果不處理好匯編代碼的結(jié)構(gòu),那么將比較痛苦。</p><p>  借鑒了這些思想,我采用模塊化的思想將這個(gè)程序劃分成一個(gè)個(gè)功能獨(dú)立的代碼,用一些P

52、USH、POP語(yǔ)句充當(dāng)像C語(yǔ)言中的形參。我盡量將這些功能代碼做成像軟件工程這門(mén)課說(shuō)的高內(nèi)聚低藕合的模塊。當(dāng)一個(gè)模塊有小問(wèn)題時(shí),影響不大,只修改這個(gè)模塊即可,而模塊又可以迅速地組合,擴(kuò)展。我用這個(gè)方法,在完成自己小組的實(shí)驗(yàn)下,自己又做了一些別人的項(xiàng)目?jī)?nèi)容。而我在這有限的幾周內(nèi)完成了幾個(gè)項(xiàng)目,當(dāng)然,交報(bào)告肯定只是自己該交的部分,其它的就當(dāng)自己練練手。學(xué)習(xí)學(xué)到手,畢竟是最重要的,不閉拘于形式。</p><p>  我平

53、常花比較多的時(shí)間在編程,一些開(kāi)發(fā)輔助工具沒(méi)怎么關(guān)注。因此當(dāng)畫(huà)我們這個(gè)項(xiàng)目的流程圖以及原理的邏輯結(jié)構(gòu)圖時(shí)是用WINDOWS里的畫(huà)圖工具和WORD配合完成的,盡管就三幅圖,花了一個(gè)下午,可能有4個(gè)小時(shí),比較艱難和辛苦。</p><p>  項(xiàng)目程序分為主程序和功能小程序。通過(guò)在主程序中依次調(diào)用功能小程序來(lái)完成全部功能,旁邊也附加大量的注釋?zhuān)奖阈〗M成員的交流,以及代碼的修改。</p><p>

54、  這個(gè)程序的主體思想是這樣的:</p><p>  首先用一段循環(huán)檢測(cè)程序段檢測(cè)是否有開(kāi)關(guān)按鍵按下,沒(méi)有就一直循環(huán)檢測(cè),檢測(cè)到便對(duì)8253賦初始值,讓0通道在外界輸入1/8MHZ的情況下,通過(guò)賦值62500計(jì)數(shù),在方式0下產(chǎn)生0.5秒的定時(shí)。而計(jì)時(shí)器0的輸出接輸入芯片,通過(guò)一個(gè)循環(huán)不斷檢測(cè)計(jì)時(shí)器0是否定時(shí)完畢。而計(jì)時(shí)器1的CLK1端口接帶檢測(cè)的方波頻率,這個(gè)計(jì)時(shí)器是在方式2下工作的,每次頻率計(jì)工作都賦初始值0給

55、它,讓它在單位時(shí)間內(nèi)對(duì)產(chǎn)生的脈沖計(jì)數(shù)。通過(guò) ,其中N為最終的計(jì)數(shù)值, 為計(jì)數(shù)的最大值,這里是65535,即 , 是計(jì)時(shí)器1上讀出的計(jì)數(shù)值,N為測(cè)出的頻率數(shù)。然后將N轉(zhuǎn)換成8279能顯示的數(shù)碼,最后用8279顯示出來(lái)。接著繼續(xù)用一段代碼檢測(cè)在這當(dāng)中用一個(gè)開(kāi)關(guān)負(fù)責(zé)開(kāi)啟檢測(cè)和重置。有的話,代碼又跳轉(zhuǎn)到最開(kāi)始執(zhí)行。即第一次使用撥動(dòng)開(kāi)關(guān),不到1秒即出來(lái)結(jié)果,以后每撥動(dòng)2次,即可看到結(jié)果。</p><p>  在編程的過(guò)程中

56、也遇到不少的問(wèn)題,例如:</p><p><b>  出錯(cuò)情況:</b></p><p>  無(wú)法取出數(shù)據(jù)段的數(shù)據(jù)。</p><p>  編譯通過(guò),運(yùn)行無(wú)法通過(guò)。</p><p>  單步調(diào)試通過(guò),全速運(yùn)行無(wú)法進(jìn)行。</p><p><b>  無(wú)法顯示頻率。</b><

57、/p><p><b>  啟動(dòng)開(kāi)關(guān)無(wú)法檢測(cè)。</b></p><p>  出錯(cuò)原因分析及解決方法:</p><p>  我一開(kāi)始定義一個(gè)數(shù)據(jù)段即data segment….data ends,然后取里面的數(shù)據(jù),無(wú)論如何都不行,我看了一下實(shí)驗(yàn)箱手冊(cè)里的例子,他們?nèi)珱](méi)用到data段,而是數(shù)據(jù)段和代碼段共用,用ds :code 及push cs,pop

58、ds來(lái)解決。因此我分析的結(jié)果是實(shí)驗(yàn)箱不支持的問(wèn)題,我在PC機(jī)上用匯編均支持。</p><p>  經(jīng)老師指點(diǎn),是因?yàn)榇a長(zhǎng)了,實(shí)驗(yàn)箱的監(jiān)控程序不支持,通過(guò)滑動(dòng)下載軟件上的延遲到高的部分解決了。</p><p>  我是用一個(gè)循環(huán)來(lái)檢測(cè)計(jì)時(shí)器0的輸出情況,由于我在循環(huán)里忘了加一條IN指令,而陷入死循環(huán),加了后解決了。</p><p>  主要是不了解8279的原理及使

59、用方法,還有數(shù)碼管的編碼方式,通過(guò)查看文檔資料及自己摸索解決了。</p><p>  這個(gè)問(wèn)題跟第3點(diǎn)類(lèi)似,也是在循環(huán)里忘了先用IN指令讀取數(shù)據(jù),再用AND截取數(shù)據(jù)檢測(cè)。發(fā)現(xiàn)后加了IN指令解決了。</p><p>  經(jīng)過(guò)這些過(guò)程我們小組便在第三周的開(kāi)始接受老師的檢驗(yàn)并通過(guò)了。老師拿來(lái)一個(gè)頻率發(fā)生器,開(kāi)到方波進(jìn)行檢驗(yàn),在我們的頻率計(jì)可顯示的范圍內(nèi)通過(guò)了。</p><p&

60、gt;  后來(lái)我們便是作報(bào)告,以及自己做自己想做的其它實(shí)驗(yàn)。</p><p>  在本次課程中我學(xué)到了和熟悉了不少匯編指令,而且匯編的編程積累量也有兩、三千行,提高了不少的動(dòng)手能力以及獨(dú)立思考、解決問(wèn)題的能力。感覺(jué)收獲挺大的。</p><p><b>  建議:</b></p><p>  建議以后實(shí)驗(yàn)箱的功能更多點(diǎn),像8279中斷這種功能缺陷

61、,我們也就缺少了一次用中斷的機(jī)會(huì)。</p><p>  建議實(shí)驗(yàn)箱能允許的代碼多些,這樣我們可以發(fā)揮自己的想象和能力編出更加多彩的程序。</p><p>  建議學(xué)校安排更多的實(shí)驗(yàn)課,來(lái)彌補(bǔ)我們?cè)诶碚搶W(xué)習(xí)下缺少實(shí)踐的情況。少開(kāi)一些與專(zhuān)業(yè)課相差比較大的學(xué)科。</p><p>  建議課程安排合理一些,將每天的課安排平均一些,像我們上半學(xué)期課很多,下半學(xué)期課很少,這樣我

62、們充分消化和學(xué)習(xí)的時(shí)間有沖突。</p><p>  建議多些擴(kuò)展的實(shí)驗(yàn)?zāi)K,例如像數(shù)碼管這樣的模塊比較少,學(xué)校是否可以多采購(gòu)一些這樣的模塊再課程設(shè)計(jì)時(shí)讓學(xué)生盡可能地發(fā)揮想象力和創(chuàng)造力。我覺(jué)得創(chuàng)造力的基礎(chǔ)是環(huán)境和有一定學(xué)習(xí)知識(shí)基礎(chǔ)。否則寫(xiě)寫(xiě)報(bào)告只是空談。</p><p>  建議擴(kuò)展一些更有趣的模塊,如LCD屏(黑白或彩色的),無(wú)線網(wǎng)絡(luò)模塊。</p><p>  建議

63、盡可能多地提供技術(shù)文檔,例如盡可能多地提供實(shí)驗(yàn)室里的所有實(shí)驗(yàn)箱的文檔,讓學(xué)生能盡可能地自學(xué)里面的東西。</p><p>  這就是我個(gè)人的經(jīng)驗(yàn)、體會(huì)、教訓(xùn)和建議。</p><p><b>  小組成員:劉春</b></p><p><b>  體會(huì):</b></p><p>  在做“可編程頻率計(jì)的

64、設(shè)計(jì)”這個(gè)課題時(shí),我學(xué)到了很多。很多知識(shí)確實(shí)只有從實(shí)踐中獲得,想要只從書(shū)本上學(xué)到,那是沒(méi)辦法的。雖然以前我們?cè)谖C(jī)原理與接口技術(shù)可課上也學(xué)習(xí)了很多硬件知識(shí),包括 8086、8253等等,還到實(shí)驗(yàn)室里做過(guò)很多實(shí)驗(yàn),但是我們這個(gè)課題也用到了我們沒(méi)有學(xué)過(guò),沒(méi)有用過(guò)的硬件—8279鍵盤(pán)顯示器。</p><p>  對(duì)硬件知識(shí)我最多的收獲就是8279了。一開(kāi)始我還是不懂8279的,在老師給的資料里有這方面的用法。這次我對(duì)硬

65、件知識(shí)收獲最多的就是明白了很多8279的功能,主要是顯示功能。在顯示數(shù)字時(shí),數(shù)字被分成了7個(gè)部分,外加一個(gè)小數(shù)點(diǎn),由八位代表這八個(gè)部分,0表示不亮,1表示亮,比如:00000000B表示全部熄滅,00000110B表示1,01011011B表示2等等。在顯示數(shù)字時(shí),我遇到了一個(gè)問(wèn)題,就是當(dāng)我輸出后2位之后要輸出3,4位數(shù)字是,8279輸不出來(lái)。當(dāng)時(shí)我覺(jué)得很奇怪,后來(lái)我知道8279顯示第3,4位是不顯示出來(lái)的。而鍵盤(pán)上的3,4位數(shù)字在實(shí)際

66、的編程中卻是第5,6位。這一點(diǎn)在當(dāng)時(shí)我困惑了好久,后來(lái)我問(wèn)了一下同學(xué),然后又上網(wǎng)查了一下才明白過(guò)來(lái)。在8279初始化的時(shí)候,輸入控制端的掃描頻率38H我就不懂了,因?yàn)榫幊痰臅r(shí)候直接用就可以了,所以我也沒(méi)有仔細(xì)研究,我想大概是顯示數(shù)字的速度吧。</p><p>  在可編程頻率計(jì)的設(shè)計(jì)中,還用到了8253和I/O輸入接口。在上學(xué)期的微機(jī)原理與接口技術(shù)課,我們也做了很多硬件設(shè)計(jì)實(shí)驗(yàn),對(duì)匯編語(yǔ)言和實(shí)驗(yàn)儀器也有一定的了解

67、,知道一些8253和I/O接口的原理與使用?,F(xiàn)在通過(guò)這個(gè)課題的設(shè)計(jì)使我對(duì)匯編語(yǔ)言編程和硬件的原理與使用有了更深的認(rèn)識(shí)。</p><p>  在剛開(kāi)始上這門(mén)課的時(shí)候,當(dāng)時(shí)我考慮到我的專(zhuān)業(yè)是計(jì)算機(jī)科學(xué)與技術(shù),選的又是軟件工程方向,所以對(duì)這門(mén)課沒(méi)有引起足夠的重視。以前我的家里人在電話里也叫我也軟件、硬件一起學(xué),后來(lái)大家都很認(rèn)真地在查找資料,設(shè)計(jì)匯編程序,一起討論,我也下定決心認(rèn)真學(xué),即使不能做到對(duì)各個(gè)語(yǔ)句、各個(gè)硬件了如

68、指掌的地步,但是也要知道他們的基本原理和使用方法吧。剛開(kāi)始還有些吃力,畢竟學(xué)習(xí)微機(jī)原理與接口技術(shù)這門(mén)課已經(jīng)過(guò)去了一個(gè)暑假,很多知識(shí)忘記了,比如8253初始化的各種命令字等等。后來(lái)看微機(jī)原理與接口技術(shù)的書(shū),對(duì)匯編語(yǔ)言更加熟悉后,對(duì)匯編語(yǔ)句編寫(xiě)程序,硬件連接就很輕松了。</p><p>  在以前學(xué)習(xí)微機(jī)原理與接口技術(shù)的時(shí)候,學(xué)了很多匯編語(yǔ)言,雖然也有實(shí)驗(yàn)課,但是還有很多語(yǔ)句不熟,甚至有些語(yǔ)句根本就不知道什么意思,不

69、會(huì)用。在這次設(shè)計(jì)中也用到了不少匯編語(yǔ)句,有知道的,不熟的,也有一些我根本不知道什么意思。通過(guò)學(xué)習(xí)與討論,我熟悉了很多匯編語(yǔ)句,也學(xué)習(xí)了很多語(yǔ)句,在匯編程序知識(shí)上拓展了很多,學(xué)習(xí)了很多。對(duì)于8253的初始化,我在學(xué)習(xí)微機(jī)原理與接口技術(shù)的時(shí)候就很清楚了,現(xiàn)在就又學(xué)習(xí)了一遍,加深印象。有些細(xì)小的知識(shí),應(yīng)用,比如分離一個(gè)數(shù)的各個(gè)位就需要用到除法div,然后將各個(gè)位一個(gè)一個(gè)的顯示出來(lái)。除法div根據(jù)除數(shù)、被除數(shù)的位不同而使用方法也有所不同,如果被

70、除數(shù)是16位,商或余數(shù)都是八位,那么就可以將被除數(shù)放在ax中,指令:div 源(除數(shù)),計(jì)算結(jié)果是商放在al中,余數(shù)放在ah中。如果商或余數(shù)超過(guò)8位,那么被除數(shù)的低16位就必須放在ax中,高16位必須放在dx中,如果被除數(shù)低于16位,那么高位dx就得賦值00H,指令:div 源(除數(shù)),計(jì)算結(jié)果是商放在ax中,余數(shù)放在dx中。如果還用前面那種除法,就會(huì)出現(xiàn)計(jì)算結(jié)果溢出,程序會(huì)卡在這一語(yǔ)句上。當(dāng)時(shí)我用除法顯示一個(gè)5位數(shù),8279顯<

71、/p><p>  我在這次硬件課程設(shè)計(jì)中,收獲最多的還是動(dòng)手能力,在學(xué)校里除了實(shí)驗(yàn)課,動(dòng)手的機(jī)會(huì)還真不多。有些書(shū)本知識(shí)學(xué)習(xí)的很好的同學(xué),一看到那些復(fù)雜的電路,接口,連接線路就不知所措,畢竟書(shū)本知識(shí)和實(shí)際實(shí)驗(yàn)器件還是有差別的,有些差別還挺大的。通過(guò)這次實(shí)際動(dòng)手,我的動(dòng)手能力也提升了不少啊。</p><p>  對(duì)今后的項(xiàng)目開(kāi)發(fā)工作的建議:</p><p>  我覺(jué)得硬件設(shè)

72、計(jì)最看重的是親自動(dòng)手能力,不管你對(duì)課題了解得怎么樣,一定要親自動(dòng)手寫(xiě)匯編程序,親自連接硬件,親自調(diào)試。</p><p>  鑒于親自動(dòng)手對(duì)項(xiàng)目開(kāi)發(fā)工作的重要性,我覺(jué)得我們應(yīng)多上實(shí)驗(yàn)課,多對(duì)實(shí)際硬件操作,書(shū)本上的知識(shí)很重要,但實(shí)際操作也同樣重要。并且參加工作,公司看重的也主要是你的實(shí)際動(dòng)手能力。</p><p>  5附錄—程序清單及結(jié)構(gòu)圖</p><p>  5.1

73、邏輯結(jié)構(gòu)圖及流程圖</p><p> ?。?)頻率計(jì)程序流程圖 (2)可編程頻率計(jì)使用流程圖</p><p><b>  (3)硬件框架圖</b></p><p><b>  5.2程序清單 </b></p><p>  Z8279 equ 20ah

74、;命令字地址</p><p>  D8279 equ 208h ;數(shù)據(jù)地址</p><p>  LEDMOD equ 00h ;左邊輸入,八位顯示,外部譯碼八位顯示</p><p>  LEDFEQ equ 38h ;掃描頻率</p><p>  Clock0 equ 210h ;定時(shí)器0

75、的地址</p><p>  Clock1 equ 211h ;定時(shí)器1的地址</p><p>  Clock2 equ 212h ;定時(shí)器2的地址</p><p>  clockc equ 213h ;計(jì)數(shù)器控制端口地址</p><p>  Clock0Mode equ 00110000b

76、 ;通道0,先讀寫(xiě)低位再讀寫(xiě)高位,方式0,2進(jìn)制</p><p>  Clock1Mode equ 01110100b ;通道1,先讀寫(xiě)低位再讀寫(xiě)高位,方式2,2進(jìn)制</p><p>  Clock2Mode equ 10110100b ;通道2,先讀寫(xiě)低位再讀寫(xiě)高位,方式2,2進(jìn)制</p><p>  Clock1Read equ 0100010

77、0b ;通道1計(jì)數(shù)器鎖存,供CPU讀</p><p>  Clock0Count equ 0f424h ;計(jì)數(shù)器0計(jì)數(shù)值62500,在1M/8Hz下0.5秒所需計(jì)數(shù)值)</p><p>  Clock1Count equ 0 ;計(jì)數(shù)器1計(jì)數(shù)值</p><p>  Clock2Count equ 16 ;計(jì)數(shù)器2計(jì)數(shù)值&

78、lt;/p><p>  InputAdr equ 218h ;IO輸入端口地址</p><p>  StartWork equ 01h ;開(kāi)始工作的檢測(cè)狀態(tài)(通過(guò)與運(yùn)算截獲第一位)</p><p>  Clock0End equ 02h ;檢測(cè)計(jì)數(shù)器0是否工作結(jié)束(通過(guò)與運(yùn)算截獲第二位)</p>

79、<p>  Data_K equ 10 ;變量K,初始值10</p><p>  CODE SEGMENT</p><p><b>  ;主函數(shù)</b></p><p>  MAIN PROC FAR</p><p>  ASSUME CS:CODE DS:CODE</p>

80、;<p><b>  START:</b></p><p><b>  push cs</b></p><p><b>  pop ds</b></p><p>  call Is_Start ;檢測(cè)是否按下開(kāi)始脈沖鍵</p><p>  call

81、 InitClock2 ;初始化計(jì)數(shù)器2,并產(chǎn)生可編程的方波頻率 </p><p>  call InitClock0 ;初始化計(jì)數(shù)器0 </p><p>  call InitClock1 ;初始化計(jì)數(shù)器1 </p><p>  call CheckClock0Over ;檢測(cè)計(jì)數(shù)器0是否工作結(jié)束,并將讀取的結(jié)果存入變量a中<

82、;/p><p>  call Display ;顯示變量a的值到LED上</p><p><b>  EndTime:</b></p><p>  mov dx,InputAdr ;IO輸入端口地址</p><p><b>  in al,dx</b></p>&

83、lt;p>  and al,StartWork ;開(kāi)始工作的檢測(cè)狀態(tài)(通過(guò)與運(yùn)算截獲第一位)</p><p>  cmp al,01h ;判斷是否為高電平 </p><p><b>  jz START</b></p><p>  jmp EndTime</p><p><b>

84、;  MAIN ENDP</b></p><p>  ;這個(gè)函數(shù)負(fù)責(zé)將提取出的變量a的值輸出到LED上,最大16位</p><p>  Display proc near </p><p><b>  ;初始化8279</b></p><p>  mov di,ax ;保存頻率至B

85、X</p><p>  mov al,LEDMOD ;左邊輸入,八位顯示,外部譯碼八位顯示</p><p>  mov dx,Z8279</p><p><b>  out dx,al</b></p><p>  mov al,LEDFEQ ;掃描頻率</p><p

86、><b>  out dx,al</b></p><p>  ;向LED輸出數(shù)據(jù),顯示結(jié)果</p><p><b>  mov cx,5</b></p><p><b>  First1:</b></p><p>  mov ax,di ;保存頻

87、率至AX</p><p>  mov dx,00h</p><p>  mov si,Data_K</p><p><b>  div si</b></p><p>  mov di,ax ;將商保存至BX</p><p>  mov ax,dx

88、 ;將余數(shù)保存至AX</p><p>  lea bx,LED</p><p><b>  add ax,bx</b></p><p><b>  mov bx,ax</b></p><p>  mov ax,[bx]</p><p>  OutPut1: </p&

89、gt;<p>  mov dx,D8279 ;8279數(shù)據(jù)端口</p><p><b>  out dx,al</b></p><p><b>  dec cx</b></p><p><b>  cmp cx,3</b></p><p>  

90、ja Continu1</p><p>  lea bx,Signed</p><p>  mov ax,[bx]</p><p><b>  cmp ax,0</b></p><p><b>  ja Next1</b></p><p><b>  jmp Ne

91、xt2</b></p><p><b>  Continu1:</b></p><p>  jmp First1</p><p><b>  Next1:</b></p><p>  mov dx,D8279</p><p>  mov al,00h</p&

92、gt;<p>  out dx,al ;空操作</p><p>  out dx,al ;空操作</p><p>  lea bx,Signed</p><p>  mov ax,00h</p><p>  mov [bx],ax</p><p><

93、;b>  Next2:</b></p><p><b>  cmp cx,0</b></p><p>  ja Continu1</p><p><b>  jmp Next3</b></p><p><b>  Next3:</b></p>

94、<p>  mov dx,D8279</p><p>  mov al,00h</p><p>  out dx,al ;空操作</p><p>  lea bx,Signed</p><p>  mov ax,[bx]</p><p><b>  inc ax</b

95、></p><p>  mov [bx],ax</p><p><b>  ret </b></p><p>  Display endp</p><p>  ;檢查是否按下開(kāi)始按鈕,判斷脈沖信號(hào)</p><p>  Is_Start proc near</p><p&g

96、t;<b>  Again: </b></p><p>  mov dx,InputAdr ;IO輸入端口地址</p><p><b>  in al,dx</b></p><p>  and al,StartWork ;開(kāi)始工作的檢測(cè)狀態(tài)(通過(guò)與運(yùn)算截獲第一位)</p><p>

97、;  cmp al,00h ;判斷是否為低電平 </p><p>  jz EndCheck </p><p>  jmp Again </p><p>  EndCheck: ;判斷結(jié)束,可以工作了</p><p><b>  ret</b></p>

98、;<p>  Is_Start endp</p><p>  ;設(shè)置計(jì)數(shù)器0的工作方式及計(jì)數(shù)值</p><p>  InitClock0 proc near</p><p>  mov dx,clockc ;計(jì)數(shù)器控制端地址</p><p>  mov al,Clock0Mode ;通道0,先讀寫(xiě)低位再讀寫(xiě)高位,

99、方式0,2進(jìn)制,只定時(shí)1次</p><p><b>  out dx,al</b></p><p>  mov dx,Clock0 ;定時(shí)器0的地址</p><p>  mov ax,Clock0Count ;計(jì)數(shù)器0計(jì)數(shù)值62500,在1M/8Hz下0.5秒所需計(jì)數(shù)值)</p><p><b>

100、  out dx,al</b></p><p><b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p><b>  ret</b></p><p>  InitClock0 endp</p>&l

101、t;p>  ;設(shè)置計(jì)數(shù)器1的工作方式及計(jì)數(shù)值</p><p>  InitClock1 proc near</p><p>  mov dx,clockc ;計(jì)數(shù)器控制端地址</p><p>  mov al,Clock1Mode ;通道1,先讀寫(xiě)低位再讀寫(xiě)高位,方式2,2進(jìn)制</p><p><b>  ou

102、t dx,al</b></p><p>  mov dx,Clock1 ;定時(shí)器1的地址</p><p>  mov ax,Clock1Count ;計(jì)數(shù)器1計(jì)數(shù)值0</p><p><b>  out dx,al</b></p><p><b>  mov al,ah</b&g

103、t;</p><p><b>  out dx,al</b></p><p><b>  ret</b></p><p>  InitClock1 endp</p><p>  ;設(shè)置計(jì)數(shù)器2的工作方式及計(jì)數(shù)值,工作頻率1MHZ</p><p>  InitClock2 pr

104、oc near</p><p>  mov dx,InputAdr ;IO輸入端口地址</p><p><b>  in al,dx</b></p><p><b>  mov cl,2</b></p><p><b>  not al</b></p>

105、<p>  and al,11111100b</p><p>  shr al,cl ;右移兩位</p><p>  mov ah,00h</p><p>  mov cx,ax ;保存頻率倍數(shù)</p><p>  mov dx,clockc ;計(jì)數(shù)器控制端地址</p>

106、<p>  mov al,Clock2Mode ;通道2,先讀寫(xiě)低位再讀寫(xiě)高位,方式2,2進(jìn)制</p><p><b>  out dx,al</b></p><p><b>  cmp cx,0</b></p><p><b>  je CX_1</b></p>&

107、lt;p><b>  jmp Next</b></p><p><b>  CX_1:</b></p><p>  mov cx,1 ;1倍頻</p><p><b>  Next: </b></p><p>  mov ax,Clock2Coun

108、t ;計(jì)數(shù)器2計(jì)數(shù)值16</p><p>  mov dx,00h</p><p><b>  mul cx</b></p><p>  mov dx,Clock2 ;定時(shí)器2的地址</p><p><b>  out dx,al</b></p><p><

109、;b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p><b>  ret</b></p><p>  InitClock2 endp</p><p>  ;檢測(cè)定時(shí)器0是否定時(shí)0.5秒結(jié)束</p><p&g

110、t;  CheckClock0Over proc near</p><p>  mov dx,InputAdr ;IO輸入端口地址</p><p>  Compare: </p><p><b>  in al,dx</b></p><p>  and al,Clock0End ;檢測(cè)計(jì)數(shù)器0是否工作結(jié)束

111、(通過(guò)與運(yùn)算截獲第二位)</p><p>  cmp al,00h ;比較該位是否為低電平</p><p>  je Compare</p><p>  mov dx,clockc ;計(jì)數(shù)器控制端地址</p><p>  mov al,Clock1Read ;設(shè)置計(jì)數(shù)器1鎖存,供CPU讀</p>

112、<p><b>  out dx,al</b></p><p>  mov dx,clock1 ;定時(shí)器1的地址</p><p>  in al,dx ;讀低位</p><p>  xchg ah,al ;交換AL與AH的值</p><p>  in a

113、l,dx ;讀高位</p><p>  xchg ah,al ;交換AL與AH的值</p><p>  mov cx,ax ;用CX臨時(shí)儲(chǔ)存AX</p><p>  mov ax,0ffffh ;將最大值65535賦值給AX</p><p>  sub ax,cx

114、 ;得出計(jì)數(shù)的最終頻率的一半</p><p>  mov cx,2 ;乘數(shù)2</p><p>  mov dx,00h</p><p>  mul cx ;ax * 2</p><p><b>  ret</b></p><p>  Che

115、ckClock0Over endp</p><p>  LED db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h ;0~9 LED數(shù)碼管顯示 </p><p>  Signed db 01h ;使用標(biāo)志</p><p><b>  CODE E

溫馨提示

  • 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ù)僅提供信息存儲(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)論