微原硬件实验
图五硬件连接图
第16页
微原硬件实验
开始写入8255的控制字,C口高四位输入,低四位输出C口高四位输入N是否检测到键盘Y写入8255的控制字,C口高四位输入,低四位输出读入C口低四位N是否检测到键盘Y将低四位和高四位的组合放在TMP中判断按下的是0~F中哪个设置参数,调用输出0的子程序设置参数,调用输出1的子程序设置参数,调用输出E的子程序设置参数,调用输出F的子程序电脑键盘是否按下Y返回DOS
图六软件流程图
四、源程序及注释
(一)实验三:
CODE SEGMENT ASSUME CS:CODE BEGIN:MOV AL,89H MOV DX,28BH ;DX指向地址为28BH的地方
第17页
微原硬件实验
OUT DX,AL ;写控制字将AL寄存器中的内容输出到地址为DX的端口,即28BH的端口 MOV DX,28AH ;C口输入数据 IN AL,DX MOV DX,288H ;A口输出数据 OUT DX,AL MOV AH, 0BH ;检测有没有按下键盘,如果按下则停止 INT 21H OR AL,AL JZ BEGIN ;如果没有按键,则循环执行 MOV AX,4C00H INT 21H ;返回DOS CODE ENDS END BEGIN
(二)实验四:
SMG MACRO WEI,DUAN ;在数码管上显示的宏
MOV DX,288H MOV AL,DUAN ;C端口输出段码 OUT DX,AL MOV DX,28aH ;A端口输出位码 MOV AL,WEI OUT DX,AL MOV AL,00H OUT DX,AL ENDM
CODE SEGMENT ASSUME CS:CODE BEGIN: MOV DX,28BH MOV AL,80H OUT DX,AL ;写控制字,设置A端口输出,C端口输出 SMG 08H,06H ;调用宏,输出学号 SMG 04H,4FH
第18页
微原硬件实验
SMG 02H,4FH SMG 01H,7FH MOV AH, 0BH INT 21H OR AL,AL JZ BEGIN MOV AX,4C00H INT 21H CODE ENDS END BEGIN
;检测是否有按键按下
;如果没有按键,则继续运行
(三)实验五:
DATA SEGMENT TMP DB ? TMP1 DB ? TMP2 DB ? A DB ? a0 DB 3FH a1 DB 06H ;储存每个音符的七段数码管显示码 a2 DB 5BH a3 DB 4FH a4 DB 66H a5 DB 6DH a6 DB 7DH a7 DB 07H a8 DB 7FH a9 DB 6FH aa DB 77H ab DB 7CH ac DB 39H ad DB 5EH ae DB 79H af DB 71H DATA ENDS
STACK SEGMENT STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT
第19页
微原硬件实验
ASSUME DS:DATA,CS:CODE,SS:STACK
RUN PROC MOV DX,289H ;设置位选通信号,用8255的B口 MOV AL,01H OUT DX,AL MOV DX,288H ;设置段选通信号,用8255的A口 MOV AL,A OUT DX,AL MOV AL,0 OUT DX,AL RET RUN ENDP
BEGIN: MOV AX,DATA MOV DS,AX
;读入c口的高四位输入 MOV DX,28BH ;设置8255的控制字 MOV AL,10001000B ;设置A口出,C口高4位输入,低4位输出 OUT DX,AL
GOON1: MOV DX,28AH IN AL,DX MOV TMP1,AL CMP AL,00F0H JZ GOON1
;读入c口的低四位输入 MOV DX,28BH MOV AL,10000001B ;设置8255控制字,C口低4位输入,高4位输出 OUT DX,AL
GOON2:MOV DX,28AH IN AL,DX MOV TMP2,AL CMP AL,000FH JZ GOON2 OR AL,TMP1 MOV TMP,AL ;组合高位和低位放在TMP
第20页