評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第1頁
評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第2頁
評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第3頁
評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第4頁
評(píng)分系統(tǒng)課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理課程設(shè)計(jì)PAGEPAGE9計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告學(xué)年第1學(xué)期課程微機(jī)原理與接口技術(shù)課程設(shè)計(jì)名稱競(jìng)賽評(píng)分系統(tǒng)學(xué)生姓名學(xué)號(hào)專業(yè)班級(jí)網(wǎng)工(2)班指導(dǎo)教師評(píng)分系統(tǒng)一、題義分析及解決方案1題意需求分析題目要求是用8086接口芯片設(shè)計(jì)一個(gè)四評(píng)委使用的評(píng)分系統(tǒng),接受四個(gè)評(píng)委的打分,輸出的是平均得分。由題目要求分析如下:(1)題目要求四個(gè)評(píng)委給出自己的打分,可知設(shè)計(jì)的第一步就是主持人給出一個(gè)開始打分的指令,否則任何打分都是無效的;(2)評(píng)委們接到打分指令后即可為選手輸入分?jǐn)?shù),先設(shè)想用通用可編程鍵盤/顯示接口芯片INTEL8279與小鍵盤結(jié)合實(shí)現(xiàn)該步;(3)接收所有評(píng)委的打分到指定緩沖區(qū)后,開始對(duì)數(shù)據(jù)進(jìn)行處理,求出平均分;(4)將(3)步求出的平均分顯示出來。綜合題目要求分析提出以下四個(gè)問題:(1)如何實(shí)現(xiàn)主持人發(fā)出指令表示評(píng)分結(jié)束?(2)用什么來作為外設(shè)讓評(píng)委進(jìn)行打分?(3)怎樣求平均分?(4)采用什么設(shè)備將平均分顯示出來?2問題解決方法及思路基于以上問題分析此評(píng)分系統(tǒng)是由四個(gè)評(píng)委組成的一個(gè)評(píng)分系統(tǒng)。對(duì)每位評(píng)委給出的分?jǐn)?shù)進(jìn)行累加,并求出平均分。評(píng)委分?jǐn)?shù)范圍是0~~10的整數(shù),將4位評(píng)委給出的分?jǐn)?shù)累加,由于最高分為10分,則用4位二進(jìn)制就可以表示每位評(píng)委的分?jǐn)?shù),用8279的RL0~RL7八位連接小鍵盤,將評(píng)委的分?jǐn)?shù)保存到8279的緩沖寄存器中,可同時(shí)將4位評(píng)委的分?jǐn)?shù)同時(shí)輸入。對(duì)求得平均分進(jìn)行分析,將4位評(píng)委累加后除以4即得到平均分?jǐn)?shù),除以4后將會(huì)出現(xiàn)小數(shù)部分如:0.0、0.25、0.50、0.75這4種情況,要將最后得分顯示在LED上,就要用4個(gè)LED顯示,其中第二個(gè)LED存在小數(shù)點(diǎn),故用八段LED顯示,3個(gè)顯示要分別進(jìn)行輸出,通過位選碼對(duì)每一位的顯示進(jìn)行控制,還要通過段選碼對(duì)每一個(gè)LED的每一段進(jìn)行控制。這樣,就能將整個(gè)最后得分顯示出來了,還要考慮在顯示后一位時(shí)前一位會(huì)不會(huì)消失的情況。以上四個(gè)問題解決其中(1)、(2)、(4)可以用硬件完成,而(3)即數(shù)據(jù)處理部分需由軟件來完成。2.1硬件部分問題(1)可以利用小鍵盤上的任意一位輸入或邏輯開關(guān)的一位來實(shí)現(xiàn)。問題(2)評(píng)委可通過很多設(shè)備進(jìn)行數(shù)據(jù)輸入,如小鍵盤、邏輯開關(guān)等,小鍵盤做輸入設(shè)備其電路簡(jiǎn)單,但對(duì)其編程接受輸入數(shù)據(jù)相對(duì)復(fù)雜。邏輯開關(guān)的電路相對(duì)復(fù)雜,但編程接受輸入數(shù)據(jù)的程序簡(jiǎn)單,且兼于實(shí)驗(yàn)室設(shè)備,故選擇小鍵盤作為輸入設(shè)備。輸入數(shù)據(jù)會(huì)很方便。問題(4)輸出設(shè)備既可用發(fā)光二極管也可用LED顯示器,但相對(duì)于前者,后者對(duì)結(jié)果的顯示一目了然,故本設(shè)計(jì)選擇LED顯示器作輸出設(shè)備。2.2軟件部分(1)讀數(shù)據(jù)程序:采用小鍵盤與8279芯片相結(jié)合,故可8279的相應(yīng)端口進(jìn)行合適的參數(shù)設(shè)置,數(shù)據(jù)端口地址為0B0H,控制端口的地址為0B1H。RLrr5~RL7八位中最高位作為指令開關(guān)。(2)數(shù)據(jù)處理:每次讀數(shù)據(jù)累加求和,并取數(shù)據(jù)整數(shù)和小數(shù)部分,從OUTA0~OUTA3輸出到LED顯示器.當(dāng)四個(gè)評(píng)委均輸入完畢,將累加和采用邏輯右移2位的方式求平均分.在計(jì)算輸入的時(shí)候,用兩位輸入來控制一位數(shù)的輸入,將AL的值賦給中間變量TEMP,然后將TEMP*10,然后累加,求出輸入的數(shù),進(jìn)行和的累加。(3)數(shù)據(jù)輸出:平均分整數(shù)和小數(shù)部分分別輸出到LED.分析整數(shù)0-40之間的數(shù)除以4的小數(shù)部分,平均分處理方法,(也可采用四舍五入的方法保留一位小數(shù))。十進(jìn)制和二進(jìn)制和右移二位平均值十進(jìn)制整數(shù)二進(jìn)制整數(shù)小數(shù)部分00000001100.2500321000.500531100.75008410011110510111.25113611011.5115711111.7511881000102210091001102.252103十進(jìn)制和二進(jìn)制和右移二位平均值十進(jìn)制整數(shù)二進(jìn)制整數(shù)小數(shù)部分101010102.52105111011102.752108……151111113.253113……2010100101551010……35100011……401010001010101010100表1-1:小數(shù)部分的求解方法見上表二、硬件設(shè)計(jì)2.1選擇芯片8279圖2-18279內(nèi)部邏輯框圖2.1.1芯片8279在本設(shè)計(jì)中的作用8279連接4*4的鍵盤及8位顯示器的電路,即可顯示按下鍵對(duì)應(yīng)的鍵值。2.1.2芯片8279的功能分析生產(chǎn)廠家:Intel公司

