實驗三:並行介面晶片8255A的應用
實驗器材:
所需器材
電路圖:模擬電路圖
《微機原理介面與技術》(8086彙編)期末考試、考研常見考題、習題,題型彙總、知識點總結、專周(十二)之並行介面晶片8255A的應用
程式原始碼:;author:liuxianfei0810IO3 EQU 0030HCODE SEGMENT 'CODE' ASSUME CS:CODE,DS:CODEMAIN PROC FARSTART:MOV AX,CODE MOV DS,AX ;author:liuxianfei0810L: MOV AL,10000001B; D7:置放向字1有效 D6-5:方式0 D4:埠A輸出; D3:埠C上半部分輸出 D2:方式0 D1:埠B輸出 D0:埠C下半部分輸入; 埠C上半部分 PC7-4 MOV DX,IO3+6;0110 資料匯流排->控制字暫存器 配合OUT指令 OUT DX,AL ;author:liuxianfei0810 MOV DX,IO3+4;0100 資料匯流排->埠C 配合OUT指令 MOV AL,00 OUT DX,AL;埠C上半部分輸出0000即:PC7-4=0000 ;author:liuxianfei0810 ;MOV DX,IO3+4;0100 埠C->資料匯流排 配合IN指令NOKEY:IN AL,DX ;採集埠C低 四位資料 AND AL,0FH CMP AL,0FH ;判斷是否有按鍵按下 JZ NOKEY CALL DELAY10;延時消抖 ;author:liuxianfei0810 IN AL,DX ;進一步 判斷是否有按鍵按下 MOV BL,0 MOV CX,4 ;author:liuxianfei0810LP1: SHR AL,1;右移一位,將最低位移到C標誌中 JNC LP2 ;判斷C標誌,檢測哪個按鍵按下,檢測到跳轉到LP2 INC BL ;狀態標誌加一,用於後續判斷 LOOP LP1 ;沒檢測到按鍵,繼續檢測 ;author:liuxianfei0810LP2: MOV AL,10001000B; D7:置放向字1有效 D6-5:方式0 D4:埠A輸出; D3:埠C上半部分輸入 D2:方式0 D1:埠B輸出 D0:埠C下半部分輸出; 埠C上半部分 PC7-4 MOV DX,IO3+6;0110 資料匯流排->控制字暫存器 配合OUT指令 OUT DX,AL ;author:liuxianfei0810 MOV DX,IO3+4;0100 資料匯流排->埠C 配合OUT指令 MOV AL,00 ;埠C下半部分輸出 0000即:PC3-0=0000 OUT DX,AL ;author:liuxianfei0810 IN AL,DX ;採集埠C高 四位資料 AND AL,0F0H CMP AL,0F0H ;判斷是否有按鍵按下 JZ L ;ZF=1 說明無按鍵按下。跳轉到L處,重新檢測按鍵 ;author:liuxianfei0810 MOV BH,0 MOV CX,4 ;author:liuxianfei0810LP3: SHL AL,1 ; 左移一位,將最高位送到C中 JNC LP4 ;判斷C標誌,檢測哪個按鍵按下,檢測到跳轉到LP2 INC BH LOOP LP3 ;author:liuxianfei0810LP4: MOV AX,4 MUL BH ADD AL,BL MOV DX,IO3+2;0010 資料匯流排->埠B 配合OUT指令 OUT DX,AL ;author:liuxianfei0810 MOV BX,OFFSET SEGDATA XLAT MOV DX,IO3;0000 資料匯流排->埠A 配合OUT指令 OUT DX,AL ;author:liuxianfei0810 MOV CX,0J1: LOOP J1;65536*17/fclk JMP L RETMAIN ENDP;author:liuxianfei0810;延時子程式DELAY10 PROC MOV CX,882 LOOP $;一個loop執行週期17個時鐘週期 RETDELAY10 ENDP;共陰數碼管SEGDATA DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HCODE ENDS END START
(有關8255A晶片講解見後文)
最新評論