硬件課程設(shè)計(jì)報(bào)告---通訊設(shè)備人機(jī)接口設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩39頁(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>  通訊設(shè)備人機(jī)接口設(shè)計(jì)</p><p> ?。ㄓ?jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì))</p><p>  專 業(yè):自動(dòng)化 </p><p><b>  組 員:</b></p><p><b>  2012年9月</b></p><p><b>

2、;  人員及任務(wù)分配</b></p><p><b>  目錄</b></p><p>  一、系統(tǒng)功能和設(shè)計(jì)方案3</p><p>  1.1 基本設(shè)計(jì)目標(biāo)實(shí)現(xiàn)3</p><p>  1.1.1 基本設(shè)計(jì)目標(biāo)3</p><p>  1.1.2 按鍵說(shuō)明4</p>

3、<p>  1.2 硬件連接5</p><p>  1.2.1 鍵盤掃描連接圖:5</p><p>  1.2.2 顯示連接圖:6</p><p>  1.3 系統(tǒng)設(shè)計(jì)思路6</p><p><b>  二、程序流程圖7</b></p><p>  2.1 主程序流程7&l

4、t;/p><p>  2.2 子程序流程圖8</p><p>  2.2.1 查詢子程序:8</p><p>  2.2.2 撥號(hào)程序:9</p><p>  2.2.3 撥號(hào)子程序:10</p><p>  2.2.4 接聽子程序:11</p><p>  2.2.5 時(shí)間譯碼及中斷程序

5、:12</p><p>  2.2.6 鍵盤和開關(guān)掃描程序:13</p><p>  三、編程與調(diào)試14</p><p><b>  四、心得體會(huì)14</b></p><p><b>  五、程序清單17</b></p><p>  一、系統(tǒng)功能和設(shè)計(jì)方案</

6、p><p>  1.1 基本設(shè)計(jì)目標(biāo)實(shí)現(xiàn)</p><p>  根據(jù)課程設(shè)計(jì)任務(wù)書所提出的要求,我們小組通過討論和分析后首先確定出此次電通訊設(shè)備人機(jī)接口設(shè)計(jì)中我們需要完成的幾個(gè)基本功能以及操作方案:</p><p>  1.1.1 基本設(shè)計(jì)目標(biāo)</p><p>  整個(gè)系統(tǒng)分為3個(gè)大功能模塊,分別為接聽、撥號(hào)和查詢3個(gè)模塊。</p>

7、<p><b>  接聽模塊:</b></p><p>  當(dāng)系統(tǒng)運(yùn)行時(shí),首先判斷有無(wú)來(lái)電,若來(lái)電,則在led上面顯示來(lái)電號(hào)碼,此時(shí)來(lái)電指示燈閃爍。同時(shí),你可以通過鍵盤來(lái)選擇是否接聽、掛斷或者無(wú)操作。當(dāng)選擇接聽時(shí),跳入接聽子程序,并在led上顯示當(dāng)前的通話時(shí)間。如果沒有任何操作,過一段時(shí)間程序會(huì)自動(dòng)掛斷,同時(shí)在led上面顯示來(lái)電的號(hào)碼。來(lái)電的號(hào)碼會(huì)自動(dòng)存入來(lái)電存儲(chǔ)區(qū),來(lái)電存儲(chǔ)區(qū)會(huì)存

8、放最近三次未接來(lái)電的信息。</p><p><b>  撥號(hào)模塊:</b></p><p>  若沒有來(lái)電,可以按1號(hào)鍵進(jìn)入撥號(hào)功能,鍵入撥號(hào)功能之后,撥號(hào)指示燈會(huì)常亮,此時(shí)表面你正在輸入號(hào)碼,同時(shí)led會(huì)等待數(shù)字鍵的按下,你可以選擇0-9的號(hào)碼,每當(dāng)鍵入一個(gè)數(shù)字,就會(huì)在led的最低位顯示出當(dāng)前按下的數(shù)字,當(dāng)再次按下數(shù)字時(shí),led上的所有數(shù)字將會(huì)左移一位,這樣就始終保

9、持當(dāng)前輸入號(hào)碼為led的最低位。若電話號(hào)碼輸入完畢,此時(shí)你也可以選擇掛斷鍵,這樣就會(huì)返回主程序。當(dāng)你按下?lián)芴?hào)鍵時(shí),首先系統(tǒng)將會(huì)判斷你是否鍵入了6個(gè)數(shù)字鍵。若輸入正確,對(duì)方有沒有占線鍵按下的話,此時(shí),led上會(huì)顯示連接信息;若所撥號(hào)碼不足6位或者超過6位,led上會(huì)顯示error的錯(cuò)誤信息。你可以通過開關(guān)來(lái)確定是否接聽或者掛斷當(dāng)前號(hào)碼,若接聽,則會(huì)顯示通話時(shí)長(zhǎng)。若掛斷,led上會(huì)顯示hangup后,在led上仍會(huì)顯示你所撥的號(hào)碼,此時(shí),你

10、可以按掛斷鍵返回主程序。當(dāng)然你也可以選擇重?fù)堋?若一直無(wú)人接聽,則會(huì)自動(dòng)掛斷,led上會(huì)顯示autohp的自動(dòng)掛斷信息。若撥號(hào)時(shí)對(duì)方占線,則在led上顯示busy的占線信息,一段時(shí)間后系統(tǒng)會(huì)自動(dòng)掛斷。</p><p><b>  查詢模塊:</b></p><p>  當(dāng)沒有來(lái)電時(shí),你可以按下鍵盤的2號(hào)鍵,進(jìn)入查詢功能。當(dāng)進(jìn)入查詢功能后,你可以通過選擇按下上翻或下翻

