【正文】
1 《 微機原理及應(yīng)用 A》 (052082)( 64學(xué)時)和 《 微機原理及接口技術(shù) A》 (052080) ( 72 學(xué)時) ,實驗技能提高模塊 實驗 指導(dǎo)書 計算機硬件實驗室 2 實驗一 、 鍵盤識別程序設(shè)計 一、目的和要求: 實驗?zāi)康模和ㄟ^該實驗掌握鍵盤識別程序的設(shè)計。 實驗要求: 用 8255 控制鍵盤和 LED 顯示, 要求每按一個鍵,用 LED 數(shù)碼管顯示該鍵的鍵值。 二、試驗連線原理簡圖: 注意: 數(shù)碼管為共陰極接發(fā),段碼為“ 1”,位碼為“ 0”時數(shù)碼管亮。 X 0X 1X 2X 3P C 0P C 1P C 2P C 3Y 0 Y 1Y 2 Y 3Y 4 Y 5P B 0 P B 1P B 2 P B 3P B 4 P B 53 E 0 E3 E 0 D3 E 0 B3 E 0 73 D 0 E 3 B 0 E 3 7 0 E 2 F 0 E3 D 0 7 3 B 0 7 3 7 0 72 F 0 7 1 F 0 71 F 0 D12 3 C4 56BAD7 8 91 91 81 71 62 22 12 0+=清“ 0 ”O(jiān) F E 三、主要試驗步驟: 根據(jù)實驗要求設(shè)計實驗原理圖,并標明端口地址。 畫出程序框圖。 根據(jù)框圖編寫程序。 根據(jù)原理圖連線,并確保連線正確,接觸可靠。 輸入程序進行調(diào)試,實現(xiàn)實驗題目要求。 寫出實驗報告。 3 / C S 5 5P B 08 2 5 5P B 5...L hY 5P C 0P C 3...X 0X 3P A 0...L aP A 7Y 02 0 0 H~2 0 3 HA 2 A 1 A 0地 址 譯 碼 四、試驗參考程序: title code segment assume cs:code,ds:code start: jmp start1 buff db 1,2,3,4,5,6 tablek dw 3e07h,3e0bh,3d0bh,3b0bh,3e0dh,3d0dh,3b0dh,3e0eh,3d0eh,3b0eh dw 370eh,370dh,370bh,3707h,3b07h,3d07h,2f07h,2f0bh,2f0dh,2f0eh,1f07h,1f0bh,1f0dh table db 3fh,6,5bh,4fh,66h,6dh,7dh,7,7fh,6fh,46h,40h,48h,00 x dw 0 y dw 0 f db 0 n db 0 c db 0 addf db 0 subf db 0 start1: mov ax,cs mov ds,ax again: mov dx,203h mov al,10001001b out dx,al call led call key cmp f,1 4 jne again cmp bl,9 jle d_proce jmp again d_proce:call bshift mov byte ptr[buff+5],bl jmp again key proc mov dx,203h mov al,10001001b 。c_in,b_out out dx,al mov f,0 mov dx,201h mov al,0 out dx,al mov dx,202h in al,dx and al,0fh cmp al,0fh je k_exit mov cx,6000 loop $ 。10ms in al,dx and al,0fh push ax mov dx,203h mov al,10000010b 。b_in,c_out out dx,al pop ax mov bl,al mov dx,202h out dx,al mov dx,201h in al,dx and al,3fh mov bh,al lea si,tablek mov cx,23 mov ah,0 nk: cmp bx,[si] je found inc ah add si,2 loop nk 5 found: mov al,0 mov dx,202h out dx,al mov dx,201h in al,dx and al,3fh cmp al,3fh jne found mov cx,6000 loop $ mov f,1 mov bl,ah k_exit: ret key endp led proc lea si,buff mov ah,0dfh l_re1: mov al,[si] lea bx,table xlat mov dx,200h out dx,al mov al,ah mov dx,201h out dx,al mov cx,300 。1ms loop $ inc si ror ah,1 jc l_re1 mov al,0 mov dx,200h out dx,al ret led endp bshift proc mov cx,5 lea si,buff s: mov al,byte ptr[si+1] mov byte ptr[si],al inc si loop s ret bshift endp code