版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 本設(shè)計(jì)主要采用元器件有8253計(jì)數(shù)器、8088CPU、8255A接口芯片、74LS138譯碼器、6位七段LED數(shù)碼管以及8*2鍵盤(pán),此可調(diào)計(jì)時(shí)器用6位七段LED數(shù)碼管可顯示時(shí)、分、秒,并按正常時(shí)間顯示方式工作。如果顯示有誤差可以通過(guò)鍵盤(pán)上的按鍵分別對(duì)數(shù)顯時(shí)、分、秒這行調(diào)節(jié)校準(zhǔn),并且可以根據(jù)實(shí)際情況進(jìn)行清零復(fù)位。</p&g
2、t;<p> 關(guān)鍵詞:硬件電路,軟件電路,計(jì)時(shí)器</p><p><b> 目 錄</b></p><p> 一、概述……………………………………………………………………………………… 3</p><p> 二、硬件電路設(shè)計(jì)…………………………………………………………………………… 4</p><p&g
3、t; 2.1構(gòu)建簡(jiǎn)單微機(jī)系統(tǒng)的思路……………………………………………………… 4</p><p> 2.2確定組成各部件的芯片…………………………………………………………… 5</p><p> 2.3.存儲(chǔ)器芯片,接口芯片與系統(tǒng)總線的連接……………………………………… 5</p><p> 2.4接口芯片與外圍設(shè)備的連接…………………………………………
4、…………… 5</p><p> 2.5 8255A芯片基本資料……………………………………………………………… 7</p><p> 2.6 8253計(jì)數(shù)器工作原理…………………………………………………………… 10</p><p> 2.7 8088 CPU 的引腳功能…………………………………………………………… 13</p><p&
5、gt; 2.8 74LS138工作方式…………………………………………………………………15</p><p> 2.9顯示電路的連接……………………………………………………………………16</p><p> 2.10 LED顯示器的工作方式………………………………………………………… 17</p><p> 2.11硬件接線圖…………………………………………
6、…………………………… 19</p><p> 三、軟件設(shè)計(jì)框圖……………………………………………………………………………20</p><p> 四、源程序……………………………………………………………………………………21</p><p> 課程設(shè)計(jì)體會(huì)……………………………………………………………………………… 33</p><p>
7、; 附錄1 ……………………………………………………………………………………… 34</p><p> 附錄2 ……………………………………………………………………………………… 35</p><p> 參考文獻(xiàn)…………………………………………………………………………………… 36</p><p><b> 可調(diào)計(jì)時(shí)器設(shè)計(jì)</b><
8、;/p><p><b> 一、概述</b></p><p> 課程設(shè)計(jì)是培養(yǎng)和鍛煉學(xué)生在學(xué)習(xí)完本門課后綜合應(yīng)用所學(xué)理論知識(shí),解決實(shí)際工程設(shè)計(jì)和應(yīng)用問(wèn)題的能力的重要教學(xué)環(huán)節(jié)。它具有動(dòng)手、動(dòng)腦和理論聯(lián)系實(shí)際的特點(diǎn),是培養(yǎng)在校工科大學(xué)生理論聯(lián)系實(shí)際、敢于動(dòng)手、善于動(dòng)手和獨(dú)立自主解決設(shè)計(jì)實(shí)踐中遇到的各種問(wèn)題能力的一個(gè)重要環(huán)節(jié)。</p><p><
9、b> 設(shè)計(jì)的目</b></p><p> 1)進(jìn)一步建立微機(jī)系統(tǒng)概念、加深對(duì)系統(tǒng)程序理解和認(rèn)識(shí),提高微機(jī)系統(tǒng)的應(yīng)用水平。</p><p> 2)進(jìn)一步學(xué)習(xí)和掌握匯編語(yǔ)言程序的編寫(xiě)和應(yīng)用的方法,通過(guò)較大規(guī)模程序的編寫(xiě),提高編寫(xiě)匯編語(yǔ)言的水平和學(xué)習(xí)程序調(diào)試方法。</p><p> 3)進(jìn)一步熟悉接口、熟悉鍵盤(pán)控制和七段數(shù)碼管及其他芯片的使用。&
10、lt;/p><p><b> 設(shè)計(jì)要求</b></p><p> 畫(huà)出8255A與鍵盤(pán)顯示器的鏈接圖;</p><p> 2)畫(huà)出程序框圖并編寫(xiě)程序完成如下功能:</p><p> 6位七段LED數(shù)碼管可顯示時(shí)、分、秒,并按正常時(shí)間顯示方法工作</p><p> 通過(guò)定義鍵盤(pán)的字母鍵,可對(duì)計(jì)
11、時(shí)器進(jìn)行調(diào)整。使A鍵進(jìn)入修改時(shí)鐘的狀態(tài);按B鍵可修改“秒”,秒位閃動(dòng),按數(shù)字鍵輸入;按C鍵可修改“分”,分位閃動(dòng),按數(shù)字鍵輸入;按D鍵可修改“時(shí)”,時(shí)位閃動(dòng),按數(shù)字鍵輸入;按E鍵退出修改時(shí)鐘狀態(tài);按F鍵清零復(fù)位。</p><p><b> 二、硬件電路設(shè)計(jì)</b></p><p> 2.1 構(gòu)建簡(jiǎn)單微機(jī)系統(tǒng)的思路</p><p> 微型
12、計(jì)算機(jī)由微處理器,存儲(chǔ)器,接口電路以及連接在這些部件上的總線組成。微處理器,存儲(chǔ)器和所有I\O設(shè)備之間的信息交換都通過(guò)總線進(jìn)行??偩€包括地址總線,數(shù)據(jù)總線和控制總線,他們始于CPU或終于CPU,現(xiàn)代微機(jī)大部分都是這種以總線為中心的結(jié)構(gòu)。8088CPU的地址\數(shù)據(jù)總線AD15-AD0和地址\狀態(tài)總線A16/S3-A19/S6是復(fù)用的,必須通過(guò)地址鎖存器把地址總線和數(shù)據(jù)總線分離??刂瓶偩€直接和8088CPU相連,這樣8088CPU就工作在最
13、小工作方式。</p><p> 微型計(jì)算機(jī)及外圍設(shè)備組成微型計(jì)算機(jī)系統(tǒng)的硬件,外圍設(shè)備必須通過(guò)接口電路才能與系統(tǒng)總線相連,因此構(gòu)建一個(gè)基于8088CPU的簡(jiǎn)單微型計(jì)算機(jī)系統(tǒng)就是工作于最小工作方式的8088CPU系統(tǒng)總線上掛上一定規(guī)模的存儲(chǔ)器和接口電路,然后在把合適的外圍設(shè)備連接到接口電路上。一個(gè)基于8088CPU的簡(jiǎn)單微型計(jì)算機(jī)系統(tǒng)框圖如圖所示。圖中鍵盤(pán)與顯示器作為外圍設(shè)備通過(guò)接口芯片與系統(tǒng)總線相連。</
14、p><p> 2.2確定組成各部件的芯片</p><p> 選擇芯片的原則是:要求芯片性能/性價(jià)比較高,市場(chǎng)可以買到。</p><p> 對(duì)于小型的微型計(jì)算機(jī)系統(tǒng),程序存儲(chǔ)器一般用EPROM,隨機(jī)存儲(chǔ)器一般采用SRAM。接口有簡(jiǎn)單接口(例如74LS244,74LS273)和可編程接口(例如8255A),根據(jù)需要選擇。</p><p> 2
15、.3.存儲(chǔ)器芯片,接口芯片與系統(tǒng)總線的連接</p><p> 存儲(chǔ)器芯片,接口芯片與系統(tǒng)總線的連接就是如何把存儲(chǔ)器芯片和接口芯片掛到系統(tǒng)的三類總線上。</p><p> 存儲(chǔ)器芯片和接口芯片與數(shù)據(jù)總線的連接比較簡(jiǎn)單,因?yàn)槭呛?jiǎn)單系統(tǒng),對(duì)數(shù)據(jù)總線的負(fù)載能力沒(méi)有特別的要求,所以只要把存儲(chǔ)器芯片和接口芯片的數(shù)據(jù)引腳與數(shù)據(jù)總線相應(yīng)各位作并聯(lián)就可以。</p><p> 連
16、接到芯片上的控制總線不多,常用的有IO/M.RD.WR.RESET等信號(hào),這些信號(hào)線也都是與各芯片的有關(guān)引腳做并聯(lián)連接。</p><p> 存儲(chǔ)器芯片,接口芯片與地址總線的連接原則上是一樣的:低地址線與存儲(chǔ)器芯片或接口芯片的地址引腳直接并聯(lián)連接,用來(lái)作為芯片內(nèi)部單元的選擇,高位地址線經(jīng)譯碼器譯碼后一般連接到芯片的片選端,作為芯片的選擇。一般高位地址線的低位部分作為譯碼器的譯碼輸入,高位部分則作為譯碼器譯碼的許可
17、條件。由于8088CPU的端口地址采用獨(dú)立編址方式,為了區(qū)分是存儲(chǔ)器芯片地址還是接口芯片地址,一定要把IO/M信號(hào)參與到芯片的片選端控制。</p><p> 2.4接口芯片與外圍設(shè)備的連接</p><p> 采用8255接口芯片作為8*2鍵盤(pán)與6位七段數(shù)碼管顯示器的接口。</p><p> ?。?)8255接口芯片與8*2鍵盤(pán)的連接 8*2鍵盤(pán)是一種行列式鍵盤(pán)
18、,如圖2.4.1所示。</p><p> 圖中有8行2列,8根行線與PA口相連,2根列線與PC口的PC7、PC6相連。按鍵設(shè)置在行、列交點(diǎn)處,行、列線分別連接到按鍵開(kāi)關(guān)的兩端。當(dāng)列線通過(guò)上拉電阻接+5V時(shí),就被鉗位在高電平狀態(tài)。鍵盤(pán)中有無(wú)按鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來(lái)判斷的。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有按鍵按下,總會(huì)有一根列線電平被拉置底電平,從而使列線
19、輸入不全為1。</p><p> 鍵盤(pán)中哪一個(gè)鍵按下是由行線逐行置低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為l,則所按下之鍵不在此行。如果不全為1,則所按下之鍵必在此行。而且是在與0電平行線相交的交點(diǎn)上的那個(gè)鍵。</p><p> 鍵盤(pán)的工作方式采用編程掃描工作方式,即通過(guò)調(diào)用鍵盤(pán)子程序來(lái)響應(yīng)鍵輸入的要求,在鍵盤(pán)掃描子程序中完成下述
20、功能:</p><p> 1)判斷鍵盤(pán)上有無(wú)鍵按下。其方法是先使PA7~PA0=O,然后讀PC7、PC6的狀態(tài),若為全l,則鍵盤(pán)中無(wú)鍵按下;若不全為1,則說(shuō)明鍵盤(pán)中有鍵按下。</p><p> 2)去除按鍵的機(jī)械抖動(dòng)影響。對(duì)于由機(jī)械觸點(diǎn)構(gòu)成的按鍵,由于機(jī)械觸點(diǎn)的彈性作用,觸點(diǎn)在閉合及斷開(kāi)瞬間有一個(gè)抖動(dòng)過(guò)程,一般為5~10ms時(shí)間。為了消除抖動(dòng)影響可作這樣處理:當(dāng)判斷有鍵按下后,軟件延時(shí)
21、一段時(shí)間再判斷鍵盤(pán)狀態(tài),如果仍為有鍵按下?tīng)顟B(tài),則認(rèn)為有一個(gè)確定的鍵按下,否則按鍵抖動(dòng)處理。</p><p> 3)求按下鍵的鍵值及鍵號(hào)。鍵盤(pán)上的縛個(gè)鍵都對(duì)應(yīng)一個(gè)鍵值。鍵值的組成:低8位為掃描該鍵時(shí)的行線輸出值(PA7~PA0),高8位為該鍵按下時(shí)的列線輸入值(PC7、PC6為有效位,其余位令其為1),因而圖示中各鍵值依次為7FFEH、7FFDH、7FFBH、7FF7H、7FEFH、7FDFH、7FBFH、7F7
22、FH、BFFEH、BFFDH、BFFBH、BFF7H、BFEFH、BFDFH、BFBFH、BF7FH。本例中鍵盤(pán)中鍵號(hào)排列沒(méi)有規(guī)律(見(jiàn)圖2.4.1),不能通過(guò)對(duì)鍵值直接運(yùn)算得到鍵號(hào)。因此必須先判斷按下鍵是使PC7=0還是PC6=0,然后再查為零的列線上鍵按下時(shí)其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵鍵值及鍵號(hào)的目的是使程序轉(zhuǎn)到相應(yīng)的地址去完成該鍵的操作。一般,對(duì)數(shù)字鍵就是直接將該號(hào)送到顯示緩沖區(qū)進(jìn)行顯示,對(duì)功能鍵則必須先
23、找到該功能鍵處理程序入口地址,并轉(zhuǎn)去執(zhí)行該鍵的命令。因此當(dāng)鍵號(hào)求到后,還必須找到功能鍵處理程序入口。</p><p> 4)為保證鍵閉合一次CPU僅進(jìn)行一次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號(hào)送累加器AH。</p><p> 鍵盤(pán)的工作方式還有定時(shí)掃描及中斷工作方式,前者是一種定時(shí)中斷,CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描,并在有鍵按下時(shí)轉(zhuǎn)入鍵功能處理程序。中斷工作方式只有在鍵盤(pán)按下
24、時(shí),才執(zhí)行鍵盤(pán)掃描,并執(zhí)行該鍵的功能程序。</p><p> (2)LED顯示器的工作方式LED顯示器有靜態(tài)和動(dòng)態(tài)兩種工作方式。</p><p> LED顯示器工作在靜態(tài)顯示方式下,共陰極或共陽(yáng)極連接在一起,然后接地或十5V;每位的段選線(A,B,…,G,H)與一個(gè)8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。</p><p
25、> 在多位LED顯示時(shí),為了簡(jiǎn)化電路,降低成本,將所有位的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即控制段選碼而共陰極點(diǎn)或共陽(yáng)極點(diǎn)分別由相應(yīng)的I/O線控制即控制位選碼,這就是動(dòng)態(tài)顯示。</p><p> 2.5 8255A芯片基本資料</p><p> 2.5.1 8255A內(nèi)部結(jié)構(gòu)如圖2.5.1所示</p><p> 圖2.5.1 8255A內(nèi)部
26、結(jié)構(gòu)</p><p> ?、?8255A3個(gè)8位數(shù)據(jù)接口,即接口A、接口B和接口C。使用者可以用軟件使它們分別作為輸入端口或輸出端口。</p><p> (1) 端口A:一個(gè)8位數(shù)據(jù)輸入鎖存器和一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器,用來(lái)傳送數(shù)據(jù)。數(shù)據(jù)輸入均被鎖存。</p><p> ?。?) 端口B:一個(gè)8位數(shù)據(jù)輸入緩沖器和一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器,用來(lái)傳送數(shù)據(jù)。
27、數(shù)據(jù)輸入時(shí)不被鎖存,數(shù)據(jù)輸出時(shí)被鎖存。</p><p> ?。?) 端口C:一個(gè)8位數(shù)據(jù)輸入緩沖器和一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器。用作輸入端口時(shí),數(shù)據(jù)不被鎖存;而作為輸出端口是,數(shù)據(jù)被鎖存。</p><p> ?、?A組控制和B組控制</p><p> 這兩組控制電路一方面接收芯片內(nèi)部總線上的控制字,一方面接收來(lái)自讀/寫(xiě)控制邏輯電路的讀/寫(xiě)命令,從而解決端口的工
28、作方式和讀/寫(xiě)操作。其中,A組控制電路控制端口A和端口C高4位(PC7-PC4)的工作方式和讀/寫(xiě)操作:而B(niǎo)組控制電路控制端口B和端口C低4位(PC3-PC0)工作方式和讀寫(xiě)操作。</p><p> ③ 讀/寫(xiě)控制邏輯電路</p><p> 讀/寫(xiě)控制邏輯電路負(fù)責(zé)管理8255A的數(shù)據(jù)傳輸過(guò)程。它接收來(lái)自系統(tǒng)總線的信號(hào)A1,A0和控制總線信號(hào)RESET、WR、RD,將這些信號(hào)組合后,得到
29、A組控制部件和B組控制部件的控制命令,并將命令發(fā)給這兩個(gè)部件,完成對(duì)數(shù)據(jù)、狀態(tài)信息的傳輸。</p><p><b> ④ 數(shù)據(jù)總線緩沖器</b></p><p> 這是個(gè)雙向三態(tài)8位數(shù)據(jù)緩沖器,8255A通過(guò)它與系統(tǒng)數(shù)據(jù)總線相連。輸入數(shù)據(jù)、輸出數(shù)據(jù)、CPU發(fā)給8255A的控制字都是通過(guò)這個(gè)緩沖器傳遞的。</p><p> 2.5.2 82
30、55的引腳信號(hào)</p><p> 圖2.5.2 8255的引腳信號(hào)如圖所示</p><p> 與外部設(shè)備端相連的引腳</p><p> (1) PA7-PA0:A端口的輸入/輸出引腳。</p><p> (2) PB7-PB0:B端口的輸入/輸出引腳。</p><p> ?。?) PC7-PC0:C端口的輸入/
31、輸出引腳。</p><p> ?、?與CPU相連的引腳</p><p> ?。?) RESET:復(fù)位信號(hào),低電平有效。當(dāng)RESET信號(hào)來(lái)到時(shí),所有內(nèi)部寄 存器都被清0,同時(shí)3個(gè)端口被自動(dòng)設(shè)為輸入端口。</p><p> ?。?) D7-D0:8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。</p><p> ?。?) CS:芯片選擇信號(hào)。只有當(dāng)
32、CS有效時(shí),讀出信號(hào)RD和寫(xiě)入信號(hào)WR才對(duì)8255A有效。</p><p> ?。?) RD:讀出信號(hào)。CPU通過(guò)IN指令使RD有效,將數(shù)據(jù)或狀態(tài)信息從8255A中讀到CPU。</p><p> ?。?) WR:寫(xiě)入信號(hào)。CPU通過(guò)OUT指令使WR有效,將數(shù)據(jù)或狀態(tài)信息從CPU中寫(xiě)道8255A.</p><p> ?。?) A1,A0:端口選擇信號(hào)。8255A內(nèi)
33、部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定A1,A0為00、01、10和11時(shí),分別選中端口A、端口B、端口C和控制端口。</p><p> 2.5.3 8255的控制字</p><p><b> ① 方式選擇控制字</b></p><p> ?。?) 方式選擇控制字把A、B、C三個(gè)端口分為A、B兩組來(lái)設(shè)定工作方式。A組包括端口A和端
34、口C的上半部,B組包括端口B和端口C的下半部。</p><p> (2) 端口A可工作于3種方式中的任何一種:端口B只能工作于方式0和方式1;而端口C除用作輸入、輸出口(方式0)外,通常用來(lái)配合端口A和端口B提供聯(lián)絡(luò)控制信號(hào)和狀態(tài)信號(hào)。</p><p> ?。?) 歸在同一組的兩個(gè)端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出。</p><p> ?、?端
35、口C按位置位/復(fù)位控制字</p><p> ?。?) 端口C按位置位/復(fù)位控制字盡管是對(duì)端口C進(jìn)行操作的,但此控制字必須寫(xiě)入控制口,而不寫(xiě)入端口C。</p><p> ?。?) 一個(gè)控制字只能完成端口C中某一位置的置1或置0,要對(duì)多位置1或置0,必須使用多個(gè)控制字。</p><p> 2.6 8253計(jì)數(shù)器工作原理</p><p> 82
36、53可編程計(jì)數(shù)器/定時(shí)器的工作頻率為0~2MHz,它有3個(gè)獨(dú)立編程的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器有三個(gè)引腳,分別為時(shí)鐘CLK、門控GATE、計(jì)數(shù)器和計(jì)時(shí)結(jié)束輸出OUT;每個(gè)計(jì)數(shù)器分別有6種工作方式。下面針對(duì)使用到的兩種工作方式——方式1和方式2的工作原理[1]進(jìn)行簡(jiǎn)述?! ?lt;/p><p> 方式1:可編程單穩(wěn),即由外部硬件產(chǎn)生的門控信號(hào)GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計(jì)數(shù)器裝入計(jì)數(shù)初值后,在門控信號(hào)GATE由低電平
37、變高電平并保持時(shí),計(jì)數(shù)器開(kāi)始計(jì)數(shù),此時(shí)輸出端變成低電平并開(kāi)始單穩(wěn)過(guò)程。當(dāng)計(jì)數(shù)結(jié)束時(shí),輸出端OUT轉(zhuǎn)變成高電平,單穩(wěn)過(guò)程結(jié)束,在OUT端輸出一個(gè)單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個(gè)同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計(jì)數(shù)器的計(jì)數(shù)初值決定。在WR信號(hào)的上升沿(CPU寫(xiě)控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫(xiě)入計(jì)數(shù)值后,計(jì)數(shù)器并不馬上開(kāi)始計(jì)數(shù),而要等到門控信號(hào)GATE啟動(dòng)之后的下一個(gè)CLK的下
38、降沿才開(kāi)始。在整個(gè)計(jì)數(shù)過(guò)程中,輸出端OUT保持低電平,直至計(jì)數(shù)值至0,OUT變?yōu)楦唠娖綖橹埂! ?lt;/p><p> 方式2:速率發(fā)生器,其功能如同一個(gè)N分頻計(jì)數(shù)器。其輸出是將輸入時(shí)鐘按照N計(jì)數(shù)值分頻后得到的一個(gè)連續(xù)脈沖。在該方式下,當(dāng)計(jì)數(shù)器裝入初始值開(kāi)始工作后,輸出端OUT將不斷地輸出負(fù)脈沖,其寬度為一個(gè)時(shí)鐘周期的時(shí)間,而兩個(gè)負(fù)脈沖間的時(shí)間脈沖個(gè)數(shù)等于計(jì)數(shù)器裝入的計(jì)數(shù)初值。若計(jì)數(shù)初值為N,則每N個(gè)輸入脈沖輸出一
39、個(gè)脈沖。當(dāng)CPU寫(xiě)完控制字后,輸出端OUT轉(zhuǎn)變成高電平,計(jì)數(shù)器將立即自動(dòng)開(kāi)始對(duì)輸入CLK時(shí)鐘計(jì)數(shù)。在計(jì)數(shù)過(guò)程中,OUT端始終保持高電平,直至計(jì)數(shù)器的計(jì)數(shù)值減到1時(shí),OUT端才變?yōu)榈碗娖?,其保持的寬度為一個(gè)輸入CLK時(shí)鐘周期的時(shí)間,然后輸出端OUT恢復(fù)高電平,計(jì)數(shù)器重新開(kāi)始計(jì)數(shù)。</p><p> 8253控制字格式為:</p><p> 其中:SC1 SC0為計(jì)數(shù)器選擇位;RL1 RL
40、0為計(jì)數(shù)器讀寫(xiě)操作選擇位,以確定計(jì)數(shù)器進(jìn)行裝入或讀出是單字節(jié)還是雙字節(jié);M2 M1 M0為計(jì)數(shù)器工作方式選擇位;BCD表示計(jì)數(shù)器計(jì)數(shù)方式選擇位。</p><p> 8253的內(nèi)部結(jié)構(gòu)框圖如圖2.6.1所示;引腳如圖2.6.2所示。</p><p> 圖2.6.1 圖2.6.2</p><p> 82
41、53內(nèi)部可分為6個(gè)模塊,每個(gè)模塊的功能如下:</p><p> 1. 數(shù)據(jù)總線緩沖器及數(shù)據(jù)總線D0~D7</p><p> 這是8253與CPU數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,是8253內(nèi)部總線與CPU系統(tǒng)的8位數(shù)據(jù)總線之間的接口。CPU通過(guò)它寫(xiě)方式控制字到控制字寄存器,寫(xiě)計(jì)數(shù)初值到計(jì)數(shù)通道,讀取計(jì)數(shù)通道的當(dāng)前計(jì)數(shù)值。即數(shù)據(jù)總線緩沖器有三個(gè)基本功能:通過(guò)編程向8253寫(xiě)入確定8253
42、工作方式的命令;向計(jì)數(shù)寄存器裝入計(jì)數(shù)初值;讀出當(dāng)前計(jì)數(shù)值。</p><p> 2. 讀/寫(xiě)控制邏輯及控制引腳</p><p> 這是8253內(nèi)部操作的控制部分,按照CPU發(fā)來(lái)的讀寫(xiě)信號(hào)及地址信號(hào)來(lái)控制對(duì)各個(gè)計(jì)數(shù)器的讀寫(xiě),以及對(duì)控制寄存器的寫(xiě)入。當(dāng)片選信號(hào)為高電平時(shí),數(shù)據(jù)總線緩沖器處于高阻狀態(tài)。當(dāng)片選信號(hào)有效時(shí)(低電平),CPU可以對(duì)8253某端口進(jìn)行讀/寫(xiě)操作。8253內(nèi)部有3個(gè)獨(dú)立的
43、計(jì)數(shù)通道和1個(gè)控制字寄存器共4個(gè)端口,由A1和A0加以選擇,但對(duì)控制字寄存器僅能進(jìn)行寫(xiě)操作。各個(gè)端口的讀/寫(xiě)操作的選擇見(jiàn)表10. 1。 注意點(diǎn)是控制寄存器只能寫(xiě)入不能讀出。 </p><p><b> 3. 控制字寄存器</b></p><p> 在初始化編程時(shí),CPU寫(xiě)入方式控制字到控制字寄存器中,用以選擇計(jì)數(shù)通道及其相應(yīng)的工作方式。</p>&l
44、t;p> 4. 計(jì)數(shù)通道0、計(jì)數(shù)通道1、計(jì)數(shù)通道2</p><p> 3個(gè)計(jì)數(shù)通道內(nèi)部結(jié)構(gòu)完全相同。每個(gè)計(jì)數(shù)通道都由一個(gè)16位計(jì)數(shù)初值寄存器、一個(gè)16位減法計(jì)數(shù)器和一個(gè)16位計(jì)數(shù)值鎖存器組成。</p><p> 3個(gè)計(jì)數(shù)通道操作完全獨(dú)立。初始化編程時(shí),雖然3個(gè)計(jì)數(shù)通道共用一個(gè)控制字寄存器端口地址,但CPU可以分別寫(xiě)3個(gè)方式控制字到控制字寄存器,分別選擇各計(jì)數(shù)通道的工作方式。在寫(xiě)
45、計(jì)數(shù)初值到計(jì)數(shù)通道或CPU讀取計(jì)數(shù)通道到當(dāng)前計(jì)數(shù)值時(shí),各計(jì)數(shù)通道都有各自的端口地址。3個(gè)計(jì)數(shù)通道功能完全相同。在設(shè)定了計(jì)數(shù)通道的工作方式后,接著可向該計(jì)數(shù)通道裝入計(jì)數(shù)初值,該計(jì)數(shù)初值先送到計(jì)數(shù)初值寄存器保存,在GATE引腳為高電平時(shí)(方式0、2、3、4)或在GATE上升沿觸發(fā)下(方式1、2、3、5),計(jì)數(shù)初值寄存器中的值自動(dòng)裝入到減法計(jì)數(shù)器中。并啟動(dòng)計(jì)數(shù)器計(jì)數(shù),減法計(jì)數(shù)器對(duì)CLK時(shí)鐘脈沖的下降沿進(jìn)行減1計(jì)數(shù)(方式3不是減1計(jì)數(shù)),并把結(jié)
46、果送入計(jì)數(shù)值鎖存器中。當(dāng)減1計(jì)數(shù)器減到0時(shí),輸出OUT信號(hào),一次計(jì)數(shù)結(jié)束。計(jì)數(shù)初值寄存器的內(nèi)容,在計(jì)數(shù)過(guò)程中保持不變。CPU讀取計(jì)數(shù)通道當(dāng)前計(jì)數(shù)值,實(shí)際上讀取的是16位計(jì)數(shù)值鎖存器的內(nèi)容。在計(jì)數(shù)通道用作定時(shí)器時(shí),可在該通道CLK端輸入一個(gè)頻率精確已知的時(shí)鐘脈沖,根據(jù)定時(shí)時(shí)間和公式:計(jì)數(shù)初值=定時(shí)時(shí)間÷時(shí)鐘周期,計(jì)算出計(jì)數(shù)初值(也稱時(shí)間常數(shù))。在計(jì)數(shù)通道用作計(jì)數(shù)器時(shí),被計(jì)數(shù)的事件應(yīng)以脈沖方式</p><p&g
47、t; 2.7 8088 CPU 的引腳功能</p><p> 8088 微處理器是一種準(zhǔn)16 位機(jī),其內(nèi)部結(jié)構(gòu)基本上與8086 相同,其引腳信號(hào)也與8086 基本相同,只有如下引腳的功能有所不同。</p><p> (1) 8088 有8 根外部數(shù)據(jù)引腳而不是8086 的16 根,即AD7~AD0,A15~A8 為單一的地址線。這就導(dǎo)致對(duì)一個(gè)16 位數(shù)的存儲(chǔ)器讀寫(xiě),總是需要二個(gè)總線周
48、期才能完成。 </p><p> (2) 8088 的第28 引腳存儲(chǔ)器/IO 控制信號(hào)為M/IO ,即該信號(hào)為高電平時(shí),是IO 端口訪問(wèn);為低電平時(shí),是存儲(chǔ)器訪問(wèn)。而8086 為M/IO 剛好相反。 </p><p> (3) 8088 與8086 的第34 引腳不同,8088 中只能進(jìn)行8 位傳輸,所以BHE 信號(hào)就用不著了,改為SS0,SS0等效于S0,與M/IO 、DT/R 組
49、合決定最小模式下的總線操作,具體如表2.7.1所示,在最大模式下,該腳總為高電平。8088 CPU 的引腳如圖2.7.1 所示。 </p><p> 表2.7.1 SS0、M/IO 與DT/ R的組合及其含義</p><p> 圖2.7.1 8088CPU 的引腳圖</p><p> 當(dāng)把8088的MN/MX引腳接到+5V時(shí),8088CPU工作于最小工作方式。
50、所謂最小工作方式,就是系統(tǒng)中只有一個(gè)微處理器8088。在這種系統(tǒng)中所有的總線控制信號(hào)都直接由8088產(chǎn)生,系統(tǒng)中總線控制邏輯電路被</p><p> 減小到最小,這種方式適合于較小規(guī)模的應(yīng)用。最小方式下,24-31引腳功能:</p><p> (1)INTA中斷響應(yīng)信號(hào)(輸出,低電平有效)INTA是CPU對(duì)外設(shè)的中斷請(qǐng)求的回答信號(hào)。對(duì)于8088來(lái)說(shuō),INTA信號(hào)實(shí)際是位于連續(xù)周期中的兩
51、個(gè)負(fù)脈沖,在每個(gè)中斷響應(yīng)周期的T2、T3和TW狀態(tài),INTA為低電平。第一個(gè)負(fù)脈沖通知外圍設(shè)備的接口,它發(fā)出的中斷請(qǐng)求已經(jīng)得到允許;外設(shè)接口收到第二個(gè)負(fù)脈沖后,將中斷類型碼送往數(shù)據(jù)總線。</p><p> ?。?)ALE地址鎖存允許信號(hào)(輸出,高電平有效)ALE是CPU在每個(gè)總線周期的T1狀態(tài)發(fā)出的,其有效電平表示當(dāng)前在地址/數(shù)據(jù)復(fù)用線上輸出的是地址信息,利用它的下降沿把地址信號(hào)和BHE信號(hào)鎖存在74LS373地
52、址鎖存器中。ALE不能被浮置。</p><p> ?。?)DEN數(shù)據(jù)允許信號(hào)(輸出,低電平有效,三態(tài))DEN有效表示CPU準(zhǔn)備好接受和發(fā)送數(shù)據(jù),是CPU提供雙向數(shù)據(jù)收發(fā)器74LS245的選通信號(hào),在每個(gè)訪問(wèn)存儲(chǔ)器或訪問(wèn)I/O周期,或中斷相應(yīng)周期均有效。在DMA下,被浮置為高阻態(tài)。</p><p> (4)DT/R數(shù)據(jù)收發(fā)信號(hào)(輸出,三態(tài))在系統(tǒng)使用雙向收發(fā)器74LS245時(shí),用其控制數(shù)據(jù)
53、的傳送方向。如果DT/R為高電平,則進(jìn)行數(shù)據(jù)發(fā)送,如果DT/R為低電平,則進(jìn)行數(shù)據(jù)接收.在DMA下,被浮置為高阻態(tài)。</p><p> ?。?)M/IO存儲(chǔ)器/IO控制信號(hào)(輸出,三態(tài))用于區(qū)分是訪問(wèn)存儲(chǔ)器(低電平),還是訪問(wèn)I/O(高電平),通常M/IO被接至存儲(chǔ)器或接口芯片的片選CS端。當(dāng)DMA時(shí),被浮置為高阻態(tài)。</p><p> (6)WR寫(xiě)信號(hào)(輸出,低電平有效,三態(tài))WR有效
54、時(shí),表示CPU正在執(zhí)行存儲(chǔ)器或訪問(wèn)存儲(chǔ)器。在任何寫(xiě)周期,WR只在T2、T3、TW有效,在DMA時(shí),WR被浮置為高阻態(tài)。</p><p> ?。?)HOLD總線保持請(qǐng)求信號(hào)(輸入,高電平有效)它是系統(tǒng)中的其他總線主控部件向CPU發(fā)出的請(qǐng)求占用總線的申請(qǐng)信號(hào)。</p><p> ?。?)HLDA總線保持響應(yīng)信號(hào)(輸出,高電平有效)它是CPU對(duì)系統(tǒng)中其他總線主控部件向其請(qǐng)求總線使用權(quán)的響應(yīng)信號(hào)。
55、</p><p> 2.8 74LS138工作方式</p><p> 74HC138:74LS138 為3 線8 位譯碼器,共有 54/74S138和 54/74LS138 兩種線路結(jié)構(gòu)型式,其74LS138工作原理如下: </p><p> 當(dāng)一個(gè)選通端(G1)為高電平,另兩個(gè)選通端(/(G2A)和/(G2B))為低電平時(shí),可將地址端(A、B、C)的二進(jìn)制編
56、碼在一個(gè)對(duì)應(yīng)的輸出端以低電平譯出。 </p><p> 74LS138的作用:</p><p> 利用 G1、/(G2A)和/(G2B)可級(jí)聯(lián)擴(kuò)展成 24 線譯碼器;若外接一個(gè)反相器還可級(jí)聯(lián)擴(kuò)展成 32 線譯碼器。 若將選通端中的一個(gè)作為數(shù)據(jù)輸入端時(shí),74LS138還可作數(shù)據(jù)分配器</p><p><b> 圖2.8.1</b>
57、</p><p> 用與非門組成的3線8位譯碼器74LS138</p><p> 圖2.8.2 74ls138譯碼器內(nèi)部電路</p><p> 71LS138有三個(gè)附加的控制端、和。當(dāng)、時(shí),輸出為高電平(S=1),譯碼器處于工作狀態(tài)。否則,譯碼器被禁止,所有的輸出端被封鎖在高電平,如表3.3.5所示。這三個(gè)控制端也叫做“片選”輸入端,利用片選的作用可以將多篇連
58、接起來(lái)以擴(kuò)展譯碼器的功能。</p><p> 2.9顯示電路的連接</p><p> 顯示電路的連接如下圖:</p><p> 在程序內(nèi)設(shè)置8255的控制字D2-D1位分別為00,使B端口工作在方式0作為輸出端,PB0-PB7分別對(duì)應(yīng)連接數(shù)碼管的A-DP。</p><p> 七段發(fā)光二極管為陽(yáng)極LED器件。要讓A段點(diǎn)亮,要求PB0輸出
59、高電平“1”;要使B段熄滅,要求從PB1輸出低電平“0”。其余各段以此類推。要使LED上顯示0-9十個(gè)數(shù)字,需要按照如下段碼表來(lái)驅(qū)動(dòng)數(shù)碼管的七段LED。</p><p> 2.10 LED顯示器的工作方式</p><p> LED數(shù)碼管是目前最常用的數(shù)字顯示器,圖A、B為共陰管和共陽(yáng)管的電路,圖C為兩種不同出線形式的引出腳功能圖。</p><p> 一個(gè)LED
60、數(shù)碼管可用來(lái)顯示一位0~9十進(jìn)制數(shù)和一個(gè)小數(shù)點(diǎn)。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為2~2.5V,每個(gè)發(fā)光二極管的點(diǎn)亮電流在5~10mA。LED數(shù)碼管要顯示BCD碼所表示的十進(jìn)制數(shù)字就需要有一個(gè)專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當(dāng)?shù)尿?qū)動(dòng)能力。</p><p> 圖A 共陰連接(“1”電平驅(qū)動(dòng))
61、 圖B 共陽(yáng)連接(“0”電平驅(qū)動(dòng))</p><p> 圖C LED數(shù)碼管符號(hào)及引腳功能圖</p><p> LED顯示器有靜態(tài)和動(dòng)態(tài)兩種工作方式</p><p> LED顯示器工作在靜態(tài)顯示方式下,共陰極或共陽(yáng)極連接在一起,然后接地或+5V;每位的段選線(A,B,…,G,H)與一個(gè)8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應(yīng)
62、的顯示字符。</p><p> 在多位LED顯示時(shí),為了化簡(jiǎn)電路,降低成本,將所有位的斷選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即控制段選碼而共陰極或共陽(yáng)極點(diǎn)分別由相應(yīng)的I/O線控制即控制位選碼,這就是動(dòng)態(tài)顯示。</p><p> 4位LED動(dòng)態(tài)顯示電路只需一個(gè)8位I/O口及一個(gè)4位I/O口,其中8個(gè)I/O控制段選碼,4位I/O控制位選。進(jìn)行4位字符顯示時(shí),采用掃描顯示方式,即在每一
63、瞬間只使某一位顯示相應(yīng)字符,在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平,共陽(yáng)極送高電平),以保證該位顯示相應(yīng)字符。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延遲一段時(shí)間(1~5ms),以造成視覺(jué)暫留效果。不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺(jué)穩(wěn)定的顯示狀態(tài)。</p><p> 2.11硬件接線連接圖</p><p>&l
64、t;b> 見(jiàn)附錄1附錄2</b></p><p><b> 三、軟件設(shè)計(jì)框圖</b></p><p> 當(dāng)按下啟動(dòng)按鈕,程序開(kāi)始運(yùn)行,8255A進(jìn)行初始化,并送入1秒的時(shí)間常數(shù)。程序運(yùn)行時(shí)首先會(huì)判斷是否有壓鍵操作,如果沒(méi)有壓鍵操作,則重復(fù)顯示掃描和判斷操作。若有壓鍵操作,程序會(huì)繼續(xù)判斷次壓鍵是否是功能鍵,如果不是再繼續(xù)判斷是否是A鍵標(biāo)志;如果是
65、這執(zhí)行“根據(jù)A,B,C,D,E,F鍵設(shè)標(biāo)志”操作,執(zhí)行完后,會(huì)執(zhí)行詢問(wèn)是否放鍵的操作,放鍵則繼續(xù)執(zhí)行有無(wú)壓鍵判斷,如果不放鍵,則跳轉(zhuǎn)至顯示掃描操作。</p><p> 在上述判斷過(guò)程中如果壓鍵不是功能鍵,則會(huì)判斷該壓鍵是否是A鍵標(biāo)志。如果不是則跳轉(zhuǎn)至判斷有無(wú)壓鍵的操作中,如果是A鍵標(biāo)志,程序會(huì)繼續(xù)判斷是否是B鍵標(biāo)志。如果是B鍵標(biāo)志則修改秒位時(shí)間,如果不是則判斷它是否是C鍵標(biāo)志。如果是C鍵標(biāo)志,則修改分位時(shí)間,如
66、果不是就會(huì)就緒判斷是否是D交標(biāo)志。如果是D鍵標(biāo)志,則修改時(shí)位時(shí)間,如果不是則繼續(xù)執(zhí)行判斷是否是E鍵標(biāo)志。如果是E鍵標(biāo)志,則執(zhí)行“去掉鍵狀態(tài)標(biāo)志”操作,如果不是則繼續(xù)判斷是否是F鍵標(biāo)志。如果是F鍵標(biāo)志,則執(zhí)行清零操作,若果不是,則說(shuō)明此壓鍵是無(wú)效壓鍵,則程序會(huì)跳轉(zhuǎn)到是否有壓鍵操作的判斷中。在該程序段中,執(zhí)行完修改秒、分、時(shí)的時(shí)間后均要執(zhí)行是否需要執(zhí)行放鍵的操作中去。</p><p><b> 四、源程序
67、</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMENT </p><p><b> ORG 3500H</b></p>&
68、lt;p> TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,,7CH,</p><p> 39H,5EH,79H,71H BUFFER DB 6 DUP(0)</p><p> FUNCTION DB 00H ;A鍵功能標(biāo)志,若為FFH表示進(jìn)入功能狀態(tài)</p><p>
69、 HAVEKEY DB 00H</p><p> SECOND DB 59H ;初始時(shí)間</p><p> MINUTE DB 20H</p><p> HOUR DB 23H</p><p> B SET DB 00H ;B鍵功能標(biāo)志,若為FFH表示進(jìn)入功能狀態(tài)&
70、lt;/p><p> C SET DB 00H ;C鍵功能標(biāo)志,若為FFH表示進(jìn)入功能狀態(tài)</p><p> D SET DB 00H ;D鍵功能標(biāo)志,若為FFH表示進(jìn)入功能狀態(tài)</p><p> BBCOT DB 00H ;B鍵閃動(dòng)計(jì)數(shù)標(biāo)志</p>&l
71、t;p> CCCOT DB 00H ;C鍵閃動(dòng)計(jì)數(shù)標(biāo)志</p><p> DDCOT DB 00H ;D鍵閃動(dòng)計(jì)數(shù)標(biāo)志</p><p> SHU_ZI DB 00H ;數(shù)字鍵緩沖區(qū)</p><p><b> DATA ENDS</b>&l
72、t;/p><p> CODE SEGMENT </p><p> ASSUME CS:CODE,DS:DATA,SS:STACK</p><p> START: MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV BX,OFFSET TABLE
73、 ;BX指向TABLE七段代碼表首址 </p><p> MOV DI,OFFSET BUFFER ;DI指向顯示緩沖區(qū)首址BUFFER</p><p> MOV SI,OFFSET SECOND ;SI指向時(shí)間區(qū)</p><p> MOV AL,88H</p><
74、p> OUT 63H,AL ;8255A初始化</p><p> A3: MOV CX,00CFH ;設(shè)定的時(shí)間常數(shù)(約1s)</p><p> A4: CALL KEYTEST ;監(jiān)測(cè)鍵盤(pán)</p><p>
75、CMP HAVEKEY,0FFH</p><p> JNZ A6</p><p> CALL KEYSCAN ;鍵盤(pán)掃描</p><p> A6: CALL DISPLAY ;顯示數(shù)據(jù)</p><p> CMP F
76、UNCTION,0FFH</p><p> JZ A4</p><p> LOOP A4</p><p> MOV AL,SECOND ;設(shè)定時(shí)間到,處理時(shí)間顯示</p><p> ADD AL,01H</p><p><b>
77、; DAA</b></p><p> MOV SECOND,AL</p><p> MOV SECOND,60H</p><p> JNZ ND_HOU</p><p> MOV SECODE,00H ;60s進(jìn)分</p><p
78、> MOV AL,MINUTE</p><p> ADD AL,01H</p><p><b> DAA</b></p><p> MOV MINUTE,AL</p><p> CMP MINUTE,60H</p><p> JNZ
79、 ND_HOU</p><p> MOV MINUTE,00H ;60min進(jìn)時(shí)</p><p> MOV AL,HOUR</p><p> ADD AL,01H</p><p><b> DAA</b></p><p&
80、gt; MOV HOUR,AL</p><p> CMP HOUR,24H</p><p> JNZ ND_HOU</p><p> MOV HOUR,00H ;24h清零</p><p> ND_HOU: CALL DEAL</p>
81、<p> JMP A3</p><p> KEYSCAN:MOV HAVEKEY,00H ;HAVEKEY=00H置為無(wú)鍵</p><p> CALL DISPLAY ;去抖動(dòng)</p><p> CALL DISPLAY</p>&
82、lt;p> CALL KEYTEST ;再測(cè)是否有壓鍵</p><p> CMP HAVEKEY,0FFH</p><p> JZ BEGIN1</p><p> JMP EX1T1</p><p> BEGIN1: MOV AH,0F
83、EH ;行掃描開(kāi)始 </p><p> NEXTKEY:MOV AL,AH</p><p> OUT 60H,AL</p><p> IN AL,62H</p><p> AND AL,0C0H</p><p> CMP
84、 AL,80H ;判斷是否a1線的鍵</p><p> JZ FIND1</p><p> CMP AL,40H ;判斷是否a2線的鍵</p><p> JZ BRIGE</p><p> ROL AH,1<
85、;/p><p> JMP NEXTKEY</p><p> BRIGE: JMP FIND2</p><p> FIND1: PUSH AX</p><p> A1: MOV HAVEKEY,00H ;等待釋放鍵</p><p>
86、CALL DISPLAY</p><p> CALL KEYTEST</p><p> CMP HAVEKEY,0FFH</p><p> JZ A1</p><p> POP AX</p><p> NOT AH</p>&
87、lt;p> CMP AH,01H</p><p> JZ KEY1</p><p> CMP AH,01H</p><p> JZ KEY15</p><p> CMP AH,04H</p><p> JZ KEY0<
88、/p><p> CMP AH,08H</p><p> JZ KEY14</p><p> CMP AH,10H</p><p> JZ KEY10</p><p> CMP AH,20H</p><p> JZ
89、 KEY13 </p><p> CMP AH,40H</p><p> JZ KEY11</p><p> CMP AH,80H</p><p> JZ KEY12</p><p> JMP EXIT1</p><p&
90、gt; KEY1: MOV SHU_ZI,01H ;數(shù)字1鍵</p><p> JMP EXIT</p><p> KEY12: CMP FUNCTION,0FFH ;功能鍵C,設(shè)置分</p><p> JNZ C_OUT</p><p>
91、 MOV C_SET,0FFH</p><p> MOV B_SET,00H</p><p> MOV D_SET,00H</p><p> C_OUT: JMP EXIT1</p><p> KEY0: MOV SHU_ZI,00H ;數(shù)字0
92、鍵</p><p> JMP EXIT</p><p> KEY15: CALL CLEAN ;功能鍵F,清零</p><p> MOV SECOND,00H</p><p> MOV MINUTE,00H</p><p>
93、MOV HOUR,00H</p><p> JMP EXIT1</p><p> KEY11: CMP FUNCTION,0FFH ;功能鍵B,設(shè)置秒</p><p> JNZ B_OUT</p><p> MOV C_SET,00H</p>
94、<p> MOV D_SET,00H</p><p> B_OUT: JMP EXIT1</p><p> KEY13: CMP FUNCTION,0FFH ;功能鍵D,設(shè)置時(shí)</p><p> JNZ D_OUT</p><p> MOV
95、 C_SET,00H</p><p> MOV B_SET,00H</p><p> MOV D_SET,0FFH</p><p> D_OUT: JMP EXIT1</p><p> FIND2: PUSH AX</p><p> A2: MOV
96、 HAVEKEY,00H ;等待釋放鍵</p><p> CALL DISPLAY</p><p> CALL KEYTEST</p><p> CMP HAVEKEY,0FFH</p><p> JZ A2</p><p>
97、POP AX</p><p> NOT AH</p><p> CMP AH,01H</p><p> JZ KEY9</p><p> CMP AH,02H</p><p> JZ KEY5</p><p>
98、 CMP AH,04H</p><p> JZ KEY8</p><p> CMP AH,08H</p><p> JZ KEY4</p><p> CMP AH,10H</p><p> JZ KEY7</p>&
99、lt;p> CMP AH,20H</p><p> JZ KEY3</p><p> CMP AH,40H</p><p> JZ KEY6</p><p> CMP AH,80H</p><p> JZ KEY2</
100、p><p> JMP EXIT1</p><p> KEY9: MOV SHU_ZI,09H ;數(shù)字9鍵</p><p> JMP EXIT</p><p> KEY5: MOV SHU_ZI,05H ;數(shù)字5鍵</p>
101、;<p> JMP EXIT</p><p> KEY8: MOV SHU_ZI,08H ;數(shù)字8鍵</p><p> JMP EXIT</p><p> KEY4: MOV SHU_ZI,04H ;數(shù)字4鍵</p>&
102、lt;p> JMP EXIT</p><p> KEY7: MOV SHU_ZI,07H ;數(shù)字7鍵</p><p> JMP EXIT</p><p> KEY3: MOV SHU_ZI,03H ;數(shù)字3鍵</p><p
103、> JMP EXIT</p><p> KEY6: MOV SHU_ZI,06H ;數(shù)字6鍵</p><p> JMP EXIT</p><p> KEY2: MOV SHU_ZI,02H ;數(shù)字2鍵</p><p>
104、 EXIT: CALL JUDGE</p><p> EXIT1: RET</p><p> DISPLAY:PUSH AX ;顯示和閃動(dòng)子程序</p><p> CMP B_SET,0FFH ;判斷是否還要閃動(dòng)</p><p&g
105、t; JNZ FFB3</p><p> CMP BBCOT,50H ;前50H次亮</p><p> JA FFB1</p><p> FFB3: MOV AL,00H</p><p> OUT 62H,AL</p>&l
106、t;p> MOV AL,[DI]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,01H</p><p> OUT 62H,AL</p><p> MOV AL,[DI
107、+01H]</p><p> OUT 61H,AL</p><p> CMP B_SET,0FFH</p><p> JNZ FFB2</p><p> FFB1: INC BBCOT</p><p> CMP BBCOT,0A0H
108、 ;后50H次暗</p><p> JNZ FFB2</p><p> MOV BBCOT,00H</p><p> FFB2: CALL DELAY</p><p> CMP C_SET,0FFH ;判斷是否要閃動(dòng)</p><
109、p> JNZ FFC3</p><p> CMP CCCOT,50H ;前50H次亮</p><p> JA FFC1</p><p> FFC3: MOV AL,02H</p><p> OUT 62H,AL</p>
110、<p> MOV AL,[DI+02H]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,03H</p><p> OUT 62H,AL</p><p> MOV
111、AL,[DI+03H]</p><p> OUT 61H,AL</p><p> CMP C_SET,0FFH</p><p> JNZ FFC2</p><p> FFC1: INC CCCOT</p><p> CMP CCCOT,0A0H
112、 ;后50H次暗</p><p> JNZ FFCC2</p><p> MOV CCCOT,00H</p><p> FFC2: CALL DELAY</p><p> CMP D_SET,OFFH ;判斷是否要閃動(dòng)</p>
113、;<p> JNZ FFD3</p><p> CMP DDCOT,50H ;前50H次亮</p><p> JA FFD1</p><p> FFD3: MOV AL,04H</p><p> OUT 62H,AL</
114、p><p> MOV AL,[DI+04H]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,05H</p><p> OUT 62H,AL</p><p> MOV
115、 AL,[DI+05H]</p><p> OUT 61H,AL</p><p> CMP D_SET,0FFH</p><p> JNZ FFD2</p><p> FFD1: INC DDCOT</p><p> CMP DDCO
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)-計(jì)時(shí)器
- 微機(jī)原理課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 微機(jī)課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 測(cè)控原理課程設(shè)計(jì)--時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)
- 時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 籃球計(jì)時(shí)器課程設(shè)計(jì)
- 匯編課程設(shè)計(jì)報(bào)告--- 計(jì)時(shí)器
- 課程設(shè)計(jì)---vhdl秒表計(jì)時(shí)器
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)--答辯倒計(jì)時(shí)器
- 匯編課程設(shè)計(jì)報(bào)告--計(jì)時(shí)器
- 24秒計(jì)時(shí)器課程設(shè)計(jì)
- 多功能計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 籃球比賽計(jì)時(shí)器(課程設(shè)計(jì))
- 微機(jī)原理課程設(shè)計(jì)--打字計(jì)時(shí)練習(xí)
- 課程設(shè)計(jì)--籃球比賽計(jì)時(shí)器
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論