11、按鍵來(lái)查詢最近來(lái)電的三個(gè)號(hào)碼。如果你查詢到了比較重要的號(hào)碼,需要回?fù)軙r(shí),你可以按下?lián)芴?hào)鍵,此時(shí),led上會(huì)顯示連接信息,程序也跳入了撥號(hào)模塊。</p><p>  1.1.2 按鍵說(shuō)明</p><p>  實(shí)驗(yàn)箱3×4鍵盤從左向右,自上而下分別為1,2,3,4,5,6,7,8,9,撥號(hào)鍵,0,掛機(jī)鍵。開關(guān)K1至K6分別為來(lái)電,來(lái)電2,來(lái)電3,占線鍵,接聽鍵,掛斷鍵。</p&

12、gt;<p>  實(shí)驗(yàn)箱面板上3*4小鍵盤:</p><p>  表1.1 3*4鍵盤功能對(duì)照表</p><p> ?。?)實(shí)驗(yàn)箱面板上開關(guān)功能說(shuō)明:</p><p>  表1.2 開關(guān)功能對(duì)照表</p><p><b>  1.2 硬件連接</b></p><p>  確定

13、了基本功能軟件設(shè)計(jì)方案,我們通過查閱相關(guān)資料,綜合討論后設(shè)計(jì)出了硬件連接方案,下面是我們的硬件連接:</p><p>  開關(guān) K1---K6接B0---B5;</p><p>  鍵盤 P0---P3接C0---C3</p><p>  Q0---Q2接C4---C6;</p><p>  8254定時(shí)器0的GATE接+5V,OUT端與82

14、59的IRQ0連接,D0接8255的A0,</p><p>  8254的CS與CS1(300H)連接。</p><p>  8259的SP/1接+5V,INTR接INT1,CS-1接CS2(320H)。</p><p>  1.2.1 鍵盤掃描連接圖:</p><p><b>  圖1.1</b></p>

15、<p>  1.2.2 顯示連接圖:</p><p><b>  圖1.2</b></p><p>  1.3 系統(tǒng)設(shè)計(jì)思路</p><p>  將整個(gè)系統(tǒng)分為許多個(gè)小的模塊,各個(gè)模塊之間相互獨(dú)立,通過定義不同的接口來(lái)實(shí)現(xiàn)各個(gè)模塊的連接。這樣在調(diào)試程序的時(shí)候,可以分別進(jìn)行調(diào)試??梢约涌煺n程設(shè)計(jì)的進(jìn)程,縮短課程設(shè)計(jì)時(shí)間,簡(jiǎn)化我們的調(diào)試

16、工作。</p><p>  關(guān)于通訊系統(tǒng)的人機(jī)接口設(shè)計(jì),其實(shí)主要是要完成三大功能的設(shè)計(jì)。即:接聽功能,撥號(hào)功能和查詢功能。我們從這三個(gè)功能入手,分別對(duì)其進(jìn)行了模塊細(xì)化,畫出了相應(yīng)的程序流程。</p><p><b>  二、程序流程圖</b></p><p><b>  2.1 主程序流程</b></p>&

17、lt;p><b>  圖2.1</b></p><p>  2.2 子程序流程圖</p><p>  2.2.1 查詢子程序:</p><p><b>  圖2.2</b></p><p>  2.2.2 撥號(hào)程序:</p><p><b>  圖2.3<

18、;/b></p><p>  2.2.3 撥號(hào)子程序:</p><p><b>  圖2.4</b></p><p>  2.2.4 接聽子程序:</p><p><b>  圖2.5</b></p><p>  2.2.5 時(shí)間譯碼及中斷程序:</p>

19、<p><b>  圖2.6</b></p><p>  2.2.6 鍵盤和開關(guān)掃描程序:</p><p><b>  圖2.7</b></p><p><b>  三、編程與調(diào)試</b></p><p>  在明確實(shí)現(xiàn)目的與方法后,我們畫出了流程圖,根據(jù)流程圖,我們

20、編制出整個(gè)設(shè)計(jì)的主程序和子程序,并且通過組員的反復(fù)調(diào)試后,實(shí)現(xiàn)了提出的基本功能和拓展功能。再進(jìn)行綜合調(diào)試,測(cè)試系統(tǒng)的可行性。</p><p><b>  四、心得體會(huì)</b></p><p>  兩周的計(jì)算機(jī)硬件課程設(shè)計(jì)終于要結(jié)束了,總算是實(shí)現(xiàn)了所要求的基本功能,所要完善的地方也只能再往后的時(shí)間里自 己去摸索去改善,但是打從心里覺得這兩周真的受益匪淺。</p&g

21、t;<p>  在課程設(shè)計(jì)剛開始階段,由于始終感覺按鍵不夠用,導(dǎo)致了前面階段的進(jìn)展很慢,但大家都還比較有團(tuán)隊(duì)協(xié)作精神,沒 有自己一味的按著自己的思路走,然后大家就坐下來(lái)好好的討論一下,最后是通過小組討論確定了我們這個(gè)設(shè)計(jì)的統(tǒng)一方案,接著 大家就按照個(gè)人的專長(zhǎng),分配好每個(gè)人的具體任務(wù),我所負(fù)責(zé)的是程序的主體流程邏輯以及實(shí)現(xiàn)細(xì)節(jié)。</p><p>  在剛開始畫流程圖的時(shí)候,我沒有按照任務(wù)書上面的基本要

22、求來(lái)畫,就是按照自己的想法來(lái)設(shè)計(jì)人機(jī)通訊接口,結(jié)果浪 費(fèi)了半天的時(shí)間,到最后,當(dāng)考慮到細(xì)節(jié)問題時(shí),總覺得有些不合理,所以,都舍棄前面那些不合理的流程圖,最后還是小組討論 定下了流程方案,然后再把流程圖細(xì)節(jié)化。到了編程的時(shí)候,我們接受了老師的經(jīng)驗(yàn),將整個(gè)程序模塊化了。其實(shí),這還是我第一 次將整個(gè)程序進(jìn)行模塊化,以前做的時(shí)候,都是比較小的程序,雖然也有模塊化,但對(duì)于模塊化時(shí)的接口并沒有考慮得那么詳細(xì), 這次不同了,我得好好的考慮每個(gè)模塊的接

