




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上微型計算機技術 課程設計 指導教師: 班 級: 姓 名: 學 號: 班內序號: 課設日期: _目 錄36一、課程設計題目:點陣顯示系統電路及程序設計利用匯編語言與微型計算機技術課程中所學的可編程接口芯片8253、8255A、8259設計一個基于微機控制的點陣顯示系統。二、設計目的1通過本設計,使學生綜合運用匯編語言與微型計算機技術、數字電子技術等課程的內容,為今后從事計算機檢測與控制工作奠定一定的基礎。2掌握接口芯片8253、8255A、8259等可編程器件、譯碼器74LS138、8路同相三態雙向總線收發器74LS245、點陣顯示器件的使用。3學會用匯編語言編寫一個較
2、完整的實用程序。4掌握微型計算機技術應用開發的全過程,包括需求分析、原理圖設計、元器件選用、布線、編程、調試、撰寫報告等步驟。三、設計內容1點陣顯示系統啟動后的初始狀態在計算機顯示器上出現菜單:dot matrix display system1.left shift display2.up shift display3.s stop4.Esc Exit2點陣顯示系統運行狀態按計算機光標鍵,點陣逐列向左移動并顯示:“微型計算機技術課程設計,點陣顯示系統,計科11302班,陳嘉敏,彭曉” 。按計算機光標鍵,點陣逐行向上移動并顯示:“微型計算機技術課程設計,點陣顯示系統,計科11302班,陳嘉敏,
3、彭曉” 。按計算機光標s鍵,點陣停止移動并顯示當前字符。3結束程序運行狀態按計算機Esc鍵,結束點陣顯示系統運行狀態并顯示“停”。四設計所需器材與工具1一塊實驗面包板(內含時鐘信號1MHz或2MHz)。 2可編程芯片8253、8255、74LS245、74LS138各一片,16×16點陣顯示器件一片。3導線若干。4示波器、萬用表、常用工具等共用(從實驗室現借現還)。五、設計思路 1利用74LS138設計地址譯碼電路,8255端口地址:300H303H,8253端口地址:304H307H。274LS245用于總線和8253、8255之間的雙向傳輸和隔離。3利用面包板上時鐘(1MHz或2
4、MHz)和8253設計一個1毫秒定時電路,將定時信號(1毫秒方波)接到總線的IRQ2或IRQ10送給8259控制點陣左移或上移。4選擇8255的PA0、PA4、PA5和PB4、PB5、PB6、PB7,7個位控制點陣顯示器件行和列的數據串行輸入、輸入脈沖、鎖存脈沖(并行輸出脈沖)。六、設計步驟1.電路原件介紹(1)74LS245數據總路線緩沖器 圖6-1-1 74LS245的功能表 圖6-1-2圖6-1-3(2)74LS138 圖6-1-4標準地址譯碼電路 圖6-1-58255CS對應的地址為300H303H, 8253CS對應的地址為304H307H。簡化后的非標準地址譯碼電路 圖6-1-6(
5、3).8253定時/計數器 圖6-1-7(4).8255A 圖6-1-8(5).點陣顯示器件 圖6-1-9 圖6-1-10 附4、課程設計所用器件 圖6-1-12 附5、點陣生成圖 圖6-1-13 圖6-1-14 圖6-1-15 圖6-1-16 圖6-1-17 圖6-1-18 圖6-1-19 圖6-1-20開始2.流程圖初始化8253、8255A及8259芯片,選擇計數器1、2,輸出端口A、B,工作方式0顯示主界面信息,點陣顯示出字模,停止不移動中斷服務程序,不斷掃描鍵盤,等待有鍵按下(1.2.3.4)并執行相應服務程序按鍵4啟動Esc功能,調用退出程序,點陣顯示“停”,并結束顯示。按鍵3啟動
6、StopDisplay功能,調用停止程序,點陣停止移動并顯示當前字符按鍵2啟動UpShift功能,調用上移程序,并顯示在點陣上按鍵1啟動LeftShift功能,調用左移程序,并顯示在點陣上3.電路圖 圖6-3-1注:(1)電路箱總芯片上已集成8259芯片,實際連接時8253的OUT2直接接到總芯片的IRQ10處;(2)實際連接時,是由8255A芯片的PA0、PA4、PA5、PB4、PB5、PB6、PB7控制點陣顯示屛;PA0R1、PA4SCK、PA5LATCH、PB4A、PB5B、PB6C、PB7D。GND和EN/OE接地,+5V接電源正極。4.正確運用所給器件布線,搭接硬件電路初始接線圖 圖
7、6-4-1 測試中發現8255無法正常工作,檢查得知面包板底下有短路,重新申請新的面包板,更改部分線路,最后得到線路圖如下,并測試成功。最終接線圖及測試 圖6-4-25.詳細匯編代碼DATA SEGMENT微db 12H, 10H, 12H, 10H, 2AH, 90H, 4AH, 0A4H, 8AH, 0BEH, 1FH, 0C4H,20H, 24H, 7FH, 0A8H, 0A0H, 28H, 2FH, 28H, 29H, 10H, 29H, 50H, 29H, 0A8H, 29H, 28H, 30H, 46H, 20H, 84H型 db 01H, 04H, 7FH, 84H, 12H,
8、24H, 12H, 24H, 12H, 24H, 0FFH, 0A4H, 12H, 24H, 12H, 24H, 12H, 04H, 23H, 14H, 41H, 08H, 7FH, 0FCH, 01H,00H, 01H, 04H, 0FFH, 0FEH, 00H, 00H計 db 00H, 40H, 20H, 40H, 10H, 40H, 10H, 40H, 00H, 40H, 00H, 44H, 0F7H, 0FEH, 10H, 40H, 10H, 40H, 10H, 40H, 10H, 40H, 12H, 40H, 14H, 40H, 18H, 40H, 10H, 40H, 00H, 4
9、0H算 db 20H, 80H, 3EH, 0FCH, 49H, 20H, 9FH, 0F0H, 10H, 10H, 1FH, 0F0H, 10H, 10H, 1FH, 0F0H, 10H, 10H, 1FH, 0F0H, 08H, 24H, 0FFH, 0FEH, 08H, 20H, 08H, 20H, 10H, 20H, 20H, 20H機 db 10H, 00H, 10H, 10H, 11H, 0F8H, 11H, 10H, 0FDH, 10H, 11H, 10H, 31H, 10H, 39H, 10H, 55H, 10H, 51H, 10H, 91H, 10H, 11H, 10H, 1
10、1H, 12H, 12H, 12H, 14H, 0EH, 18H, 00H技 db 10H, 40H, 10H, 40H, 10H, 48H, 13H, 0FCH, 0FCH, 40H, 10H, 40H, 10H, 40H, 13H, 0F8H, 1AH, 08H, 31H, 10H, 0D1H, 10H, 10H, 0A0H, 10H, 40H, 10H, 0B0H, 51H, 0EH, 26H, 04H術 db 01H, 00H, 01H, 40H, 01H, 30H, 01H, 10H, 01H, 04H, 0FFH, 0FEH, 01H, 00H, 03H, 80H, 05H, 40
11、H, 09H, 20H, 11H, 10H, 21H, 0EH, 0C1H, 04H, 01H, 00H, 01H, 00H, 01H, 00H課 db 00H, 08H, 43H, 0FCH, 22H, 48H, 22H, 48H, 03H, 0F8H, 02H, 48H, 0E2H, 48H, 23H, 0F8H, 20H, 40H, 2FH, 0FEH, 20H, 0E0H, 29H, 50H, 32H, 48H, 24H, 4EH, 08H, 44H, 00H, 40H程 db 08H, 04H, 1DH, 0FEH, 0F1H, 04H, 11H, 04H, 11H, 04H, 0F
12、FH, 04H, 11H, 0FCH, 38H, 00H, 37H, 0FEH, 54H, 20H,50H, 28H, 91H, 0FCH, 10H, 20H, 10H, 24H, 17H, 0FEH, 10H, 00H設 db 01H, 0F0H, 21H, 10H, 11H, 10H, 11H, 10H, 01H, 10H, 02H, 0EH, 0F4H, 00H, 13H, 0F8H, 11H, 08H, 11H, 10H, 10H, 90H, 10H, 0A0H, 14H, 40H, 18H, 0B0H, 13H, 0EH, 0CH, 04H計 Db 00H, 40H, 20H, 40
13、H, 10H, 40H, 10H, 40H, 00H, 40H, 00H, 44H, 0F7H, 0FEH, 10H, 40H, 10H, 40H, 10H, 40H, 10H, 40H, 12H, 40H, 14H, 40H, 18H, 40H, 10H, 40H, 00H, 40HDou0 db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 18H, 00H, 18H, 00H, 10H, 00H, 20H, 00H, 00H, 00H,
14、 00H, 00H點 db 02H, 00H, 02H, 00H, 02H, 08H, 03H, 0FCH, 02H, 00H, 02H, 10H, 3FH, 0F8H, 20H, 10H, 20H, 10H, 20H, 10H, 3FH, 0F0H, 00H, 00H, 29H, 10H, 24H, 0C8H, 44H, 44H, 80H, 04H陣 db 00H, 80H, 78H, 84H, 4FH, 0FEH, 50H, 80H, 50H, 0A0H, 61H, 20H, 51H, 28H, 4BH, 0FCH, 48H, 20H, 48H, 20H, 68H, 24H, 57H, 0
15、FEH, 40H, 20H, 40H, 20H, 40H, 20H, 40H, 20H顯 db 00H, 10H, 1FH, 0F8H, 10H, 10H, 10H, 10H, 1FH, 0F0H, 10H, 10H, 10H, 10H, 1FH, 0F0H, 14H, 50H, 44H, 44H, 34H, 4CH, 14H, 50H, 04H, 40H, 04H, 44H, 0FFH, 0FEH, 00H, 00H示 db 00H, 10H, 3FH, 0F8H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 04H, 0FFH, 0FEH, 01H, 00H, 0
16、1H, 00H, 09H, 20H, 19H, 18H, 21H, 0CH, 41H, 04H, 01H, 00H, 05H, 00H, 02H, 00H系 db 00H, 38H, 7FH, 0C0H, 04H, 00H, 04H, 10H, 08H, 20H, 3FH, 0C0H, 01H, 00H, 02H, 20H, 04H, 10H, 3FH, 0F8H, 01H, 08H, 09H, 20H, 09H, 10H, 11H, 08H, 25H, 08H, 02H, 00H統 db 10H, 80H, 10H, 40H, 20H, 48H, 27H, 0FCH, 48H, 80H, 0
17、F9H, 10H, 12H, 08H, 27H, 0FCH, 41H, 24H, 0F9H, 20H, 41H, 20H, 01H, 20H, 1AH, 22H, 0E2H, 22H, 44H, 1EH, 08H, 00HDou2 db 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 18H, 00H, 18H, 00H, 10H, 00H, 20H, 00H, 00H, 00H, 00H, 00HZhang Db 09H, 00H, 0FDH
18、, 08H, 09H, 08H, 09H, 10H, 09H, 20H, 79H, 40H,41H, 04H, 47H, 0FEH, 41H, 40H, 79H, 40H, 09H, 20H, 09H, 20H, 09H, 10H, 09H, 4EH, 51H, 84H, 21H, 00H strmenu DB 'dot matrix display system',0AH,0DH,'1.','L',' left shift display',0AH,0DH,'2.','U',' up sh
19、ift display',0AH,0DH,'3.S stop',0AH,0DH,'4.Esc Exit',0AH,0DH,0AH,0DH,'$'OUTSET DW 0000H;用于存放字符首地址,增加程序可移植性。 COUNT DB 35;用于指示漢字的個數StopFlag DB 00H;暫停標志位:用于輔助實現暫停功能。(1)如果為0收到中斷后,可以MoveStep;(2)否則不行。Status DB 00H;輔助實現第一種中斷。;為了實現“利用中斷來刷屏”,需要用到兩個變量。IndexOfLine DW 0006H;行標,用來指示當前
20、刷屏從第幾行開始。用于輔助實現ShowUpward范圍是0count*16-1。當超過的時候,應該使其等于00IndexOfWord DB 00H;漢字的指針(只能放256個漢字嘍),輔助實現ShowLeftward的MoveStep DB 00H;以每個漢字為中心,的位移量,用于Left。:出于我們點陣的數據格式,其范圍在016之間。;用于恢復原中斷向量INT0A_OFF DW(?)INT0A_SEG DW(?) ;Test:用于輔助做測試的變量。Times DB 00hDATA ENDSCODE SEGMENT 'CODE'ASSUME DS:DATA,CS:CODE;-S
21、tartSTART:MOV DX,DATAMOV DS,DXLEA DX,wEI ;設置字符的開始位置MOV OUTSET,DXCALL InI8255CALL Ini8253MOV AX,3572H ;獲取原中斷向量 INT 21H MOV INT0A_OFF,BX ;保存原中斷向量 MOV BX,ES MOV INT0A_SEG,BX CLI ;關中斷 MOV AX,2572H MOV DX,SEG MoveStepLeft ;設置新的中斷向量 PUSH DS MOV DS,DX MOV DX,OFFSET MoveStepLeft INT 21H POP DS STI ;開中斷 IN A
22、L,0A1H ;打開IRQ10 AND AL,0FBH OUT 0A1H,AL IN AL,21H ;打開IRQ2 AND AL,0FBH OUT 21H,ALLEA DX,strmenuMOV AH,09HINT 21H;刷屏。NOTEND:MOV AH,0BH ;檢查是否有鍵按下 INT 21H INC AL JNZ NOTEND2 ; 若無鍵按下,則跳過判斷 MOV AH,08H ;如有Q或q鍵按下,則程序退出 INT 21H CMP AL,'s'當鍵入為's'的時候,停止LED滾動JZ JStopCMP AL,'S'JZ JStopCMP
23、 AL,1BH;當鍵入為Esc的時候,退出程序JZ JEXITCMP AL,'u'當鍵入U的時候,調用Up:(1)改變Status變量=2;(2)改變StopFlag;(3)改變中斷表向量為“MoveLeftStep",從而實現中斷移位JZ JUpCMP AL,'U'JZ JUpCMP AL,'l'當鍵入L的時候,調用Left:(1)改變Status變量=2;(2)改變StopFlag;(3)改變中斷向量表為“MoveLeftStep",從而實現中斷移位JZ JLeftCMP AL,'L'JZ JLeft CM
24、P AL,'Q' JZ JEXITCMP AL,'q' JZ JEXITNOTEND2:CMP Status,01HJZ JLeftShow;以向左的方式,刷屏CMP Status,02HJZ JUpShow;以向上的方式刷屏;CALL DELAYCALL DELAYJMP NOTENDJStop:CALL StopJMP NOTENDJLeft:CALL LeftJMP NOTENDJUp:CALL UPJMP NOTENDJEXIT:CALL EXITJLeftShow:CALL ShowLeftward;CALL DELAY;?也許對于cpu位的位移,這個
25、delay最好是放在MoveStepLeft函數的內部;CALL MoveStepLeft;-如果中斷沒起作用,那就用CUP來位移。MOV AH,2MOV DL,'L'INT 21HJMP NOTENDJUpShow:CALL ShowUpward;CALL DELAY;CALL MoveStepUp;-如果中斷沒起作用,那就用CUP來位移。MOV AH,2MOV DL,'U'INT 21HJMP NOTEND;-根據鍵盤輸入,改變中斷向量表,從而選擇是向上,還是向下移動。-Left:;(1)把中斷處理程序“向左左位”的中斷程序放入中斷向量表中。;(2)同時將s
26、tatus置為1,表示的是以向左的方式刷屏;(3)置暫停位為00h;(4)開始循環。PUSH AXPUSH DXMOV AH,2MOV DL,'L'INT 21H CLI ;關中斷 MOV AX,2572H MOV DX,SEG MoveStepLeft ;設置新的中斷向量 PUSH DS MOV DS,DX MOV DX,OFFSET MoveStepLeft INT 21H POP DS STI ;開中斷 IN AL,0A1H ;打開IRQ10 AND AL,0FBH ; OUT 0A1H,AL IN AL,21H ;打開IRQ2 AND AL,0FBH OUT 21H,A
27、LMOV Status,1;(2)MOV StopFlag,00H;(3)置暫停位POP DXPOP AXRETUp:;(1)把中斷處理程序“向上位移”的中斷程序放入中斷向量表中。;(2)同時將status置為,表示的是以向左的方式刷屏;(3)置暫停位為00h;(4)開始循環。PUSH AXPUSH DXMOV AH,2MOV DL,'U'INT 21H CLI ;關中斷 MOV AX,2572H MOV DX,SEG MoveStepUp ;設置新的中斷向量 PUSH DS MOV DS,DX MOV DX,OFFSET MoveStepUp INT 21H POP DS S
28、TI ;開中斷 IN AL,0A1H ;打開IRQ10 AND AL,0FBH ; OUT 0A1H,AL IN AL,21H ;打開IRQ2 AND AL,0FBH OUT 21H,AL ;開中斷MOV Status,2;(2)MOV StopFlag,00H;置暫停位POP DXPOP AXRETStop:PUSH AXPUSH DXMOV AH,2MOV DL,'S'INT 21HMOV StopFlag,01H;置暫停位POP DXPOP AXRET;-LED顯示的邏輯部分-;-SendWord-SendWord:;計算并送出一行16位數據。;這個數據放在AX中。PUS
29、H AXPUSH BXPUSH CXPUSH DXMOV CX,16cicleSendWord:;測試部分PUSH AXPUSH DXMOV DX,8000H;MOV DX,0001HAND DX,AXSHR DX,15ADD DX,30HMOV AH,2HINT 21HPOP DXPOP AX;1:通過8255的c4口把一位數據給G1PUSH AXMOV DX,303HTEST AX,8000H;如果數據位是0的話,將c0置1;如果數據位是1的話,將c0置0JZ SetOne;將c0置0MOV AL,BOUT DX,ALJMP GoOnSetOne:;將C0置1MOV AL,BOUT DX,
30、ALGoOn:;2:以下代碼是為了實現一個"移位脈沖"MOV AL,B;使得C6變成0(低電平);同時不改變數據輸入位OUT DX,ALMOV AL,B;使得C6變成1(高電平);同時不改變數據輸入位OUT DX,ALPOP AXSHL AX,1;SHR AX,1DEC CXJNZ cicleSendWordPOP DXPOP CXPOP BXPOP AXRET;-ShowLeftWard-ShowLeftWard:PUSH SIPUSH DXPUSH CXPUSH BXPUSH AX;1:根據IndexOfWord2;2:MoveStep決定一個位的位移;3:當Stop為
31、0時,每“刷完一次屏',MoveStep要移動+;否則不移動;4:當MoveStep=16時,IndexOfWord2+;5:當IndexOfWord2=NumOfCharacter-1時,IndexOfWord2歸零:因為”索引是從0開始的嘛“。MOV SI,OUTSETMOV AL,32MUL IndexOfWordADD SI,AXMOV CX,16;來一個信號刷一次屏Oneline:;CALL DELAY;Left代碼的關鍵:;(1)CX作為一個臨時的“偏移變量使用”;(2)把四個字節(兩個字)的數據拼接在一起,并把最終結果放在AX中。PUSH CX ;MOV AH,SIMOV
32、 AL,SI+1MOV CL,MoveStepSHL AX,CL;MOV BH,SI+32;下一個字的對應行;MOV BL,SI+33CALL GetNextLeftWord;-取下一個字對應行的十六位,放在BX中MOV CL,16SUB CL,MoveStepSHR BX,CLOR AX,BXPOP CXADD SI,2;換行;testCALL Enter;(1)移位輸出了16位數據CALL SendWord;2)釋放鎖存,先0后1.采用置位、復位控制字MOV AL,BMOV DX,303H;call delayOUT DX,ALMOV AL,BOUT DX,AL;(3)行選-需要測試選中那
33、一行MOV AL,CL;SHL AL,1DEC AL;?MOV DX,302HOUT DX,ALDEC CXJNZ OnelinePOP AXPOP BXPOP CXPOP DXPOP SI;JMP EXITRET;-GetNextLeftWord-GetNextLeftWord:;取下一字的時候,要考慮一種特殊情況,及當SI已經指向最后一個字的時候,下一個16位,應該取自第一個字PUSH AXPUSH SIPUSH DXMOV AL,IndexOfWordINC ALCMP AL,COUNTJNZ GetNextLeftGetFistLeft:MOV DX,OUTSETMOV AL,32MU
34、L IndexOfWordADD DX,AXMOV AX,SISUB AX,DXMOV SI,OUTSETADD SI,AXMOV BH,SIMOV BL,SI+1;TESTPUSH DXMOV DL,' 'MOV AH,2HINT 21HPOPDXMOV AX,BXCALL SendWordJMP EndGetLeftWordGetNextLeft:MOV BH,SI+32;下一個字的對應行MOV BL,SI+33EndGetLeftWord:POP DXPOP SIPOP AXRET;-MoveStepLeft-MoveStepLeft:;1:根據IndexOfWord2以
35、及MoveStep2確定SI。;2:MoveStep決定一個位的位移;3:當Stop為0時,每“刷完一次屏',MoveStep要移動+;否則不移動;4:當MoveStep=16時,IndexOfWord2+;5:當IndexOfWord2=COUNT時,IndexOfWord2歸零:因為”索引是從0開始的嘛“。;當刷完一次屏之后,MoveStep2要變化。;(1)當已經按下暫停建的時候,則不前移動;(2)當移動超過=16的時候PUSH AXCLIMOV AL,01HTEST StopFlag,ALJNZ EndStep;如果等于1,則MoveSteip不前移動INC MoveStepM
36、OV AL,16CMP MoveStep,ALJNZ EndStep;如果EndMoveStep!=16跳過4;MOV MoveStep,00HINC IndexOfWordMOV AL,COUNTCMP IndexOfWord,ALJNZ EndStep;如果IndexOfStep2!=COUNT,則跳過5MOV IndexOfWord,00HEndStep: MOV AL,62H ;發中斷結束命令 MOV DX,0A0H OUT DX,AL ;向從片8259發EOI命令 OUT 020H,AL ;向主片8259發EOI命令 STI ;開中斷 POP AX IRETRET;-ShowUpWa
37、rd-;1:用到變量:IndexOfLine;:(1)用來指示當前刷屏從第幾行開始。(2)范圍是0count*16-1。(3)當超過的時候,應該使其等于00(4)用來對SI初始化;2:SI:;:SI動態變化(顯示十六行數據過程中),當超過的count*16-1這個地方所對應的地址的時候,使其“重新指向開頭”。;ShowUpWard:PUSH SIPUSH DXPUSH CXPUSH BXPUSH AXMOV SI,OUTSETMOV AX,2MUL IndexOfLine ADD SI,AXMOV CX,16;來一個信號刷一次屏AnotherLine:MOV AH,SIMOV AL,SI+1A
38、DD SI,2;(1)換行;(2)如果換行以后>=range=32*count行對應的指針,令其從新指向開頭,并繼續+進行行掃PUSH AX;定義一個臨時變量MOV AX,0MOV AL,32MUL COUNTMOV BX,OUTSETADD BX,AXCMP BX,SIJNZ Continue;如果等于range,則reset;ResetMOV SI,OUTSETContinue:POP AX;TestCALL Enter;(1)移位輸出了16位數據-以AX傳送數據CALL SendWord;2)釋放鎖存,先0后1.采用置位、復位控制字MOV AL,BMOV DX,303H;call
39、delayOUT DX,ALMOV AL,BOUT DX,AL;(3)行選-需要測試選中那一行MOV AL,CL;SHL AL,1DEC AL;?MOV DX,302HOUT DX,ALDEC CX;用于實現16行數據的輸出JNZ AnotherLinePOP AXPOP BXPOP CXPOP DXPOP SI;JMP NOTENDRET;-MoveStepUp-MoveStepUp:PUSH AX;testPUSH DXCLIINC TimesMOV AH,2MOV DL,TimesADD DL,30HINT 21HMOV AH,2MOV DX,IndexOfLineADD DL,30HI
40、NT 21HCMP StopFlag,1JZ ContinueMoveUpADD IndexOfLine,1;(1)換行;(2)如果換行以后>=range=32*count行對應的指針,令其從新指向開頭,并繼續+進行行掃MOV AX,16MUL COUNTCMP AX,IndexOfLineJNZ ContinueMoveUp;ResetMOV IndexOfLine,00HContinueMoveUp: MOV AL,62H ;發中斷結束命令 MOV DX,0A0H OUT DX,AL ;向從片8259發EOI命令 OUT 020H,AL ;向主片8259發EOI命令 STI ;開中斷
41、 POP DX POP AX IRET;JMP NOTENDRET;-輔助函數-INI8253:;對8253C1和C2進行初始化PUSH DXPUSH AXMOV DX,307H;初始化8253,307H為8253控制端口地址MOV AL,B ;計數器1,方式3OUT DX,AL;將初始控制字輸出到控制端口MOV DX,305H;計數器1MOV AX,900;先讀低8位,OUT DX,ALMOV AL,AH;再讀高8位OUT DX,ALMOV DX,307H;再給8253寫控制字MOV AL,B;計數器2,方式3OUT DX,ALMOV DX,306H;計數器2MOV AX,900;先讀低8位
42、,OUT DX,ALMOV AL,AH;再讀高8位OUT DX,ALPOP AXPOP DXRETINI8255:;8255初始化PUSH DXPUSH AX MOV DX,303H;初始化8255 MOV AL,80H;A口輸出 OUT DX,AL;將初始控制字輸出到控制端口MOV DX,300H ;A端口的地址MOV AL,000HOUT DX,AL MOV DX,302H;C口地址 ? MOV AL,000H OUT DX,ALPOP AXPOP DXRETEXIT: MOV AX,2572H ;恢復中斷向量 MOV DX,INT0A_SEG PUSH DS MOV DS,DX MOV
43、DX,INT0A_OFF INT 21H POP DS IN AL,0A1H ;屏蔽IRQ10 OR AL,04H OUT 0A1H,AL IN AL,21H ;屏蔽IRQ2 OR AL,04H OUT 21H,AL MOV AX,4C00H ;程序退出 INT 21H Enter: PUSH AX PUSH DXMOV AH,2MOV DX,0AHINT 21HMOV AH,2MOV DX,0DHINT 21HPOP DXPOP AXRETDELAY PROC PUSH CX PUSH BX MOV BX,0FFFHLOOP2:MOV CX,0FFFHLOOP1:LOOP LOOP1 DEC BX JNZ LOOP2 POP BX POP CX RET DELAY ENDPCODE ENDSEND START6.實驗過程中的主要難點(自己遇到的)及解決思路和辦法主要難點:利用proteus畫電路圖時,知道每個芯片怎么連,但是需要多個芯片同時連接時,之間的連線會有些不確定;在試驗箱上連線時,沒能提前好好布局,連線很混亂很難看清楚,尤其在測試芯片有問題需要更改的時候,很難分清楚;不會編寫核心點陣顯示程序及功能調用子程序;調試改寫程序時,會遇到測試燈和電路不工作的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 艾滋病護理常規
- 種子標簽管理辦法培訓
- 女孩青春期性教育
- 循證護理查房過程
- 深圳來電科技初級java面試題及答案
- 定時任務批量處理java面試題及答案
- 人品挑戰測試題及答案
- 2025年塑鋁穩態管項目申請報告
- 子宮肉瘤超聲診斷
- 中醫護理技術展演
- 2025-2030年中國高導磁芯行業深度研究分析報告
- 2025年 道路運輸企業主要負責人考試模擬試卷(100題)附答案
- 2025至2030中國執法系統行業經營效益及前景運行態勢分析報告
- 2025年全國法醫專項技術考試試題及答案
- 供應鏈公司展會策劃方案
- 南通市崇川區招聘 社區工作者筆試真題2024
- 【藝恩】出游趨勢洞察報告
- 學生因病缺課管理制度
- 四川省成都市西川中學2025年八年級英語第二學期期末檢測模擬試題含答案
- 《Linux系統安全》課件
- 辦公家具產品設計方案
評論
0/150
提交評論