特性:Intel8279芯片是一種通用的可編程序的鍵盤、顯示接口器件,單個(gè)芯片就能完成鍵盤輸入和LED

顯示控制兩種功能。其內(nèi)部結(jié)構(gòu)如圖6-10-1所示。8279包括鍵盤輸入和顯示輸出兩個(gè)部分。

鍵盤部分提供的掃描方式,可以和64個(gè)按鍵或傳感器的陣列相連。能自動(dòng)消除開關(guān)抖動(dòng)以及N個(gè)鍵

同時(shí)按下的保護(hù)。

顯示部分按掃描的方式工作??梢燥@示8或16位LED顯示塊。

一、8279電路工作原理

根據(jù)結(jié)構(gòu)框圖,分別介紹各部分電路工作原理。

1.I/O控制及數(shù)據(jù)緩沖器

數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)、外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù);I/O控制線是

CPU對(duì)8279進(jìn)行控制的引線。CS是8279的片選信號(hào),CS=0時(shí),8279才被允許讀出或?qū)懭胄畔ⅰR、RD為來自

CPU的控制信號(hào)。

A0用于區(qū)別信息特性:A0=1時(shí),表示數(shù)據(jù)緩沖器輸入為指令、輸出為狀態(tài)字;A=0時(shí),輸入、輸出皆為數(shù)據(jù)。

2.控制與定時(shí)寄存器及定時(shí)控制

控制與定時(shí)寄存器用來寄存鍵盤及顯示的工作方式,以及由CPU編程的其它操作方式。這些寄存器一旦接受并鎖存送來的命令,就通過譯碼產(chǎn)生相應(yīng)的信號(hào),從而完成相應(yīng)的控制功能。

定時(shí)控制包含基本記數(shù)鍵。首級(jí)計(jì)數(shù)器是一個(gè)可編程的N級(jí)計(jì)數(shù)器。N可以2~31之間由軟件編程,以便

從外界時(shí)鐘CLK分頻得到內(nèi)部所需要的100KHZ時(shí)鐘。然后再經(jīng)過分頻為鍵盤掃描提供適當(dāng)?shù)闹鹦袙呙桀l率和顯示掃描時(shí)間。

3.掃描計(jì)數(shù)器

掃描計(jì)數(shù)器有兩種工作方式。按編碼方式工作時(shí),計(jì)數(shù)器作二進(jìn)制記數(shù)。4位記數(shù)狀態(tài)從掃描線SL0~SL3

輸出,經(jīng)外部譯碼器譯碼后,為鍵盤和顯示器提供掃描線;按譯碼方式工作時(shí),掃描計(jì)數(shù)器的最低二位被譯碼后,從SL0~SL3輸出。因此,SL0~SL3提供了4中取1的掃描譯碼。

4.回復(fù)緩沖器、鍵盤去抖及控制

來自RL0~RL3的8根回復(fù)線的回復(fù)信號(hào),由回復(fù)緩沖器緩沖并鎖存。

在鍵盤工作方式中,回復(fù)線作為行列式鍵盤的行列輸入線。在逐行列輸入時(shí),在逐行列掃描時(shí),回復(fù)線用來搜索每一行列中閉合的鍵。當(dāng)某一鍵閉合時(shí),去抖電路被置位,延時(shí)等待10ms后,再檢驗(yàn)該鍵是否繼續(xù)閉和,并將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù)被送入8279內(nèi)部FIFO(先進(jìn)先出)存儲(chǔ)器。鍵盤數(shù)據(jù)格式如下:

D7

D6

D5

D4

D3

D2

D1

D0

控制

移位

掃描

回復(fù)

控制和移位(D6、D7)的狀態(tài)由兩個(gè)獨(dú)立的附加開關(guān)決定,而掃描(D5、D4、D3)和回復(fù)(D2、D1、D0)則是被按鍵置位的數(shù)據(jù)。D5、D4、D3來自動(dòng)掃描計(jì)數(shù)器,是按下鍵的行列編碼,而(D7D7D7)則來自行/列計(jì)數(shù)器,它們是根據(jù)回復(fù)信號(hào)而確定的行/列編碼。

在傳感器開關(guān)狀態(tài)矩陣方式中,回復(fù)線的內(nèi)容直接被送往和相應(yīng)的傳感器RAM(即FIFO存儲(chǔ)器)。

在選通輸入方式中,回復(fù)線的內(nèi)容在CNTL/STB線的脈沖上升沿被送入FIFO存儲(chǔ)器。

5..FIFO/傳感器及其狀態(tài)寄存器

FIFO/傳感器RAM是一個(gè)雙重功能的88RAM。

在鍵盤或選通方式工作時(shí),它是FIFO存儲(chǔ)器,其輸入或讀出遵循先入先出的原則。FIFO狀態(tài)寄存器用于存放FIFO的工作狀態(tài)。例如,RAM是滿還是空;其中存有多少數(shù)據(jù);是否操作出錯(cuò)等。當(dāng)FIFO存儲(chǔ)器不空,狀態(tài)邏輯將產(chǎn)生IRQ=1信號(hào)向CPU申請(qǐng)中斷。