23、口問題了,我看了很多別人的程序,最后,總算有了一個(gè)比較明確的方案。最后我分配 給了每個(gè)組員相關(guān)的模塊任務(wù)。我認(rèn)為不管組員的編程能力怎么樣,對(duì)于這樣一個(gè)課程設(shè)計(jì),每一個(gè)組員都應(yīng)該參與到其中,并且 體會(huì)一下其中的樂趣,能力強(qiáng)的,就分得大一點(diǎn)的模塊??傊屆恳粋€(gè)人都能嘗試一下,這樣每個(gè)人在此次課程設(shè)計(jì)中應(yīng)該都會(huì)有 不少的收獲。經(jīng)過一個(gè)星期的努力,我們程序的基本功能都已經(jīng)實(shí)現(xiàn)了。我們打算在原有的功能上,加上一些比較人性化的細(xì)節(jié), 雖然這些細(xì)節(jié)可

24、能不算是附加功能,但我覺得既然要做,就要盡善盡美。因此,我們又著手修</p><p>  最后我總結(jié)出來(lái)幾點(diǎn)心得:</p><p>  1、我們模塊化時(shí),一定要注意接口問題;</p><p>  2、我們寫程序時(shí),要養(yǎng)成加注釋的習(xí)慣;</p><p>  3、不管是子程序還是跳轉(zhuǎn)的入口點(diǎn),最好使用能體現(xiàn)程序功能的英文縮寫表示。</p&g

25、t;<p>  最后也是最重要的一步,調(diào)試程序,就比較費(fèi)時(shí)費(fèi)力了,因?yàn)檫@個(gè)不僅僅要看程序邏輯,因?yàn)橛袝r(shí)候但看程序很難看出 其中的錯(cuò)誤,需要用到單步調(diào)試,這個(gè)實(shí)在是太考一個(gè)人的耐心了,而且有時(shí)候程序不一定有錯(cuò),而且硬件出問題了,比如接線是 斷的,或者按鍵是壞的不靈敏的,我剛開始的時(shí)候在抱怨學(xué)校為什么不換一些好一點(diǎn)的硬件,但是后來(lái)想想以后的工作我們不也是 會(huì)遇到這樣的情況嗎,難道我們所遇到的硬件機(jī)器會(huì)一直都是可靠無(wú)錯(cuò)的嗎?現(xiàn)在

26、早點(diǎn)遇到這種情況,學(xué)會(huì)如何去處理也對(duì)我們是 一種鍛煉啊!</p><p>  我們組本次計(jì)算機(jī)硬件基礎(chǔ)課程設(shè)計(jì)的題目是通訊設(shè)備人機(jī)接口設(shè)計(jì),我們班采用的是抽簽的方式分配題目,當(dāng)我們接到這個(gè)題目的時(shí)候頓時(shí)傻眼了。不想選這個(gè)題目,原因有兩個(gè):第一,功能多,繁瑣;第二,不利于添加新的功能。</p><p>  說(shuō)實(shí)話,已經(jīng)放了一學(xué)期的硬件知識(shí),到現(xiàn)在我已經(jīng)忘得差不多了。本來(lái)學(xué)習(xí)的時(shí)候就學(xué)得不是很

27、好,為了不拖大家的后腿,我用了第一天整個(gè)晚上的時(shí)間把硬件的書粗略的過了一遍,把支離破碎的知識(shí)重新拾起在腦海里。</p><p>  第二天,早上八點(diǎn)半,我們準(zhǔn)時(shí)來(lái)到了實(shí)驗(yàn)室。我們幾個(gè)理清了所有的功能和流程,一個(gè)上午我們把整個(gè)的流程圖畫出來(lái)了,再用了下午跟晚上的時(shí)間修改整理出來(lái)了主程序,和各個(gè)模塊的流程圖。第三天,我們把主程序和各個(gè)模塊的流程圖用專業(yè)工具畫了出來(lái)。然后進(jìn)行了任務(wù)分工,由于我編程水平一般,所以沒有分配

28、到特別復(fù)雜的模塊,我負(fù)責(zé)顯示模塊,以及延時(shí)程序。</p><p>  乍一看,我的任務(wù)太簡(jiǎn)單了,我最初也這么以為,可是當(dāng)我真正著手干的時(shí)候我才發(fā)現(xiàn),各種各樣的問題都來(lái)了。</p><p>  比如,我們使用的是三色LED燈的六位顯示。我要把所有需要顯示的信息全部設(shè)計(jì)出來(lái),而且顯示的每一個(gè)信息都不能超過六位,最重要的是,還要使用能用八段LED顯示出來(lái)的字母,像如果遇見“w”之類的字母,我想沒

29、有哪位大神能用八段LED把它顯示出來(lái)吧。所以,這可真不是一件讓人省心的事。遇見像掛斷之類的信息還好,直接用英文“hangup”,可是當(dāng)遇到像接聽之類的信息的時(shí)候就比較讓人頭疼了,冥思苦想,最終設(shè)計(jì)出了“no ans”,我想終究還是能夠傳情達(dá)意。最終我用了1個(gè)小時(shí)把這些需要顯示的八種信息全部用八段LED可以顯示的英文或符號(hào)設(shè)計(jì)出來(lái)了。設(shè)計(jì)好這個(gè)問題又來(lái)了,三色LED能顯示的字形碼只有0~F這十六個(gè)數(shù)字,我們顯示需要用到的字母或者符號(hào)全都沒

30、有,沒辦法,自己編唄。對(duì)于從來(lái)都很不細(xì)心的我,這又是一個(gè)不小的挑戰(zhàn),還好最終我把這些東西都順利的弄出來(lái)了。(很不幸,調(diào)試的時(shí)候還是發(fā)現(xiàn)編錯(cuò)了一個(gè)碼)</p><p>  在設(shè)計(jì)和調(diào)試的過程中我們遇到了各種各樣的問題,還好我們相互幫助,相互提醒,相互鼓勵(lì),最終完成了這次的設(shè)計(jì)。這次的設(shè)計(jì)不僅讓我復(fù)習(xí)了計(jì)算機(jī)硬件基礎(chǔ)的基本知識(shí),還讓我學(xué)會(huì)了理論與實(shí)際的結(jié)合,最重要的是我體會(huì)到了一個(gè)團(tuán)隊(duì)的力量。</p>

