版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p> 課程名稱 微機(jī)原理課程設(shè)計與實踐</p><p> 題目名稱 微型計算機(jī)應(yīng)用系統(tǒng)的設(shè)計 </p><p> 2012年 3 月 15日</p><p><b> 實驗的任務(wù)書</b></p><
2、p><b> 計算器(1)</b></p><p><b> 目的</b></p><p> 鞏固和加深對《微機(jī)原理及應(yīng)用》課程內(nèi)容的認(rèn)識和理解,提高應(yīng)用水平。</p><p> 掌握匯編語言程序的編程方法。</p><p> 熟悉鍵盤控制和七段數(shù)碼管的使用。</p>
3、<p><b> 設(shè)計要求及設(shè)計程序</b></p><p> 課程設(shè)計內(nèi)容上機(jī)編程</p><p> 一在顯示器上顯示任意四位十六進(jìn)制數(shù)</p><p> 將表格里的數(shù)在七段LED上同時顯示出來,要求做成循環(huán)程序,并使用XLAT來譯碼。</p><p> 1.1第一個程序的流程圖</p>
4、<p><b> 1.2源程序</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> TAB1
5、 DB 05H,09H,0FH,0CH ;設(shè)置四位查詢位</p><p> TAB2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;設(shè)置0~F的十六位數(shù)碼管段碼</p><p> DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p> DATA ENDS&
6、lt;/p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV AL,80H
7、 ;8255A初始化</p><p> OUT 63H,AL</p><p> L1: MOV DL,0F7H</p><p> MOV SI,OFFSET TAB1</p><p> MOV CX,0004H</p><p> L2: MOV AL,DL
8、 ;位碼送給AL</p><p> OUT 61H,AL</p><p> MOV AL,[SI]</p><p> MOV BX,OFFSET TAB2 ;查表取出數(shù)碼管的段碼</p><p><b> XLAT TAB2</b><
9、/p><p> OUT 60H,AL ;查表的段碼送A口顯示</p><p><b> INC SI</b></p><p> ROL DL,01H ;下個要顯示的數(shù)碼管位碼</p><p><b> CAL
10、L TIME</b></p><p><b> LOOP L2</b></p><p><b> JMP L1</b></p><p> TIME: PUSH AX ;延時程序</p><p><b> PUS
11、H CX</b></p><p> MOV CX,0002H</p><p> TIME1: MOV AX,0300H</p><p> TIME2: DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p&
12、gt;<p><b> POP CX</b></p><p><b> POP AX</b></p><p><b> RET</b></p><p> CODE ENDS</p><p><b> END START</b>
13、</p><p> 二、2.1將8個鍵按實驗室要求定義鍵值,按任意鍵在顯示器上顯示對應(yīng)鍵值,要求顯示值能左移。</p><p><b> 2.2 流程圖</b></p><p><b> 2.3源程序:</b></p><p> STACK SEGMENT STACK</p>
14、;<p> DW 64 DUP (?)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> VAR1 DB 0BFH,0DFH,0EFH,0F7H</p><p> VAR2 DB 3FH,3FH,3FH,3FH,3FH</p>&l
15、t;p> VAR3 DB 00H,00H,00H,00H,00H</p><p> TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p> DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p> DATA ENDS</p><p> C
16、ODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV AL,89H </p><p> O
17、UT 63H,AL ;8255A初始化</p><p> STT: MOV AL,00H ;鍵盤測試</p><p> OUT 61H,AL</p><p> NEXT: IN AL,62H</p><p> AND
18、AL,82H</p><p> CMP AL,82H</p><p> JNZ KEYABC</p><p> CALL DISP ;調(diào)用顯示程序</p><p><b> JMP STT</b></p><p> ?。?------
19、--------------------------------------------------------------</p><p> KEYABC: CALL TIME ;延時,去抖動</p><p><b> IN AL,62H</b></p><p> AND AL,8
20、2H</p><p> CMP AL,82H</p><p><b> JNZ KEY_7</b></p><p><b> JMP STT</b></p><p> KEY_7: MOV AL,0F7H ;鍵盤掃描識別</p>
21、;<p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_A</b></p><p><b> CALL KEY7</b></p>
22、;<p><b> JMP STTK</b></p><p> KEY_A: TEST AL,80H</p><p><b> JNZ KEY_1</b></p><p><b> CALL KEYA</b></p><p><b> JM
23、P STTK</b></p><p> KEY_1: MOV AL,0EFH</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_F&l
24、t;/b></p><p><b> CALL KEY1</b></p><p><b> JMP STTK</b></p><p> KEY_F: TEST AL,80H</p><p><b> JNZ KEY_B</b></p><p
25、><b> CALL KEYF</b></p><p><b> JMP STTK</b></p><p> KEY_B: MOV AL,0DFH</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p>
26、;<p> TEST AL,02H</p><p><b> JNZ KEY_6</b></p><p><b> CALL KEYB</b></p><p><b> JMP STTK</b></p><p> KEY_6: TEST AL,80H
27、</p><p><b> JNZ KEY_E</b></p><p><b> CALL KEY6</b></p><p><b> JMP STTK</b></p><p> KEY_E: MOV AL,0BFH</p><p> O
28、UT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H</p><p><b> JNZ KEY_9</b></p><p><b> CALL KEYE</b></p><p><
29、;b> JMP STTK</b></p><p> KEY_9: TEST AL,80H</p><p> JNZ KEY_01</p><p><b> CALL KEY9</b></p><p> KEY_01: JMP STTK</p><p> ?。?
30、--------------------------------------------------------------------</p><p><b> ??;按鍵7處理子程序</b></p><p> KEY7: CALL LP1 ;低4位字節(jié)前移</p><p>
31、 MOV AL,07H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL ;查表取出要顯示數(shù)字的數(shù)碼管段碼</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p>
32、;<p> CALL DISP ;顯示</p><p> RET ;返回</p><p> ;---------------------------------------------------------------------</p&g
33、t;<p> KEYA: CALL LP1 ;按鍵A處理子程序</p><p> MOV AL,0AH</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL<
34、;/b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ??;---------------------------------------------------------
35、------------</p><p> KEY1: CALL LP1 ;按鍵1處理子程序</p><p> MOV AL,01H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><
36、;b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ??;-------------------------------------
37、--------------------------------</p><p> KEYF: CALL LP1 ;按鍵F處理子程序</p><p> MOV AL,0FH</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL<
38、/p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p> ?。?----------------
39、----------------------------------------------------</p><p> KEYB: CALL LP1 ;按鍵B處理子程序</p><p> MOV AL,0BH</p><p> MOV [DI+4],AL</p><p&g
40、t; LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b></p><p>
41、??;---------------------------------------------------------------------</p><p> KEY6: CALL LP1 ;按鍵6處理子程序</p><p> MOV AL,06H</p><p> MOV [DI+4],A
42、L</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b> RET</b>&l
43、t;/p><p> ??;---------------------------------------------------------------------</p><p> KEYE: CALL LP1 ;按鍵E處理子程序</p><p> MOV AL,0EH</p><
44、p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p><b&g
45、t; RET</b></p><p> ?。?--------------------------------------------------------------------</p><p> KEY9: CALL LP1 ;按鍵9處理子程序</p><p> MOV AL
46、,09H</p><p> MOV [DI+4],AL</p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p&g
47、t;<p><b> RET </b></p><p> ??;---------------------------------------------------------------------</p><p> LP1: MOV CX,0004H ;數(shù)據(jù)移位保存子程序(前移四位)
48、</p><p> MOV SI,OFFSET VAR2</p><p> MOV DI,OFFSET VAR3</p><p> LP2: MOV AL,[SI+3]</p><p> MOV [SI+4],AL</p><p> MOV AL,[DI+3]</p><p&g
49、t; MOV [DI+4],AL</p><p><b> DEC SI</b></p><p><b> DEC DI</b></p><p><b> LOOP LP2</b></p><p><b> RET</b></p>
50、<p> ??;---------------------------------------------------------------------</p><p> DISP: MOV SI,OFFSET VAR1 ;顯示子程序</p><p> MOV DI,OFFSET VAR2</p><p&g
51、t; MOV CX,0004H</p><p> DIR: MOV AL,[SI]</p><p> OUT 61H,AL</p><p> MOV AL,[DI]</p><p> OUT 60H,AL</p><p><b> CALL TIME</b></p&g
52、t;<p><b> INC SI</b></p><p><b> INC DI</b></p><p><b> LOOP DIR</b></p><p><b> RET</b></p><p> ?。?------------
53、--------------------------------------------------------</p><p> TIME: PUSH AX ;延時程序</p><p><b> PUSH CX</b></p><p> MOV CX,0002H&
54、lt;/p><p> TIME1: MOV AX,0300H</p><p> TIME2: DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p><p><b> POP CX</b><
55、;/p><p><b> POP AX</b></p><p><b> RET</b></p><p> ?。?--------------------------------------------------------------------</p><p> STTK: CAL
56、L DISP ;放鍵測試程序</p><p> MOV AL,00H</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> AND AL,82H</p><p> CMP
57、 AL,82H</p><p><b> JNZ STTK</b></p><p><b> JMP STT</b></p><p> CODE ENDS</p><p> END START </p><p><b> 三計算器程序<
58、/b></p><p> 3.1要求:1.在顯示器上顯示任意四位十六進(jìn)制數(shù)</p><p> 2.將8個鍵按實驗室要求定義鍵值,按任意鍵在顯示器上顯示對應(yīng)鍵值,要求顯示值能夠左移。</p><p><b> 3實現(xiàn):</b></p><p> 1.定義鍵盤按鍵:5個為數(shù)字鍵2、4、5、6、7,3個功能鍵:加
59、號+,乘號×,等號=;</p><p> 2.可進(jìn)行三位8進(jìn)制加法運算;</p><p> 3.可進(jìn)行兩位10進(jìn)制乘法運算。</p><p> 3.2各部分工作原理說明</p><p> 3.2.1.18255接口芯片與2×4鍵盤的連接</p><p> 圖中有2行4列,4根線于PB口相連
60、,2根列線與PC口的PC1,PC7相連。按鍵設(shè)置在行、列交點處(數(shù)字或字符為其鍵號),行、列線分別連接到按鍵開關(guān)的兩端。當(dāng)列線通過上拉電阻接+5V時,就被鉗位在高電平狀態(tài)。鍵盤中有無鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來判斷的。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有鍵按下,總會有一根列線電平被拉至低電平,從而使列線輸入不全為1。</p><p> 鍵盤中哪一個鍵按下是由行線
61、逐行置低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為1,則所按下之鍵不在次行。如果不全為1,則所按下之鍵必在次行。而且是在與0電平行線相交點上的那個鍵。</p><p> 鍵盤的工作方式采用編程掃描工作方式,即通過調(diào)用鍵盤子程序來響應(yīng)鍵輸入的要求,在鍵盤掃描子程序中完成下述功能:</p><p> 判斷鍵盤上有無鍵按下。其方法是先使PB
62、3~PB6=0,然后讀PC1、PC7的狀態(tài),若全為1,則鍵盤中無鍵按下;若不全為1,則說明鍵盤中有鍵按下。</p><p> 去除按鍵的抖動影響。對于由機(jī)械觸點構(gòu)成的按鍵,由于機(jī)械觸點的彈性作用,觸點在閉合及斷開瞬間有一個抖動過程,一般為5~10ms時間。為了消除抖動影響可作這樣處理:當(dāng)判斷有鍵按下后,軟件延時一段時間在判斷鍵盤狀態(tài),如果仍有鍵按下狀態(tài),則認(rèn)為有一個確定的鍵按下,否則按鍵抖動處理。</p&
63、gt;<p> 求按下鍵的鍵值及鍵號。鍵盤上的每個鍵都對應(yīng)一個鍵值。鍵值的組成:其中4位為掃描該鍵時的行線輸出值(PB3~PB6),高8位為該鍵按下時的列線輸入值(PC0、PC1為有效位,其余位令其為1)。由于鍵盤中鍵號排列無規(guī)律,不能通過對鍵值直接運算得到鍵號。因此必須先判斷按下鍵是使PC7=0還是PC1=0,然后再查為零的列線上鍵按下時其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵的鍵值及鍵號的目的是使程序
64、轉(zhuǎn)到相應(yīng)的地址去完成該鍵的操作。一般,對數(shù)字鍵就是直接將該號送到顯示緩沖區(qū)進(jìn)行顯示,對功能鍵則必須先找到該功能鍵處理程序入口地址,并轉(zhuǎn)去執(zhí)行該鍵的命令。因此當(dāng)鍵號求到后,還必須找到功能處理入口。</p><p> 為保證鍵閉合依次CPU僅進(jìn)行依次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號送累加器AH。</p><p> 3.2.2 LED顯示器的工作方式</p>&
65、lt;p> LED數(shù)碼管是目前最常用的數(shù)字顯示器,圖A、B為共陰管和共陽管的電路,圖C為兩種不同出線形式的引出腳功能圖。</p><p> 一個LED數(shù)碼管可用來顯示一位0~9十進(jìn)制數(shù)和一個小數(shù)點。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為2~2.5V,每個發(fā)光二極管的點亮電流在5~10mA。LED數(shù)碼管要顯示BCD碼所表示
66、的十進(jìn)制數(shù)字就需要有一個專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當(dāng)?shù)尿?qū)動能力。</p><p> 圖A 共陰連接(“1”電平驅(qū)動) 圖B 共陽連接(“0”電平驅(qū)動)</p><p> 圖C LED數(shù)碼管符號及引腳功能圖</p><p> LED顯示器有靜態(tài)和動態(tài)兩種工作方式</p><p> LED顯示
67、器工作在靜態(tài)顯示方式下,共陰極或共陽極連接在一起,然后接地或+5V;每位的段選線(A,B,…,G,H)與一個8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。</p><p> 在多位LED顯示時,為了化簡電路,降低成本,將所有位的斷選線并聯(lián)在一起,由一個8位的I/O口控制,即控制段選碼而共陰極或共陽極點分別由相應(yīng)的I/O線控制即控制位選碼,這就是動態(tài)顯示。</p&g
68、t;<p> 4位LED動態(tài)顯示電路只需一個8位I/O口及一個4位I/O口,其中8個I/O控制段選碼,4位I/O控制位選。進(jìn)行4位字符顯示時,采用掃描顯示方式,即在每一瞬間只使某一位顯示相應(yīng)字符,在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平,共陽極送高電平),以保證該位顯示相應(yīng)字符。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延遲一段時間(1~5ms),以造成視覺暫留
69、效果。不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。</p><p><b> 3.3 流程圖</b></p><p><b> 3.4源程序</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p>
70、<p> STACK ENDS</p><p> DATA SEGMENT</p><p> VAR1 DB 0BFH,0DFH,0EFH,0F7H</p><p> VAR2 DB 3FH,3FH, 3FH, 3FH,3FH</p><p> VAR3 DB 00H,00H,00H,00H,00H,00H,
71、00H,00H,00H,00H</p><p> VAR4 DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H</p><p> TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p> DB 7FH,67H,77H,7CH,39H,5EH,79H,71H</p>
72、<p><b> DATA ENDS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA, </p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p
73、><p> MOV AL,89H;8255A初始化</p><p> OUT 63H,AL</p><p> MOV BX,0000H</p><p> STT:MOV AL,00H;鍵盤測試</p><p> OUT 61H,AL</p><p> N
74、EXT: IN AL,62H</p><p> AND AL,82H;通過掃描C口低位測試是否按鍵</p><p> CMP AL,82H</p><p> JNZ KEYABC</p><p><b> CALL DISP</b></p><p><b> J
75、MP STT</b></p><p> KEYABC:CALL TIME;調(diào)用延時,去抖動</p><p> IN AL,62H;送入C口數(shù)據(jù)</p><p> AND AL,82H;數(shù)據(jù)前六位清零</p><p> CMP AL,82H;比較數(shù)據(jù)后兩位<
76、/p><p> JNZ KEY_4 ;轉(zhuǎn)移到檢測按下哪個數(shù)字鍵</p><p> JMP STT;返回檢測鍵盤</p><p> KEY_4: MOV AL, 0F7H;檢測數(shù)字4鍵</p><p> OUT 61H,AL</p><p><b> IN
77、 AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_2;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY4 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p>
78、<p> KEY_2 : TEST AL,80H;檢測數(shù)字鍵2鍵</p><p> JNZ KEY_5;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY2;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_5
79、 : MOV AL, 0EFH;檢測數(shù)字5鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_JIA;轉(zhuǎn)移檢測下一個數(shù)字鍵</p&g
80、t;<p> CALL KEY5 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_JIA: TEST AL, 80H;檢測 功能鍵+</p><p> JNZ KEY_6;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p>
81、 CALL KEYJIA ;調(diào)用數(shù)字鍵處理程序</p><p><b> JMP STTK</b></p><p> KEY_6 : MOV AL,0DFH;檢測數(shù)6鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b&g
82、t;</p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_CHENG;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEY6;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p>
83、KEY_CHENG : TEST AL,80H;檢測功能鍵*</p><p> JNZ KEY_7;轉(zhuǎn)移檢測下一個數(shù)字鍵</p><p> CALL KEYCHENG;調(diào)用功能鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_7 : MOV
84、 AL,0BFH;檢測數(shù)字7鍵</p><p> OUT 61H,AL</p><p><b> IN AL,62H</b></p><p> TEST AL,02H;測試按鍵</p><p> JNZ KEY_DEN;轉(zhuǎn)移檢測下一個功能鍵</p><
85、;p> CALL KEY7 ;調(diào)用數(shù)字鍵處理程序</p><p> JMP STTK;放鍵返回</p><p> KEY_DEN : TEST AL, 80H;檢功能=鍵</p><p> JNZ KEY_71</p><p> CALL KEYDEN;調(diào)用功能
86、鍵處理程序</p><p> KEY_71: JMP STTK;放鍵返回</p><p> KEY4: CMP BH,00H</p><p><b> JZ KEY4_1</b></p><p> CALL CLEAR</p><p> KEY4_1:CALL LP1
87、</p><p> MOV AL,04H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p>
88、<p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY5: CMP BH,00H</p><p>&l
89、t;b> JZ KEY5_1</b></p><p> CALL CLEAR</p><p> KEY5_1:CALL LP1</p><p> MOV AL,05H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX<
90、/b></p><p> LEA BX,TABL</p><p><b> XLAT</b></p><p> MOV [SI+4],AL</p><p> CALL DISP</p><p> POP BX</p><p><b>
91、 RET</b></p><p> KEY6: CMP BH,00H</p><p><b> JZ KEY6_1</b></p><p> CALL CLEAR</p><p> KEY6_1:CALL LP1</p><p> MOV AL,06H&l
92、t;/p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><
93、p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY7: CMP BH,00H</p><p><b> JZ KEY7_1</b></p>&l
94、t;p> CALL CLEAR</p><p> KEY7_1:CALL LP1</p><p> MOV AL,07H</p><p> MOV [DI+4],AL</p><p><b> PUSH BX</b></p><p> LEA BX,TABL&l
95、t;/p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX</p><p><b> RET</b></p><p> KEY2: CMP BH,00H</p><
96、;p><b> JZ KEY2_1</b></p><p> CALL CLEAR</p><p> KEY2_1:CALL LP1</p><p> MOV AL, 02H</p><p> MOV [DI+4],AL</p><p><b> PU
97、SH BX</b></p><p> LEA BX,TABL</p><p><b> XLAT TABL</b></p><p> MOV [SI+4],AL</p><p><b> CALL DISP</b></p><p> POP BX
98、</p><p><b> RET</b></p><p> KEYJIA: CMP BH,00H</p><p> JNZ KEYJIA_1</p><p><b> CALL LP3</b></p><p> KEYJIA_1:MOV BX,0101H&
99、lt;/p><p><b> RET</b></p><p> KEYSCHENG CMP BH,00H</p><p> JNZ KEYCHENG_1</p><p><b> CALL LP3</b></p><p> KEYCHENG_1:MOV BX,0102
100、H </p><p><b> RET</b></p><p> KEYDEN: CMP BL,00H</p><p> JNZ KEYDEN_1</p><p> CALL CLEAR</p><p><b> CALL DISP</b></p>&
101、lt;p> KEYDEN_1:MOV BH,01H</p><p> CMP BL,01H</p><p><b> JZ K1</b></p><p> CMP BL,02H</p><p><b> JZ K2</b></p><p> CALL CL
102、EAR</p><p><b> STTE:RET</b></p><p> K1:CALL JIA1</p><p><b> JMP STTE</b></p><p> K2:CALL CHENG</p><p><b> JMP STTE</b
103、></p><p> JIA1: MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p><b> CLC</b></p><p> MOV CX,0004H</p><p> JIA2: MOV AL, [DI]
104、</p><p> ADC AL, [SI]</p><p> CMP AL,08H</p><p><b> JB B1</b></p><p> AND AL,07H</p><p><b> STC</b></p><p>&l
105、t;b> JMP B2</b></p><p><b> B1: CLC</b></p><p> B2: MOV [DI], AL</p><p><b> INC SI</b></p><p><b> INC DI</b><
106、;/p><p> LOOP JIA_2</p><p> CALL CHANGE</p><p> CALL DISP</p><p> MOV BL, 00H;清零BL是判斷等號所需要</p><p><b> RET</b></p><p> C
107、HENG:MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p> MOV AL,[DI]</p><p> MOV CL,[SI]</p><p><b> MUL CL</b></p><p><b> AA
108、M</b></p><p> MOV [DI+5],AX</p><p> MOV AL,[DI+1]</p><p><b> MUL CL</b></p><p><b> AAM</b></p><p> ADD AL,[DI+6]<
109、/p><p><b> AAA</b></p><p> MOV [DI+6],AX</p><p> MOV AL,[DI]</p><p> MOV CL,[SI+1]</p><p><b> MUL CL</b></p><p>
110、<b> AAM</b></p><p> MOV [SI+5],AX</p><p> MOV AL,[DI+1]</p><p><b> MUL CL</b></p><p><b> AAM</b></p><p> ADD
111、AL,[SI+6]</p><p><b> AAA</b></p><p> MOV [SI+6],AX</p><p> MOV AL,[DI+5]</p><p> MOV [DI],AL</p><p> MOV AL,[DI+6]</p><p>
112、; ADD AL,[SI+5]</p><p><b> AAA</b></p><p> MOV [DI+1],AL</p><p> MOV AL,[DI+7]</p><p> ADC AL,[SI+6]</p><p><b> AAA</b>&l
113、t;/p><p> MOV [DI+2],AL</p><p> MOV AL,00H</p><p> ADC AL,[SI+7]</p><p><b> AAA</b></p><p> MOV [DI+3],AL</p><p> CALL CHA
114、NGE</p><p> CALL DISP</p><p> MOV BL,00H</p><p><b> RET</b></p><p> LP1:MOV CX,0004H;數(shù)據(jù)移位保存子程序(前進(jìn)三位)</p><p> MOV SI,OFFSET VAR
115、2;SI指向顯示代碼緩沖區(qū)首址</p><p> MOV DI,OFFSET VAR3</p><p> LP2:MOV AL,[SI+3]</p><p> MOV [SI+4],AL </p><p> MOV AL,[DI+3];顯示代碼移位</p><p> MOV [DI+4
116、],AL</p><p> DEC SI ;顯示數(shù)字移位</p><p><b> DEC DI</b></p><p><b> LOOP LP2</b></p><p> RET;移位返回</p>
117、<p> LP3: MOV CX,0004H</p><p> MOV SI,OFFSET VAR3</p><p> MOV DI,OFFSET VAR4</p><p> LP4: MOV AL,[SI]</p><p> MOV [DI],AL</p><p><b> INC
118、 SI</b></p><p><b> INC DI</b></p><p><b> LOOP LP4</b></p><p><b> RET</b></p><p> CHANGE:MOV SI,OFFSET VAR2</p><
119、p> MOV DI,OFFSET VAR4</p><p> MOV BX,OFFSET TABLE</p><p> MOV CX,0004H</p><p> COMP0: MOV AL,[DI]</p><p><b> XLAT TABL</b></p><p> MO
120、V [SI],AL</p><p><b> INC SI</b></p><p><b> INC DI</b></p><p> LOOP COMP0</p><p><b> RET </b></p><p> DISP: MOV SI,
121、OFFSET VAR1</p><p> MOV DI,OFFSET VAR2</p><p> MOV DL,[DI+3]</p><p> CMP DL,3FH</p><p><b> JNZ DIR3</b></p><p> MOV DL,[DI+2]</p>&
122、lt;p> CMP DL,3FH</p><p><b> JNZ DIR2</b></p><p> MOV DL,[DI+1]</p><p> CMP DL,3FH</p><p><b> JNZ DIR1</b></p><p><b>
123、 JMPDIR0</b></p><p> DIR3:MOV CX,0004H</p><p><b> JMP DIR</b></p><p> DIR2:MOV CX,0003H</p><p><b> JMP DIR</b></p><p> D
124、IR1:MOV CX,0002H</p><p><b> JMP DIR</b></p><p> DIR0:MOV CX,0001H</p><p> DIR:MOV AL,[SI]</p><p> OUT 61H,AL</p><p> MOV AL,[DI]</p>
125、<p> OUT 60H,AL</p><p><b> CALL TIME</b></p><p><b> INC SI</b></p><p><b> INC DI</b></p><p><b> LOOP DIR</b>
126、</p><p><b> RET</b></p><p> TIME: PUSH AX </p><p> PUSH CX;延時子程序</p><p> MOV CX,0002H</p><p> TIME1:MOV AX,0300H</p><p&
127、gt; TIME2:DEC AX</p><p><b> JNZ TIME2</b></p><p> LOOP TIME1</p><p><b> POP CX</b></p><p><b> POP AX</b></p><p>&l
128、t;b> RET</b></p><p> CLEAR:MOV SI,OFFSET VAR2</p><p> MOV DI,OFFSET VAR3</p><p> MOV CX,0005H</p><p> CLEAR1:MOV AL,3FH</p><p> MOV [SI
129、],AL</p><p> MOV AL,00H</p><p> MOV [DI],AL</p><p><b> INC SI</b></p><p><b> INC DI</b></p><p> LOOP CLEAR1</p>&l
130、t;p> MOV BH,00H</p><p><b> RET</b></p><p> STTK: CALL DISP;放鍵測試程序</p><p> MOV AL,00H</p><p> OUT 61H,AL;B口清零</p><p>
131、 IN AL,62H;送入C口數(shù)據(jù)</p><p> AND AL,82H;數(shù)據(jù)保留低兩位</p><p> CMP AL,82;比較是否放鍵</p><p> JNZ STTK;仍未放鍵,返回繼續(xù)檢測放鍵</p><p> JMP STT;已放鍵,返回&l
132、t;/p><p><b> CODE ENDS</b></p><p><b> END START</b></p><p><b> 四心得體會</b></p><p> 雖然上機(jī)調(diào)試的經(jīng)歷是痛苦的,一步一步的完成了以上的程序,感覺自己能力還需要加強(qiáng)。同時,也想到,或許,
133、學(xué)程序初期,都是仿照別人的程序算法吧。自己以后要盡量多參閱一些程序,提高自己的水平。但是期間的細(xì)節(jié)錯誤給了我們應(yīng)有的教訓(xùn),使我們在以后的學(xué)習(xí)及工作中盡量避免,對于匯編語言的編程也有了進(jìn)一步的了解。</p><p> 這次的課程設(shè)計還使我意識到要將微機(jī)原理及應(yīng)用這門專業(yè)課程學(xué)習(xí)好,除了學(xué)好書本知識外還要通過實踐把書本知識應(yīng)用到實踐中去,才能對這門課程有更深的認(rèn)識,也有利于自己對知識的吸收,鞏固和提高。</p
134、><p> 五、應(yīng)收集的資料及主要參考文獻(xiàn)</p><p> 1 許立鋅等編.微型計算機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2003</p><p> 2.許立梓等編《微型計算機(jī)原理及應(yīng)用》</p><p> --習(xí)題解答、實驗指導(dǎo)及課程設(shè)計.</p><p> 北京:機(jī)械工業(yè)出版社,2003</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微型計算機(jī)課程設(shè)計報告
- 課程設(shè)計--微型計算機(jī)系統(tǒng)設(shè)計
- 微型計算機(jī)課程設(shè)計--數(shù)據(jù)采集系統(tǒng)
- 微型計算機(jī)課程設(shè)計---數(shù)字錄音機(jī)
- 微型計算機(jī)原理與應(yīng)用
- 微型計算機(jī)原理及應(yīng)用
- 《微型計算機(jī)技術(shù)》課程設(shè)計--交通燈控制系統(tǒng)
- 微型計算機(jī)接口技術(shù)課程設(shè)計---雙機(jī)通信
- 微型計算機(jī)系統(tǒng)概述
- 單片微型計算機(jī)課程設(shè)計報告-多功能電子數(shù)字鐘
- 微型計算機(jī)技術(shù)課程設(shè)計報告--微機(jī)交通燈控制系統(tǒng)
- 微型計算機(jī)基于8086cup數(shù)字時鐘課程設(shè)計任務(wù)
- 微型計算機(jī)控制技術(shù)課程設(shè)計---步進(jìn)電機(jī)控制系統(tǒng)設(shè)計
- 微型計算機(jī)技術(shù)及應(yīng)用課程設(shè)計--交通燈控制器
- 微型計算機(jī)技術(shù)及應(yīng)用實驗報告
- 微型計算機(jī)控制技術(shù)課程設(shè)計報告---電磁智能車舵機(jī)控制
- 單片微型計算機(jī)原理與接口技術(shù)課程設(shè)計報告——溫度測量
- 微型計算機(jī)控制技術(shù)課程設(shè)計---步進(jìn)電機(jī)角度控制
- 微型計算機(jī)技術(shù)及應(yīng)用實驗報告
- 基于微型計算機(jī)的步進(jìn)電機(jī)系統(tǒng)設(shè)計
評論
0/150
提交評論