在傳感器矩陣方式工作時(shí),這個(gè)存儲(chǔ)器以是傳感器不是存儲(chǔ)器。它存放著傳感器矩陣中的每一個(gè)傳感器狀態(tài)。在此方式中,若檢索出傳感器的變化,IRQ信號(hào)變?yōu)楦唠娖?,向CPU申請(qǐng)中斷。

6.顯示RAM和顯示地址寄存器

顯示RAM用來存儲(chǔ)顯示數(shù)據(jù)。容量為168位。在顯示過程中,存儲(chǔ)的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分別為A、B兩組,OUTA0~3和OUTB0~3可以單獨(dú)送數(shù),也可以組成一個(gè)8位的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時(shí)輪流驅(qū)動(dòng)被選中的顯示器件,以達(dá)到多路復(fù)用的目的,使顯示器件呈現(xiàn)穩(wěn)定的顯示狀態(tài)。

顯示地址寄存器用來寄存由CPU進(jìn)行讀/寫顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀寫或?qū)懭胫笞詣?dòng)遞減。

二.管腳、引線與功能

8279采用40引腳封裝,其管腳、引線功能如圖6-10-2所示。其引腳功能如下:

D0~D7(數(shù)據(jù)總線):雙向、三態(tài)總線,和系統(tǒng)數(shù)據(jù)總線相連;用于CPU和8279間的數(shù)據(jù)/命令傳遞。

CLK(系統(tǒng)時(shí)鐘):輸入線,為8279提供內(nèi)部時(shí)鐘的輸入端。

RESET(復(fù)位):輸入線,當(dāng)RESET=1時(shí),8279復(fù)位,其復(fù)位狀態(tài)為:

16個(gè)字符顯示;

編碼掃描鍵盤--雙鍵鎖定;

程序時(shí)鐘編碼為31。

CS(片選):輸入線,當(dāng)CS=0時(shí)8279被選中,允許CPU對(duì)其讀、寫,否則被禁止。

A0(數(shù)據(jù)選擇):輸入線。當(dāng)A0=1時(shí)CPU寫入數(shù)據(jù)為命令字,讀出數(shù)據(jù)為狀態(tài)字;A0=0時(shí)CPU讀、寫的字節(jié)均為數(shù)據(jù)。

RD、WR(讀、寫信號(hào)):輸入線。低電平有效,來自CPU的控制信號(hào),控制8279的讀、寫操作。

IRQ(中斷請(qǐng)求):輸出線。高電平有效。

在鍵盤工作方式中,當(dāng)FIFO/傳感器RAM存有數(shù)據(jù)時(shí),IRQ為高電平。CPU每次從RAM中讀出數(shù)據(jù)時(shí),IRQ變?yōu)榈碗娖健H鬜AM中仍有數(shù)據(jù),則IRQ再次恢復(fù)高電平。

在傳感器工作方式中,每當(dāng)檢測(cè)到傳感器狀態(tài)變化時(shí),IRQ就出現(xiàn)高電平。

SL0~SL3(掃描線):輸出線。用來掃描鍵盤和顯示器。它們可以編程設(shè)定為編碼(4中取1)或譯碼輸出(16取1)。

RL0~RL7(回復(fù)線):輸入線。它們是鍵盤矩陣或傳感矩陣的列(或行)信號(hào)輸入線。

SHIFT(移位信號(hào)):輸入線、高電平有效。該輸入信號(hào)是鍵盤數(shù)據(jù)的最高位(D7),通常用來擴(kuò)充鍵開關(guān)的功能,作為控制功能鍵用。

在選通輸入方式時(shí),該信號(hào)的上升沿可將來自RL0~RL7的數(shù)據(jù)存入FIFORAM中。

在傳感器輸入下,該信號(hào)無效。

OUTA0~OUTA3(A組顯示信號(hào)):輸出線。

OUTB0~OUTB3(B組顯示信號(hào)):輸出線。

這兩組引線都是顯示數(shù)據(jù)輸出線,與多位數(shù)字顯示的掃描線SL0~SL3同步,兩組可以獨(dú)立使用,也可以合并使用。

BD(顯示消隱):輸出線。低電平有效。該信號(hào)在數(shù)字切換顯示或使用消隱命令時(shí),將顯示消隱。

三、命令格式與命令字

8279的操作方式是通過CPU對(duì)8279送入命令時(shí)來實(shí)現(xiàn)編程的。當(dāng)數(shù)據(jù)選擇端A0置1時(shí),CPU對(duì)8279寫入數(shù)據(jù)為命令字,讀出的數(shù)據(jù)為狀態(tài)字。

8279共有八條命令。其功能及命令字定義分述如下。

1.鍵盤/顯示方式設(shè)置命令字

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

D

D

K

K

K

其中:

D7、D6、D5=000方式設(shè)置命令特征位。

D

D(D4、D3):來設(shè)定顯示方式,其定義如下:

00:8個(gè)字符顯示,左入口

00:16個(gè)字符顯示,左入口

00:8個(gè)字符顯示,右入口

00:16個(gè)字符顯示,右入口

所謂左入口,即顯示位置從最左一位(最高位)開始,以后逐次輸入的顯示字符逐個(gè)向右順序排列;所謂右入口,即顯示位置從最右一位(最低位)開始,以后逐次輸入的顯示字符時(shí),已有的顯示字符逐個(gè)向左順序移動(dòng)。

KKK(D2、D1、D0):用來設(shè)定七種鍵盤、顯示工作方式:

000

編碼掃描鍵盤,雙鍵鎖定

001

譯碼掃描鍵盤,雙鍵鎖定

010

編碼掃描鍵盤,N鍵輪回

011

譯碼掃描鍵盤,N鍵輪回

100

編碼掃描傳感器矩陣

101

譯碼掃描傳感器矩陣

110

選通輸入,編碼顯示掃描

111

選通輸入,譯碼顯示掃描