31、<p>  本次課程設(shè)計(jì)我們小組抽到的是通訊設(shè)備人機(jī)接口的模擬設(shè)計(jì),在剛分配好設(shè)計(jì)任務(wù)書后,小組4人快速選好組長(zhǎng),并初步安排好后面兩周的工作。</p><p>  首先是我們每個(gè)人各自研究設(shè)計(jì)任務(wù)書的內(nèi)容要求,分析好要實(shí)現(xiàn)的每一功能,然后復(fù)習(xí)好計(jì)算機(jī)硬件的知識(shí)并擬定好各自的設(shè)計(jì)思路以及程序流程圖。再接著我們開始進(jìn)行小組討論,每個(gè)人各自說(shuō)出自己的設(shè)計(jì)思路然后由其他組員提出問題,找出不足并提出修改方案并討論

32、可行性,在整合4個(gè)人的思想后初步擬定程序功能以及流程框架,然后一起畫出程序流程圖并針對(duì)細(xì)節(jié)進(jìn)行討論。最終我們?cè)O(shè)計(jì)的通訊設(shè)備人機(jī)接口總的分為3大功能模塊:接聽、來(lái)電以及查詢。</p><p>  在定好框架后我們開始分配任務(wù),我分配到的是鍵盤掃描、開關(guān)掃描、 顯示代碼、時(shí)間譯碼以及LED計(jì)時(shí)初始化的子程序。接下來(lái)的一天我們通過翻查資料以及參照實(shí)驗(yàn)書上的參考程序完成各自的編程工作。在編寫鍵盤時(shí)通過8255C口高位依次

33、給每列送“0”,再由8255低口讀取每行的狀態(tài)查找是否有按鍵按下,接著延時(shí)去抖,判斷按下的鍵并根據(jù)鍵號(hào)賦予特定的值。開關(guān)的掃描我是通過8255B口來(lái)讀取的,在判斷是哪個(gè)按鍵按下轉(zhuǎn)入相應(yīng)的子程序。</p><p>  在編程的過程中只要思路清晰,畫好流程圖,還是很好寫出來(lái)的。比較痛苦的是調(diào)試的時(shí)候,歷時(shí)長(zhǎng),錯(cuò)難找,讓人心情煩躁。語(yǔ)法性的錯(cuò)誤還有提示,邏輯推理上的錯(cuò)誤,這需要一次次的單步調(diào)試,仔細(xì)觀察以及思索才能找出

34、。讓我記憶深刻的是每個(gè)子程序調(diào)試都通過了,但在連調(diào)的時(shí)候卻還是錯(cuò)誤不斷。很多地方暴露出來(lái)的是我們思維的不嚴(yán)謹(jǐn),例如再通過8255B口讀開關(guān)的狀態(tài)時(shí)由于只用到低6位,而高2位一直閑置的著不管,最終導(dǎo)致連調(diào)時(shí)該判斷跳轉(zhuǎn)的地方不跳轉(zhuǎn),足足讓我們檢查單步調(diào)試而來(lái)2個(gè)多小時(shí)才查找到錯(cuò)誤的地方。</p><p>  這次課程設(shè)計(jì)歷時(shí)兩周,在我們小組成員的分工合作下最終完成了設(shè)計(jì)任務(wù)。通過這次課程設(shè)計(jì)我學(xué)到了不少東西。不僅讓我

35、們復(fù)習(xí)了以前學(xué)過的知識(shí),更然我們深刻體會(huì)到程序模塊化設(shè)計(jì)的便利性以及自身思維嚴(yán)謹(jǐn)?shù)闹匾?。相信這些在我今后的學(xué)習(xí)工作生活中將有很大的幫助。</p><p>  在這次短暫的兩個(gè)星期的學(xué)習(xí)和設(shè)計(jì)中,我和我的隊(duì)友們一起合作完成了通訊設(shè)備人機(jī)接口設(shè)計(jì)的任務(wù)。通訊設(shè)備這個(gè)系統(tǒng)設(shè)計(jì)的難點(diǎn)主要在于其設(shè)計(jì)過程中功能的復(fù)雜性。經(jīng)過討論,考慮到按鍵并不充足,我們把這次查詢號(hào)碼的任務(wù)單獨(dú)拿出使用一個(gè)界面,這樣在使用的時(shí)候用戶按相應(yīng)的

36、功能鍵進(jìn)入所需的界面進(jìn)行操作。在這次課程設(shè)計(jì)中,我負(fù)責(zé)的主要是查詢功能的實(shí)現(xiàn)。在這次合作設(shè)計(jì)里,我學(xué)到了很多東西。在最初的討論設(shè)計(jì)中,組長(zhǎng)提出了共用內(nèi)存的方法,這是我以前沒有意識(shí)到的。這樣做的好處多多,很好的解決了各模塊之間的連接問題并讓各個(gè)模塊之間相互獨(dú)立。這樣有效的保證了各個(gè)組員獨(dú)立設(shè)計(jì)的程序能夠組合和為一個(gè)可行的大程序。</p><p>  設(shè)計(jì)完了程序則該輪到調(diào)試了,各個(gè)模塊進(jìn)行獨(dú)立的調(diào)試。調(diào)試是一件很需

37、要耐心的工作,同時(shí)也需要相當(dāng)?shù)淖屑?xì)。也許只是稍微寫漏了一句語(yǔ)句也會(huì)耽擱相當(dāng)大的時(shí)間。尤其是當(dāng)設(shè)計(jì)者被調(diào)試擾亂了思維的時(shí)候更應(yīng)該靜下心來(lái)仔細(xì)閱讀程序,檢驗(yàn)自己的邏輯是否有誤。這些都是需要慢慢學(xué)習(xí)的。</p><p>  當(dāng)問題被一個(gè)個(gè)解決之后,我們終于看到了希望。初步的功能已經(jīng)可以實(shí)現(xiàn),雖然還有不足,但我們已經(jīng)向成功邁進(jìn)。接下來(lái)則是對(duì)程序進(jìn)行優(yōu)化,對(duì)整體功能進(jìn)行更合理的調(diào)整,使其更偏向于使用者的習(xí)慣。最后我們添加了

38、一些更便利的功能,讓整個(gè)系統(tǒng)更完善。</p><p>  總之,在這次的課程設(shè)計(jì)中,我學(xué)習(xí)到了很多的東西。這是第一次合作做出一個(gè)比較貼近現(xiàn)實(shí)生活和實(shí)際的系統(tǒng),感覺自己終于能夠?qū)⑺鶎W(xué)的知識(shí)跟實(shí)際應(yīng)用聯(lián)系到了一起。深刻認(rèn)識(shí)到了自己的動(dòng)手能力以及知識(shí)的熟悉程度等方面的欠缺。這還需要進(jìn)行大量的練習(xí)才行。匯編語(yǔ)言與物理硬件靠得很近,這就需要我們對(duì)物理硬件有深刻的了解。如何掌控好一個(gè)硬件的特點(diǎn),則可以更好的進(jìn)行匯編語(yǔ)言的編程

39、。作為一個(gè)團(tuán)隊(duì)各個(gè)組員之間的相互溝通是完成好一項(xiàng)工作的前提,也是大家進(jìn)步的條件。</p><p><b>  五、程序清單</b></p><p><b>  .486</b></p><p>  CODE SEGMENT USE16</p><p><b>  ORG2000H<

40、/b></p><p>  CTRL_8254 EQU 30CH</p><p>  COUNT0 EQU 300H</p><p>  COUNT1 EQU 304H</p><p>  CTRL_8255 EQU 20FH</p><p>  PORTA EQU 203H</p>

41、;<p>  PORTB EQU 207H</p><p>  PORTC EQU 20BH</p><p>  ADDR0 EQU 320H</p><p>  ADDR1 EQU 328H</p><p>  INTQ EQU 40H</p><p>  KE

42、Y_FLAG DB ? ;按鍵標(biāo)識(shí)</p><p>  SEC_VAR DB ? ;秒鐘存儲(chǔ)</p><p>  SEC_VAR1 DB ?</p><p>  MIN_VAR DB ? ;分鐘存儲(chǔ)</p><p>  MIN_VAR1 DB ?</p><p>  HO

43、UR_VAR DB ? ;時(shí)鐘存儲(chǔ)</p><p>  HOUR_VAR1 DB ?</p><p>  DISP_VAR DB ? ;顯存指針</p><p>  DIAL_FLAG DB ? ;撥號(hào)位數(shù)存儲(chǔ)標(biāo)識(shí)</p><p>  SI_ADDR DW ? ;SI地址存儲(chǔ)</p>

44、;<p>  JINWEI DB ? ;進(jìn)位標(biāo)識(shí)</p><p>  SWIT_FLAG DB ? ;開關(guān)標(biāo)識(shí)</p><p>  CMP_FLAG DB ? ;比較標(biāo)識(shí)</p><p>  KEY_S_FLAG DB ? ;是否有按鍵按下標(biāo)識(shí)</p><p>  SWIT_S_FLAG

45、 DB ? ;是否有開關(guān)按下標(biāo)識(shí)</p><p>  CMP_FLAG_N_P DB ? ;來(lái)電號(hào)碼個(gè)數(shù)標(biāo)志</p><p>  ;---------------------------------------------------------------------------</p><p>  ;----------------------------

46、-----------------------------------------------</p><p>  ASSUME CS:CODE</p><p>  DIV_NUM DB 10</p><p>  MUL_NUM DB 6 ;乘法間隔</p><p>  ERROR DB 88H,0C0H,88H,8

47、8H,86H,0FFH ;錯(cuò)誤 </p><p>  BUSY DB 0FFH,91H,92H,0C1H,83H,0FFH;占線</p><p>  NECTED DB 0A1H,84H,87H,0C6H,84H,0C8H;接通信息</p><p>  HANGUP DB 8CH,0C1H,90H,0C8H,0A0H,8BH;掛斷</p&

48、gt;<p>  NOANS DB 92H,0C8H,0A0H,0FFH,0C0H,0C8H;無(wú)人接聽</p><p>  AUTOHP DB 8CH,8BH,0C0H,87H,0C1H,0A0H ;自動(dòng)掛斷</p><p>  DIE_OUT DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;熄滅</p><p>

49、  STANDBY DB 0BFH,0BFH,0BFH,0BFH,0BFH,0BFH;待機(jī)</p><p>  NUM1 DB 06H,06H,08H,04H,06H,07H ;顯示764866</p><p>  NUM2 DB 06H,05H,03H,03H,04H,08H ;顯示843356</p><p>  NU

50、M3 DB 06H,05H,01H,00H,01H,03H ;顯示310156</p><p>  SEC_CODE DB 01H,02H,03H,04H,05H,06H ;密碼123456</p><p>  SEC_CODE1 DB 6 DUP(0)</p><p>  DISP_MEM DB 6 DUP(0)</p&g

51、t;<p>  DISP_MEM1 DB 6 DUP(0) ;顯存?zhèn)溆?lt;/p><p>  DISP_NUM DB 18 DUP(?)</p><p>  DISP_TAB DB 0C0H,0F9H,0A4H,0B0H</p><p>  DB 99H,92H,82H,0F8H,80H,90H</p&g

52、t;<p><b>  ORG 2100H</b></p><p>  ;-----------------------------------------------</p><p>  ;-----------------------------------------------主程序</p><p><b>  

53、START:</b></p><p>  CALL INITIAL_8254</p><p>  CALL INITIAL_8255</p><p>  CALL INITIAL_8259;初始化8254,8255,8259</p><p>  L0: </p><p>  LEA SI,ST