雙鍵鎖定與N鍵輪回是多鍵按下時(shí)的兩種不同的保護(hù)方式。雙鍵鎖定為兩鍵同時(shí)按下提供的保護(hù)方法。再消顫周期里,如果有兩鍵同時(shí)按下,則只有其中一個(gè)鍵彈起,而另一個(gè)鍵保持在按下位置時(shí),才被認(rèn)可。N鍵輪回為N鍵同時(shí)按下的保護(hù)方法。當(dāng)有若干鍵按下時(shí),鍵盤掃描能夠根據(jù)發(fā)現(xiàn)他們的順序,依次將它們的狀態(tài)送入FIFORAM中。

2.程序時(shí)鐘命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

0

0

1

P

P

P

P

P

其中:

D7、D6、D5=001為時(shí)鐘命令特征位。

PPPPP(

D4、D3、D2、D1、D0)用來設(shè)定外部輸入CLK端的時(shí)鐘進(jìn)行分頻的分頻數(shù)N。N取值為2~31。例如外部時(shí)鐘頻率為2MHZ,PPPPP被置為10100(N=20),則對(duì)輸入的外部時(shí)鐘20分頻,以獲得8279內(nèi)部要求的100KMZ的基本頻率。

3.讀FIFO/傳感器RAM命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

0

1

0

AI

X

A

A

A

其中:

D7D6D5=010為讀FIFO/傳感器RAM命令特征位。該命令字只在傳感器方式時(shí)使用。在CPU讀傳感器RAM之前,必須使用這條命令來設(shè)定傳感器RAM中的8個(gè)地址(每個(gè)地址一個(gè)字節(jié))。

AAA(D2、D1、D0)為傳感器RAM中的八個(gè)字節(jié)地址。

AI(D4)為自動(dòng)增量特征位。當(dāng)AI=1時(shí),每次讀出傳感器RAM后地址自動(dòng)加1使地址指針指向下一個(gè)存儲(chǔ)單元。這樣,下一個(gè)數(shù)據(jù)便從下一個(gè)地址讀出,而不必重新設(shè)置讀FIFO/傳感器RAM命令。

在鍵盤工作方式中,由于讀出操做嚴(yán)格按照先入先出順序,因此,不需使用此命令。

4.讀顯示RAM命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

0

1

1

AI

A

A

A

A

其中:

D7D6D5=011為讀顯示RAM命令字的特征位。該命令用來設(shè)定將要讀出的顯示RAM地址。

AAAA(D3、D2、D1、D0)用來尋址顯示RAM命令字的特征位。由位顯示RAM中有16個(gè)字節(jié)單元故需要4位尋址。

AI(D4)為自動(dòng)增量特征位。當(dāng)AI=1時(shí),每次讀出后地址自動(dòng)加1指向下一地址。

5.寫顯示RAM命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

AI

A

A

A

A

其中:

D7D6D5=100為寫顯示RAM命令字的特征位。在寫顯示器RAM之前用該命令用來設(shè)定將要寫入的顯示RAM地址。

AAAA(D3、D2、D1、D0)為將要寫入的存儲(chǔ)單元地址。

AI(D4)為自動(dòng)增量特征位。當(dāng)AI=1時(shí),每次寫入后地址自動(dòng)加1指向下一次寫入地址。

6.顯示禁止寫入/消隱命令特征位

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

1

0

1

X

IW

A

IW

B

BL

A

BL

B

其中:

D7D6D5=101為顯示禁止寫入/消隱命令特征位。

IW/A、IW/B(D3、D2)為A、B組顯示RAM寫入屏蔽位。由于顯示寄存器分成A、B兩組,可以單獨(dú)送數(shù),故用兩位來分別屏蔽。當(dāng)A組的屏蔽位D3=1時(shí),A組的顯示RAM禁止寫入。因此,從CPU寫入顯示器RAM數(shù)據(jù)時(shí),不會(huì)影響A的顯示。這種情況通常在采用雙4位顯示器時(shí)使用。因?yàn)閮蓚€(gè)雙四位顯示器是相互獨(dú)立的。為了給其中一個(gè)雙四位顯示器輸入數(shù)據(jù)而又不影響另一個(gè)四位顯示器,因此必須對(duì)另一組的輸入實(shí)行屏蔽。

BL/A、BL/B(D1、D0)為消隱顯示位。用于對(duì)兩組顯示輸出消隱。若BL=1時(shí),對(duì)應(yīng)組的顯示輸出被消隱。當(dāng)BL=0時(shí),則恢復(fù)顯示。

7.清除命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

1

1

0

CD

CD

CD

CF

CA

其中:

D7D6D5=110清除命令特征位。

CDCDCD(D4D3D2)用來設(shè)定清除顯示RAM方式。共有四種消除方式,見表6-10-1。

CF(D1)用來置空FIFO存儲(chǔ)器,當(dāng)=1時(shí),執(zhí)行清除命令后,F(xiàn)IFORAM被置空,使中斷輸出線復(fù)位。同時(shí),傳感器RAM的讀出地址也被置0。

CA(D0)為總清的特征位。它兼有CD和CF的聯(lián)合效能。在CD=1時(shí),對(duì)顯示的清除方式由D3、D2的編碼決定。

清除顯示RAM約需160S。在此期間FIFO狀態(tài)時(shí)的最高位DU=1,表示顯示無效。CPU不能向顯示RAM寫入數(shù)據(jù)。

8.結(jié)束中斷/錯(cuò)誤方式設(shè)置命令

命令格式:

D7

D6

D5

D4

D3

D2

D1

D0

1

1

1

E

×

×

×

×

其中:

D7D6D5=111為該命令的特征位。此命令有兩種不同的作用。