54、ANDBY</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  CALL SWIT_SCAN ;判斷是否有來(lái)電,開關(guān)掃描</p><p>  CMP SWIT_S_FLAG,01H</p><p><b>  JNE L1<

55、;/b></p><p>  CMP SWIT_FLAG,2</p><p><b>  JG L1 </b></p><p>  CALL ANSW ;接聽子程序</p><p>  L1: MOV SWIT_S_FLAG,00H</p><p>  MOV

56、SWIT_FLAG,00H</p><p>  CALL KEY_SCAN ;按鍵掃描,判斷是否撥號(hào)</p><p>  CMP KEY_FLAG,01H</p><p><b>  JNE L2</b></p><p>  CALL DIAL_P ;撥號(hào)程序</p>&

57、lt;p>  L2: CMP KEY_FLAG,2</p><p><b>  JNE L0</b></p><p>  CALL REFER_P ;查詢子程序</p><p><b>  JMP L0</b></p><p>  ;------------------

58、--------------------------------------------------------------</p><p>  ;--------------------------------------------------------------------------------顯示代碼模塊 </p><p>  DISP_CODE PROC NEAR&

59、lt;/p><p><b>  PUSHA</b></p><p>  MOV SI,SI_ADDR</p><p>  LEA DI,DISP_MEM</p><p><b>  MOV CX,6</b></p><p>  ERR_AGN:MOV AL,[SI]</p&

60、gt;<p>  MOV [DI],AL</p><p><b>  INC DI</b></p><p><b>  INC SI</b></p><p>  LOOP ERR_AGN</p><p><b>  CALL DISP</b></p>

61、<p>  MOV ECX,01FFFH ;加入了顯示延時(shí)</p><p><b>  LOOP $</b></p><p><b>  POPA</b></p><p><b>  RET</b></p><p>  DISP_CODE ENDP&

62、lt;/p><p>  ;----------------------------</p><p>  ;---------------------------- 初始化模塊</p><p>  INITIAL_8254 PROC NEAR; 8254初始化</p><p><b>  PUSHA</b></p>

63、;<p>  MOV DX,CTRL_8254</p><p>  MOV AL,30H ;工作方式0,0號(hào)通道,先寫低后寫高字節(jié)</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,COUNT0</p><p>  MOV AX,47000&

64、lt;/p><p><b>  OUT DX,AL</b></p><p><b>  MOV AL,AH</b></p><p><b>  OUT DX,AL</b></p><p><b>  POPA</b></p><p>&

65、lt;b>  RET</b></p><p>  INITIAL_8254 ENDP</p><p>  INITIAL_8255 PROC NEAR;8255初始化,鍵盤掃描初始</p><p><b>  PUSHA</b></p><p>  MOV DX,CTRL_8255</p>

66、<p>  MOV AL,83H ;C口高四位輸出,低四位輸入,b口輸入,a口輸出</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,PORTA</p><p>  MOV AL,0FFH</p><p><b>  OUT DX,A

67、L</b></p><p>  CALL DELAY_05S</p><p><b>  POPA</b></p><p><b>  RET</b></p><p>  INITIAL_8255 ENDP</p><p>  INITIAL_8259 PROC

68、NEAR ;8259初始化</p><p><b>  PUSHA</b></p><p>  MOV DX,ADDR0</p><p>  MOV AL,13H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,ADDR

69、1</p><p>  MOV AL,40H</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,ADDR1</p><p>  MOV AL,01H</p><p><b>  OUT DX,AL</b></p><

70、p>  MOV DX,ADDR1</p><p><b>  IN AL,DX</b></p><p>  AND AL,0FEH ;IR0開放</p><p><b>  OUT DX,AL</b></p><p>  CLI

71、 ;關(guān)中斷,并且填寫中斷向量表</p><p><b>  MOV AX,0 </b></p><p><b>  MOV DS,AX</b></p><p>  LEA AX,INT_P</p><p>  MOV DS:[INTQ*4],AX</p><p>  MOV

72、 AX,SEG INT_P</p><p>  MOV DS:[INTQ*4+2],AX</p><p><b>  POPA</b></p><p><b>  RET</b></p><p>  INITIAL_8259 ENDP</p><p>  ;---------

73、------------- </p><p>  ;---------------------- 撥號(hào)模塊</p><p>  DIAL_P PROC NEAR ;撥號(hào)程序 </p><p><b>  PUSHA</b></p><p>  LD5: LEA DI

74、,DISP_MEM1 ;為了重?fù)軙r(shí)能顯示號(hào)碼</p><p>  LEA SI,DIE_OUT ;清屏</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  MOV DIAL_FLAG,00H ;撥號(hào)位數(shù)存儲(chǔ)標(biāo)識(shí)</p>&l

75、t;p>  LD0: MOV CX,20 ;延時(shí)5秒不按任何按鍵推出,有任何按鍵按下都要重新賦值</p><p>  LD: CALL KEY_SCAN </p><p>  CMP KEY_S_FLAG,01H</p><p>  JNE LD1 ;沒有按鍵按下,跳到循環(huán)10次程序<

76、/p><p>  MOV AL,KEY_FLAG</p><p>  CMP KEY_FLAG,0BH ;判斷是否為掛機(jī)鍵</p><p><b>  JE OVER_D</b></p><p>  CMP KEY_FLAG,0AH ;判斷是否為接聽鍵</p><p>  JE

77、 JUDGE_6 ;判斷是否為6位數(shù) </p><p>  CMP KEY_FLAG,0AH</p><p>  JL NUM_D ;為數(shù)字</p><p>  LD1: CALL DELAY_05S ;延時(shí)0.5s</p><p><b>  LOOP L

78、D</b></p><p>  JMP OVER_D</p><p>  JUDGE_6:CMP DIAL_FLAG,6</p><p>  JNE ERROR_D ;顯示錯(cuò)誤信息</p><p>  CALL SUB_DIAL ;撥號(hào)子程序</p><p>  ;-

79、---------------------------------------------顯示所撥號(hào)碼,掛機(jī)鍵反回主程序</p><p>  LEA SI,DISP_MEM1</p><p>  LEA DI,DISP_MEM</p><p><b>  MOV CX,6</b></p><p>  LD2: MO

80、V AL,[SI]</p><p>  MOV [DI],AL</p><p><b>  INC SI</b></p><p><b>  INC DI</b></p><p><b>  LOOP LD2 </b></p><p><b>

81、  CALL DISP</b></p><p>  LD3: CALL KEY_SCAN</p><p>  CMP KEY_S_FLAG,01H</p><p><b>  JNE LD3</b></p><p>  CMP KEY_FLAG,0BH</p><p><b

82、>  JE OVER_D</b></p><p>  CMP KEY_FLAG,0AH</p><p>  JE JUDGE_6</p><p>  JMP LD3 </p><p>  ;-----------------------------------------------------------

83、 </p><p>  ERROR_D: LEA SI,ERROR</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p><b>  MOV CX,20</b></p><p>  ERROR_D1:CALL DELAY_05S

84、 ;顯示錯(cuò)誤信息時(shí)間</p><p>  LOOP ERROR_D1</p><p>  JMP OVER_D</p><p>  NUM_D: LEA SI,DISP_MEM</p><p>  INC DIAL_FLAG ;撥號(hào)位數(shù)+1</p><p>  LEA BX,DISP_TAB&l

85、t;/p><p>  MOV AL,KEY_FLAG</p><p>  XLAT ;所撥號(hào)碼譯碼</p><p>  MOV [SI],AL</p><p>  MOV [DI+5],AL</p><p>  CMP KEY_S_FLAG,01H</p><p>&

86、lt;b>  JNE LD </b></p><p>  CALL DISP </p><p><b>  DEC DI </b></p><p>  MOV AL,[SI+5] ;顯存數(shù)據(jù)左移一位 </p><p>  MOV [SI+6],AL</p><p>

87、;  MOV AL,[SI+4]</p><p>  MOV [SI+5],AL</p><p>  MOV AL,[SI+3]</p><p>  MOV [SI+4],AL</p><p>  MOV AL,[SI+2]</p><p>  MOV [SI+3],AL</p><p>  M

88、OV AL,[SI+1]</p><p>  MOV [SI+2],AL</p><p>  MOV AL,[SI]</p><p>  MOV [SI+1],AL</p><p>  JMP LD0 ;跳轉(zhuǎn)到鍵盤掃描程序</p><p>  OVER_D: POPA</p>

89、<p><b>  RET</b></p><p>  DIAL_P ENDP</p><p>  SUB_DIAL PROC NEAR ;撥號(hào)子程序</p><p><b>  PUSHA </b></p><p>  LS: CALL SWIT_SCAN</p&

90、gt;<p>  CMP SWIT_S_FLAG,01H</p><p>  JNE LS4 ;沒有按開關(guān)跳轉(zhuǎn)到循環(huán)</p><p>  CMP SWIT_FLAG,3 ;判斷是否占線</p><p>  JE DISP_B ;顯示占線信息</p><p>  LS4: CM

91、P KEY_FLAG,0AH</p><p><b>  JNE LS7</b></p><p>  LEA SI,NECTED ;顯示接通信息</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  CALL INITIA

92、L_8255</p><p>  LS7: MOV CX,30 ;調(diào)試完后改為30</p><p>  LS3: CALL SWIT_SCAN</p><p>  CMP SWIT_S_FLAG,01H</p><p><b>  JNE LS5</b></p><p

93、>  CMP SWIT_FLAG,4 ;等于表示接通</p><p>  JE INI_L_8254 ;初始LED,8254(顯示000000)</p><p>  CMP SWIT_FLAG,5</p><p>  JE HANGUP_MES ;顯示掛斷信息</p><p>  LS5: ;---------

94、---------------------------------------------------連接過程中可以掛機(jī)</p><p>  CALL KEY_SCAN </p><p>  CMP KEY_S_FLAG,01H</p><p>  JNE LS8 ;沒有按鍵按下,跳到循環(huán)10次程序</p><p>  

95、MOV AL,KEY_FLAG </p><p>  CMP KEY_FLAG,0BH ;判斷是否為掛機(jī)鍵</p><p>  JE SUB_D_OVER </p><p>  ;---------------------------------------------------------------</p><p>  LS8:

96、 MOV DX,203H</p><p>  MOV AL,0FEH</p><p><b>  OUT DX,AL</b></p><p>  CALL DELAY_05S</p><p><b>  LOOP LS3</b></p><p>  LEA SI,NOAN

97、S ;顯示無(wú)人接聽信息</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  MOV ECX,0FFFFFH</p><p>  WT1: LOOPD WT1</p><p><b>  ;顯示0.5s&l

98、t;/b></p><p>  JMP SUB_D_OVER ;返回</p><p>  HANGUP_MES:LEA SI,HANGUP</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  MOV ECX,0FFFFFH

99、</p><p>  WT4: LOOPD WT4</p><p>  JMP SUB_D_OVER ;跳轉(zhuǎn)到子程序結(jié)束</p><p>  INI_L_8254:CALL INITIAL_LED00 ;初始化led讓其顯示6個(gè)0</p><p>  CALL INITIAL_8254

100、 ;8254裝入初值1s </p><p>  STI ;開中斷</p><p>  LS0: CALL KEY_SCAN</p><p>  MOV DX,203H</p><p>  MOV AL,0FEH</p><p><b> 

101、 OUT DX,AL</b></p><p>  CMP KEY_FLAG,11</p><p>  JNE LS0 ;不掛斷繼續(xù)掃描鍵盤</p><p>  CLI ;按下掛機(jī)鍵關(guān)中斷</p><p>  LEA SI,DIE_OUT</p&g

102、t;<p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE ;LED熄滅</p><p>  CALL DELAY_05S</p><p>  JMP SUB_D_OVER </p><p>  DISP_B:MOV CX,10</p><p> 