(1)作為結(jié)束中斷命令。在傳感器工作方式中使用。每當(dāng)傳感器狀態(tài)出現(xiàn)變化時(shí),掃描檢測(cè)電路將其狀態(tài)寫入傳感器RAM,并啟動(dòng)中斷邏輯,使IRQ變高,向CPU請(qǐng)求中斷,并且禁止寫入傳感器RAM。此時(shí),若傳感器RAM讀出地址的自動(dòng)遞增特征沒有置位(AI=0),則中斷請(qǐng)求IRQ在CPU第一次從傳感器RAM讀出數(shù)據(jù)時(shí)就被清除。若自動(dòng)遞增特征已置位(AI=1),則CPU對(duì)傳感器RAM的讀出并不能清除IRQ,而必須通過給8279寫入結(jié)束中斷/錯(cuò)誤方式設(shè)置命令才能使IRQ變低。因此在傳感器工作方式中,此命令用來結(jié)束傳感器RAM的中斷請(qǐng)求。

(2)作為特定錯(cuò)誤方式設(shè)置命令。在8279已被設(shè)定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫入結(jié)束中斷/錯(cuò)誤方式設(shè)置命令(E=1),則8279將以一種特定的錯(cuò)誤方式工作。這種方式的特點(diǎn)是:在8279的消顫周期內(nèi),如果發(fā)現(xiàn)多個(gè)按鍵同時(shí)按下,則FIFO狀態(tài)字中的錯(cuò)誤特征位S/E將置1,并產(chǎn)生中斷請(qǐng)求信號(hào)和阻止寫入FIFORAM。

上述八種用于確定8279操作方式的命令字皆由D7D6D5特征位確定,輸入8279后能自動(dòng)尋址相應(yīng)的命令寄存器。因此,寫入命令字時(shí)唯一的要求是使數(shù)據(jù)選擇信號(hào)A0=1。

四、狀態(tài)格式與狀態(tài)字

8279的FIFO狀態(tài)字,主要用于鍵盤和選通工作方式,以指示FIFORAM中的字符數(shù)和有無錯(cuò)誤發(fā)生。其格式為:

D7

D6

D5

D4

D3

D2

D1

D0

DU

S/E

O

U

F

N

N

N

其中:

DU(D7)為顯示無效特征位。當(dāng)DU=1表示顯示無效。當(dāng)顯示RAM由于清除顯示或全清命令尚未完成時(shí),DU=1。

表6-10-1

CD位定義的清除方式

D4

D3

D2

清除方式

0

將顯示RAM全部清零

1

0

將顯示RAM清成20H(A組=0010;B組=0000)

1

1

將顯示RAM全部置1

0

不清除(若CA=1,則D3、D2仍有效)

4、芯片8279的技術(shù)參數(shù)表2-102.2選擇芯片LED2.2.1LED在本設(shè)計(jì)中的作用顯示最后得分,共三塊,一塊用來顯示其整數(shù)部分的十位,一塊用來顯示其整數(shù)部分個(gè)位,另一塊用來顯示其小數(shù)部分(保留一位小數(shù))。2.2.2LED的功能分析LED顯示電路較為簡(jiǎn)單,成本也較低,在功能單一的儀器儀表與機(jī)電設(shè)備中應(yīng)用較廣。但當(dāng)設(shè)備顯示的點(diǎn)或位較多時(shí),就需要采用一定的驅(qū)動(dòng)電路與相應(yīng)的驅(qū)動(dòng)方式。利用專用接口芯片如8255作為計(jì)算機(jī)芯片的端口擴(kuò)展,并通過軟件編程加外部驅(qū)動(dòng)實(shí)現(xiàn)。數(shù)字dpgfedcba二進(jìn)制編碼011000000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91000011090H表2-2.LED顯示管段選碼編碼表2.2.3LED數(shù)碼管的顯示方式(1)靜態(tài):數(shù)碼管顯示過程持續(xù)得到信號(hào),與數(shù)碼管接口的I/O口線為專用。特點(diǎn)是無閃爍,元器件多,占I/O線多,無須掃描,節(jié)省CPU時(shí)間,編程簡(jiǎn)單。(2)動(dòng)態(tài):數(shù)碼管顯示過程輪流得到信號(hào),與各數(shù)碼管接口的I/O口線為共用。特點(diǎn)是有閃爍,元器件少,占I/O線少,必須掃描,花費(fèi)CPU時(shí)間,編程復(fù)雜(有多個(gè)LED時(shí)尤為突出)。2.2.4芯片LED的技術(shù)參數(shù)PcwIfVrIrIf^p對(duì)應(yīng)型號(hào)散射顏色BT235-270255≥1.5≤2.5200SEL-10紅色BT1441529100405≥0.5≤2.5565綠色BT1341529100405≥0.5≤2.5585藍(lán)色消耗功率PM=150mW最大工作電流IFM=100mA正常工作電流IF=40mA正向壓降VF≤1.8V燃亮電壓為5v共陰極LED的PM=300mW,IFM=200mA,IF=60mA,VF≤1.8V,VR≥5V,發(fā)紅光。LED的技術(shù)參數(shù)分析LED發(fā)光二極管的壓降一般為1.5-2.0V,其工作電流一般取10-20Ma,發(fā)光二極管可應(yīng)用于直流驅(qū)動(dòng)電路、交流驅(qū)動(dòng)電路和脈沖驅(qū)動(dòng)電路。共陽極公共端接陽極,低電平有效(燈亮),共陽極數(shù)碼管內(nèi)部發(fā)光二極管的陽極(正極)都聯(lián)在一起,此數(shù)碼管陽極(正極)在外部只有一個(gè)引腳

共陰極公共端接陰極,高電平有效(燈亮),共陰極數(shù)碼管內(nèi)部發(fā)光二極管的陰極(負(fù)極)都聯(lián)在一起,此數(shù)碼管陰極(負(fù)極)在外部只有一個(gè)引腳2.3小鍵盤2.3.1小鍵盤在本設(shè)計(jì)中的作用評(píng)委通過小鍵盤置數(shù),輸入分?jǐn)?shù)。四個(gè)評(píng)委各個(gè)依次打分,系統(tǒng)讀取開關(guān)量,再將處理后的數(shù)據(jù)在LED上顯示出來。圖2-32.3.2小鍵盤的邏輯圖如右圖:2.4選擇芯片74LS2402.4.174LS240芯片引腳圖2.4.274LS240技術(shù)參數(shù)表2-1374LS240技術(shù)參數(shù)2.5芯片比較邏輯開關(guān)小鍵盤連線較簡(jiǎn)單,以邏輯開關(guān)的上下切換來表示,易實(shí)現(xiàn),易觀察所輸入的是哪8位二進(jìn)制數(shù)據(jù)。用時(shí)短連線較復(fù)雜,實(shí)現(xiàn)需編程實(shí)現(xiàn)CPU對(duì)鍵盤電路的掃描,察看是否有鍵按下,是哪個(gè)鍵。掃描占用大量CPU時(shí)間,是CPU的效率大大降低。表2-148255芯片74LS240和74LS2448279芯片可編程的并行接口芯片,有多種與外設(shè)及CPU的連接方法,來滿足不同應(yīng)用要求,減少器件數(shù)量支持字節(jié)數(shù)據(jù)的并行傳送,有3個(gè)8位I/O端口成本:通用且廉價(jià)以鎖存器接受和輸出數(shù)據(jù),不可編程。八緩沖器/線驅(qū)動(dòng)器/線接收器(反碼三態(tài)輸出)通用可編程鍵盤/顯示接口芯片,能同時(shí)完成鍵盤輸入和顯示控制兩種功能。鍵盤接口電路可最多控制64個(gè)按鍵或傳感器組成的陣列,可自動(dòng)消除開關(guān)抖動(dòng)、自動(dòng)識(shí)別鍵碼并具有多鍵同時(shí)按下保護(hù)功能。顯示接口電路采用自動(dòng)掃描方式工作,最多可連接16位LED顯示器。采用該芯片設(shè)計(jì)鍵盤與顯示接口電路可簡(jiǎn)化程序,從而減少CPU運(yùn)行時(shí)間表2-152.6硬件總邏輯圖及其說明圖2-5實(shí)驗(yàn)硬件原理圖說明:由于實(shí)驗(yàn)室設(shè)備中很多芯片已經(jīng)集成,故給連線帶來很大方便性,使的連線簡(jiǎn)單了許多。8279的RL0~RL7連接4*4鍵盤,SL0~SL2三位用來74L138的輸入,輸出的8位作為L(zhǎng)ED的段選,OUTA0~OUTA3四位作為芯片4511的輸入,輸出的7位作為L(zhǎng)ED的位選,8279的數(shù)據(jù)DB0~DB7與PCI卡的數(shù)據(jù)線連接,其中A0連接A0,CS連接CS0,讀寫信號(hào)的連接如圖。三、程序流程圖3.1主程序流程圖:開始開始初始化8279掃描按鍵KEYCOUNT++KEYCOUNT?=9按鍵轉(zhuǎn)換為鍵號(hào)CX加1CX?=2SUM=TEMP+ALCX=0TEMP=TEMP*10取最后兩位(小數(shù))存入AH將前6位移位(除4)存入AL輸出整數(shù)部分調(diào)用小數(shù)部分過程結(jié)束NYYNNY處理小數(shù)子程序:3.3掃描按鍵子過程:讀入數(shù)據(jù)后3位為1讀FIFORAM讀入數(shù)據(jù)后3位為1讀FIFORAMCF=1返回CF=0進(jìn)入讀狀態(tài)進(jìn)入設(shè)置清除命令進(jìn)入設(shè)置清除命令清除顯示RAM清除完畢嗎?返回3.5程序清單及注釋:.MODELTINYPCIBAR3 EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址,也為DMA&32BIT+RAM板卡上的8237提供基地址)Vendor_IDEQU10EBH;廠商ID號(hào)Device_IDEQU8376;設(shè)備ID號(hào) .STACK100 .DATAIO_Bit8_BaseAddressDW?msg0 DB 'BIOS不支持訪問PCI $'msg1 DB '找不到StarPCI9052板卡$'msg2 DB '讀8位I/O空間基地址時(shí)出錯(cuò)$'SUMDB0H;分?jǐn)?shù)和TEMP DB0H ;中間變量KEYCOUNTDB ?;按鍵數(shù)目COUNTDB?;乘10的時(shí)候,保存AL所用的中間變量LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;不帶小數(shù)點(diǎn)的整數(shù)DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EHLED_TBB DB 040H,079H,024H,030H,19H,12H,02H,078H;帶小數(shù)點(diǎn)的整數(shù)DB 000H,10H,08H,03H,046H,021H,06H,0EHCMD_8279DW 00B1H ;8279命令字、狀態(tài)字地址DATA_8279DW 00B0H ;8279讀寫數(shù)據(jù)口的地址,由于偏移地址則CS接PCI卡的CS5!!!.CODESTART: MOVAX,@DATA MOVDS,AX NOP CALLInitPCI CALLModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址 CALLINIT8279 ;初始化子程序 MOVKEYCOUNT,0 MOVCX,0 ;;主程序START1: CALLIfExit JZ START11 JMPExitSTART11:CALLSCAN_KEY ;鍵掃描 JNCSTART1 ;沒有按鍵 XCHGAL,KEYCOUNT INCAL CMPAL,9 JNZSTART2 MOVCX,0;在進(jìn)入下一個(gè)數(shù)的輸入的時(shí)候,由于CX是判斷兩位輸入是一個(gè)數(shù),故要清零?。? MOVKEYCOUNT,0 CALLINIT8279_1 ;8個(gè)數(shù)碼塊全有字符顯示后,再按鍵,清除顯示 MOVAL,SUM ;計(jì)算部分CMPAL,28HJNENOTSHIMOVAL,01HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HLEABX,LED_TBB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HCALLXIAOSHUJMPHUANNOTSHI:;上面處理等于10的情況,下面的分支是小于10的情況PUSHAXMOVAL,0HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAPOPAXMOVBL,ALANDAL,00000011B;將小數(shù)的兩位取出MOVBH,ALMOVAL,BLANDAL,1111100B;將整數(shù)的六位取出MOVCL,2SHRAL,CL;AL里保存整數(shù)部分MOVAH,BH;AH里保存小數(shù)部分MOVCL,00H;主程序需要CL進(jìn)行循環(huán),所以在計(jì)算以后將CL清零ANDAL,3FHLEABX,LED_TBB ;帶小數(shù)點(diǎn)的字型碼表XLATCALLWRITE_DATA MOVAL,AHCALLXIAOSHU;計(jì)算部分HUAN: MOVSUM,0 CALLINIT8279_1 JMPSTART1START2: XCHGAL,KEYCOUNT CALLKEY_NUM ;鍵值轉(zhuǎn)換為鍵號(hào)CMPAL,09H;輸入的鍵值不在0~9范圍內(nèi),及輸入錯(cuò)誤,重新輸入 JGCHULI INCCLCMPCL,2JNENO10MOVCL,0;主程序需要CL進(jìn)行循環(huán),所以在計(jì)算以后將CL清零ADDTEMP,AL;求TEMP+AL的值MOVAH,TEMPCMPAH,0AH;輸入的值大于10的話,重新輸入JGCHULI ADDSUM,AH MOVTEMP,0H JMPNO9NO10:MOVCOUNT,AL;求TEMP*10的值MOVAH,0AHMULAHMOVTEMP,ALMOVAL,COUNTNO9: LEABX,LED_TAB ;字型碼表 XLAT CALLWRITE_DATA JMPSTART1CHULI:LEABX,LED_TAB ;字型碼表 XLAT CALLWRITE_DATACALLINIT8279_1MOVSUM,0MOVKEYCOUNT,0JMPSTART1START_EXIT:JMP$;;處理小數(shù)部分XIAOSHUPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXCMPAL,0HJEX0CMPAL,01HJEX1CMPAL,02HJEX2CMPAL,03HJEX3X0:MOVAL,0HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0JMPX4X1:MOVAL,02HANDAL,3FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HJMPX4X2:MOVAL,05HANDAL,3FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HJMPX4X3:MOVAL,07HANDAL,3FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HX4:ANDAL,3FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAXIANSHI:CALLSCAN_KEY ;鍵掃描 JNCXIANSHI ;鍵的輸入來控制顯示結(jié)果的時(shí)間POPDXPOPCXPOPBXPOPAXXIAOSHUENDP;;8279初始化INIT8279PROCNEARMOVDX,CMD_8279;CMD_8279為寫命令地址、讀狀地址 MOVAL,34H ;可編程時(shí)鐘設(shè)置,設(shè)置分頻系數(shù)(20分頻) OUTDX,AL MOVAL,0H ;8位字符顯示,左邊輸入,外部譯碼鍵掃描方式,雙鍵互鎖,10H右入口 OUTDX,AL CALLINIT8279_1 RETINIT8279ENDPINIT8279_1PROCNEARCALLCLEAR ;清顯示 MOVAL,90H ;從第一個(gè)數(shù)碼管開始移位顯示,寫顯示RAM命令 OUTDX,AL RETINIT8279_1ENDP;;清除CLEAR PROCNEARMOVDX,CMD_8279 MOVAL,0DEH ;清除命令,將顯示RAM全部置1 OUTDX,ALWAIT1: IN AL,DX TESTAL,80H;10000000B,寫顯示RAM,初始位為0000 JNZWAIT1 ;顯示RAM清除完畢嗎? RETCLEAR ENDP;;掃描SCAN_KEYPROCNEARMOVDX,CMD_8279IN AL,DX ;讀狀態(tài)READ_FIFO:ANDAL,7 JZ NO_KEY ;是否有鍵按下READ: MOVAL,40H OUTDX,AL ;讀FIFORAM,初始地址為000H MOVDX,DATA_8279 IN AL,DX STC ;有鍵SCAN_KEY1:RETNO_KEY: CLC ;無鍵按下,清CF JMPSCAN_KEY1SCAN_KEYENDP;;鍵值轉(zhuǎn)換KEY_NUM PROCNEAR ANDAL,3FH;00111111B清除高兩位,鍵值轉(zhuǎn)換為鍵號(hào) RETKEY_NUM ENDP;;讀數(shù)據(jù)WRITE_DATAPROCNEARMOVDX,DATA_8279;DATA_8279為讀寫數(shù)據(jù)口的地址 OUTDX,AL RETWRITE_DATAENDP;PCI卡初始化IfExit PROCNEAR PUSHAXPUSHDX MOVAH,06HMOVDL,0FFH INT21H POPDX POPAX RETIfExit ENDPInitPCIPROC NEARMOV AH,00HMOV AL,03HINT 10H ;清屏MOV AH,0B1HMOV AL,01HINT 1AHCMP AH,0JZInitPCI2LEA DX,msg0InitPCI1:MOV AH,09H INT 21H JMP ExitInitPCI2:MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV SI,0 INT 1AH JNC InitPCI3 ;是否存在StarPCI9052板卡 LEA DX,msg1 JMP InitPCI1InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH ;讀取該卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RETInitPCI ENDPModifyAddressPROCNEAR ADDCMD_8279,CX ADDDATA_8279,CX RETModifyAddressENDPExit: MOVAH,4CHINT21HENDSTART在實(shí)驗(yàn)過程中,老師要求將四位評(píng)委改成八位評(píng)委,并且每位評(píng)委分?jǐn)?shù)只占LED顯示的一位,程序如下:.MODELTINYPCIBAR3 EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址,也為DMA&32BIT+RAM板卡上的8237提供基地址)Vendor_IDEQU10EBH;廠商ID號(hào)Device_IDEQU8376;設(shè)備ID號(hào) .STACK100 .DATAIO_Bit8_BaseAddressDW?msg0 DB 'BIOS不支持訪問PCI $'msg1 DB '找不到StarPCI9052板卡$'msg2 DB '讀8位I/O空間基地址時(shí)出錯(cuò)$'SUMDB0H;分?jǐn)?shù)和TEMP DB0H ;中間變量KEYCOUNTDB ?;按鍵數(shù)目COUNTDB?;乘10的時(shí)候,保存AL所用的中間變量LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;不帶小數(shù)點(diǎn)的整數(shù)DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EHLED_TBB DB 040H,079H,024H,030H,19H,12H,02H,078H;帶小數(shù)點(diǎn)的整數(shù)DB 000H,10H,08H,03H,046H,021H,06H,0EHCMD_8279DW 00B1H ;8279命令字、狀態(tài)字地址DATA_8279DW 00B0H ;8279讀寫數(shù)據(jù)口的地址,由于偏移地址則CS接PCI卡的CS5!!!.CODESTART: MOVAX,@DATA MOVDS,AX NOP CALLInitPCI CALLModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址 CALLINIT8279 ;初始化子程序 MOVKEYCOUNT,0 MOVCX,0 ;;主程序START1: CALLIfExit JZ START11 JMPExitSTART11:CALLSCAN_KEY ;鍵掃描 JNCSTART1 ;沒有按鍵 XCHGAL,KEYCOUNT INCAL CMPAL,9 JNZSTART2 MOVKEYCOUNT,0 CALLINIT8279_1 ;8個(gè)數(shù)碼塊全有字符顯示后,再按鍵,清除顯示 MOVAL,SUM ;計(jì)算部分CMPAL,48HJNENOTSHIMOVAL,09HLEABX,LED_TBB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HCALLXIAOSHUJMPHUANNOTSHI:PUSHAXPOPAXMOVBL,ALANDAL,00000111B;將小數(shù)的兩位取出MOVBH,ALMOVAL,BLANDAL,11111000B;將整數(shù)的六位取出MOVCL,3SHRAL,CL;AL里保存整數(shù)部分MOVAH,BH;AH里保存小數(shù)部分LEABX,LED_TBB ;帶小數(shù)點(diǎn)的字型碼表XLATCALLWRITE_DATA MOVAL,AHCALLXIAOSHU;計(jì)算部分HUAN: MOVSUM,0 CALLINIT8279_1 JMPSTART1START2: XCHGAL,KEYCOUNT CALLKEY_NUM ;鍵值轉(zhuǎn)換為鍵號(hào)CMPAL,09H;輸入的鍵值不在0~9范圍內(nèi),及輸入錯(cuò)誤,重新輸入 JGCHULI MOVAH,ALCMPAH,09H;輸入的值大90的話,重新輸入JGCHULI ADDSUM,AH JMPNO9NO9: LEABX,LED_TAB ;字型碼表 XLAT CALLWRITE_DATA JMPSTART1CHULI:LEABX,LED_TAB ;字型碼表 XLAT CALLWRITE_DATACALLINIT8279_1MOVSUM,0MOVKEYCOUNT,0JMPSTART1START_EXIT:JMP$;;處理小數(shù)部分X5:MOVAL,06HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,02HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HJMPX8X6:MOVAL,07HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0JMPX8X7:MOVAL,08HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,07HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HJMPX8XIAOSHUPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXCMPAL,0HJEX0CMPAL,01HJEX1CMPAL,02HJEX2CMPAL,03HJEX3CMPAL,04HJEX4CMPAL,05HJEX5CMPAL,06HJEX6CMPAL,07HJEX7X0:MOVAL,0HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0JMPX8X1:MOVAL,01HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,02HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HJMPX8X2:MOVAL,02HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,0HJMPX8X3:MOVAL,03HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,07HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,05HJMPX8X4:MOVAL,05HANDAL,1FHLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,00HLEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAMOVAL,00HJMPX8X8:LEABX,LED_TAB ;字型碼表XLATCALLWRITE_DATAXIANSHI:CALLSCAN_KEY ;鍵掃描 JNCXIANSHI ;鍵的輸入來控制顯示結(jié)果的時(shí)間POPDXPOPCXPOPBXPOPAXXIAOSHUENDP;;8279初始化INIT8279PROCNEARMOVDX,CMD_8279;CMD_8279為寫命令地址、讀狀地址 MOVAL,34H ;可編程時(shí)鐘設(shè)置,設(shè)置分頻系數(shù)(20分頻) OUTDX,AL MOVAL,0H ;8位字符顯示,左邊輸入,外部譯碼鍵掃描方式,雙鍵互鎖,10H右入口 OUTDX,AL CALLINIT8279_1 RETINIT8279ENDPINIT8279_1PROCNEARCALLCLEAR ;清顯示 MOVAL,90H ;從第一個(gè)數(shù)碼管開始移位顯示,寫顯示RAM命令 OUTDX,AL RETINIT8279_1ENDP;;清除CLEAR PROCNEARMOVDX,CMD_8279 MOVAL,0DEH ;清除命令,將顯示RAM全部置1 OUTDX,ALWAIT1: IN AL,DX TESTAL,80H;10000000B,寫顯示RAM,初始位為0000 JNZWAIT1 ;顯示RAM清除完畢嗎? RETCLEAR ENDP;;掃描SCAN_KEYPROCNEARMOVDX,CMD_8279IN AL,DX ;讀狀態(tài)READ_FIFO:ANDAL,7 JZ NO_KEY ;是否有鍵按下READ: MOVAL,40H OUTDX,AL ;讀FIFORAM,初始地址為000H MOVDX,DATA_8279 IN AL,DX STC ;有鍵SCAN_KEY1:RETNO_KEY: CLC ;無鍵按下,清CF JMPSCAN_KEY1SCAN_KEYENDP;;鍵值轉(zhuǎn)換KEY_NUM PROCNEAR ANDAL,3FH;00111111B清除高兩位,鍵值轉(zhuǎn)換為鍵號(hào) RETKEY_NUM ENDP;;讀數(shù)據(jù)WRITE_DATAPROCNEAR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論