103、 LEA SI,BUSY</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE ;顯示占線BUSY</p><p>  LS1: CALL KEY_SCAN</p><p>  CMP KEY_S_FLAG,01H</p><p><

104、b>  JNE LS6</b></p><p>  CMP KEY_FLAG,0AH</p><p>  JE DIAL_CONT ;繼續(xù)撥號(hào),顯示號(hào)碼跳轉(zhuǎn)</p><p>  CMP KEY_FLAG,0BH</p><p>  JE SUB_D_OVER</p><p>

105、;  LS6: CALL DELAY_05S</p><p><b>  LOOP LS1</b></p><p>  LEA SI,AUTOHP</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE ;顯示自動(dòng)關(guān)斷信息</p>

106、<p>  MOV ECX,0FFFFFH</p><p>  WT2: LOOPD WT2</p><p>  JMP SUB_D_OVER</p><p>  DIAL_CONT: LEA SI,DISP_MEM</p><p>  LEA DI,DISP_MEM1</p><p><

107、;b>  MOV CX,6</b></p><p>  DIAL_CONT1:MOV AL,[DI]</p><p>  MOV [SI],AL</p><p><b>  INC DI</b></p><p><b>  INC SI</b></p><p&g

108、t;  LOOP DIAL_CONT1</p><p><b>  CALL DISP</b></p><p>  MOV ECX,0FFFFFH</p><p>  WT3: LOOPD WT3</p><p>  MOV SWIT_FLAG,00H </p><p>&l

109、t;b>  JMP LS</b></p><p>  SUB_D_OVER:MOV KEY_FLAG,00H</p><p>  MOV SWIT_FLAG,00H </p><p><b>  ;清標(biāo)志</b></p><p><b>  POPA</b></p>

110、<p><b>  RET</b></p><p>  SUB_DIAL ENDP</p><p>  ;-----------------------</p><p>  ;-----------------------來(lái)電模塊</p><p>  ANSW PROC NEAR</p><

111、p><b>  PUSHA</b></p><p>  CALL SWIT_SCAN</p><p>  LEA SI,DISP_NUM ;指向18位號(hào)碼顯存地址</p><p>  LEA DI,NUM1</p><p>  LEA BX,DISP_TAB</p><p&

112、gt;  LEA BP,DISP_MEM</p><p>  CMP SWIT_FLAG,0</p><p><b>  JE A_NUM</b></p><p>  CMP SWIT_FLAG,1</p><p><b>  JE A_NUM</b></p><p> 

113、 A_NUM:;--------------------</p><p>  INC CMP_FLAG_N_P</p><p>  CMP CMP_FLAG_N_P,04H</p><p><b>  JL L_A</b></p><p>  MOV CMP_FLAG_N_P,03H</p><

114、p>  LEA SI,DISP_NUM</p><p>  ADD SI,12H</p><p>  ;--------------------</p><p>  L_A: MOV AL,SWIT_FLAG</p><p>  MUL MUL_NUM </p><p>  ADD

115、 DI,AX ;AX里裝的地址間隔</p><p>  DEC CMP_FLAG_N_P ;裝入內(nèi)存地址的首地址</p><p>  MOV AL,CMP_FLAG_N_P </p><p>  MUL MUL_NUM</p><p>  INC CMP_FLAG_N_P

116、 ;還原內(nèi)存地址的首地址</p><p>  ;---------------------</p><p><b>  ADD SI,AX</b></p><p><b>  MOV CX,6</b></p><p>  LAN: MOV AL,[DI]

117、 ;將號(hào)碼存入18位內(nèi)存</p><p>  MOV [SI],AL ;將si里的數(shù)查表存入顯存</p><p><b>  XLAT</b></p><p>  MOV [BP],AL ;存入顯存</p><p><b>  INC BP&l

118、t;/b></p><p><b>  INC SI</b></p><p><b>  INC DI</b></p><p><b>  LOOP LAN</b></p><p>  CALL DISP ;調(diào)用顯示程序</p&

119、gt;<p>  ;------------------------ </p><p>  MOV CX,10H</p><p>  CALL INITIAL_8255</p><p>  LAN1: MOV DX,203H</p><p>  MOV AL,0FEH</p><p>  OU

120、T DX,AL ;A口最低位輸出低電平,燈亮 </p><p>  CALL KEY_SCAN</p><p>  ;-----------------------------------------------燈亮</p><p>  MOV DX,203H</p><p>  MOV A

121、L,0FEH</p><p><b>  OUT DX,AL</b></p><p>  ;-------------------------------------------------</p><p>  CMP KEY_S_FLAG,01H</p><p><b>  JNE LAN11</b&g

122、t;</p><p>  CMP KEY_FLAG,10</p><p>  JE SUB_ANSW ;跳轉(zhuǎn)到應(yīng)答分支</p><p>  CMP KEY_FLAG,11</p><p>  JE SUB_HANGUP ;跳轉(zhuǎn)到</p><p>  LAN

123、11: CALL DELAY_051S</p><p>  MOV DX,203H</p><p>  MOV AL,0FFH ;燈滅</p><p><b>  OUT DX,AL</b></p><p>  CALL DELAY_051S</p><p>

124、<b>  LOOP LAN1</b></p><p>  JMP SUB_NOANSW</p><p><b>  SUB_ANSW:</b></p><p>  CALL INITIAL_8259</p><p>  CALL INITIAL_LED00;led顯示6個(gè)0</p>

125、<p>  CALL INITIAL_8254</p><p><b>  STI</b></p><p>  LAN3: CALL KEY_SCAN</p><p>  CMP KEY_FLAG,11</p><p>  JNE LAN3 </p><p>  CLI

126、 ;關(guān)中斷</p><p>  SUB_NOANSW:</p><p>  LEA SI,DIE_OUT</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  CALL DELAY_051S</p>

127、<p>  JMP ANS_END</p><p>  SUB_HANGUP:</p><p>  LEA SI,HANGUP</p><p>  MOV SI_ADDR,SI</p><p>  CALL DISP_CODE</p><p>  CALL DELAY_051S</p>&l

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論