xxxx大学计算机学院实验报告一、实验内容与要求1.1 实验内容(1)8255方式0实验从8255端口C输入数据,再从端口A输出(2)8255方式1输出实验编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断服务:依次输出01H,02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。
(3)8255方式1输入实验编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
1.2 实验要求(1)8255方式0实验实验预期效果:拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。
改变开关的状态,灯的亮暗也随之改变。
(2)8255方式1输出实验实验预期效果:按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。
中断8次结束。
(3)8255方式1输入实验实验预期效果:每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
二、实验原理与硬件连线2.1 实验原理CPU通过指令将控制字写入8255A的控制端口设置它的工作方式。
8255A有两个控制字:方式选择控制字和端口C置位/复位控制字,这两个控制字均写入同一个控制端口地址(端口选择先A1A0=11)8255A有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传输方式。
方向选择控制字用于设置各端口的工作方式。
方式0称为基本输入/输出方式。
该方式下,端口A、端口B、端口C的高4位和端口C的低4位均可独立地设为输入或输出数据端口。
在方式0时,8255A与CPU时间没有应答联络信号,可用于无条件传送或查询方式数据传送场合。
采用查询方式传送时,可以将端口A、端口B 作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。
方式1称为选通输入/输出方式。
该方式下,端口A、端口B可作为数据传输口,而端口C 的一些引脚规定作为端口A、端口B的联络控制信号,有固定的搭配规定。
在方式1时,CPU和8255A之间有应答联络信号,所以采用中断方式或程序查询方式传送数据。
当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。
当端口A作为方式1输出时,端口C的PC7、PC6、PC3作为端口A的联络控制信号。
状态字通过读端口C获得。
需要强调,从端口C读出的状态字与端口C的外部引脚的状态无关。
2.2 硬件连线(1)8255方式0实验1连接实验电路,8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路L0~L7U18 8255K0 K1K5L0L1L2L3L4L5L6L7图2-2-1 实验一接线(2)8255方式1输出实验变成实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断请求,让CPU进行一次中断服务:一次输出01H、02H、04H、08H、10H、20H、40H、80H使L0~L7依次发光,中断8次结束。
图2-2-2 8255方式1输出实验电路连接图(3)8255方式1输入实验每按一次按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,执行中断8次结束程序。
图2-2-3 8255方式1输入实验三、设计思路、步骤和程序流程图3.1 设计思路芯片:8253A(1)8255方式0实验为了传递外部信息,可以把C口作为输入端,接逻辑电平开关,用控制逻辑电平开关的方法来改变输入的数据。
端口A作为数据的输出端,控制LED灯的亮暗。
高电平输出时,LED灯亮起;输出低电平时,LED灯暗灭。
每次循环判断键盘有无键按下,若有,结束程序;若没有,继续输入输出数据。
(2)8255方式1输出实验用PC3、PC6作为端口A的联络信号,INTE的设置是通过端口C的置位/复位命令字来实现的。
将PC6置1,则INTEA置1,端口A允许发出中断请求信号。
PC3,PC6清0,则禁止中断。
为了实现LED灯依次发光的特效,可以这样控制数据端:对控制值每一次循环逻辑左移一位,表示该位置高电平,其余位置零。
送至相应端口,即可实现依次亮起LED灯的效果。
(3)8255方式1输入实验INTE的设置是通过端口C的置位/复位命令字来实现的。
将PC4置1,则INTEA置1,端口A允许发出中断请求信号。
PC4,PC2清0,则禁止中断。
中断服务程序:通过A口读取逻辑电平预置的二进制码,进行输出处理。
若该数大于9,则需除以10,输出高位后再输出低位。
若该数小于10,则可以直接输出(加30H)显示。
判断计数器的值,若为0,结束该程序。
若不是,中断返回。
3.2 实验步骤(1)8255方式0实验1.连接实验电路图。
8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路L0~L7。
2.写方式控制字10001001B:A口方式0输出,C口输入3.读取C口预置的数据,送A口输出4.判断是否有键按下,若有,终止程序。
若无,继续。
(2)8255方式1输出实验1.按照电路图连线。
2.设置中断向量,写中断屏蔽字,PC6置1,开中断。
3.设置方式控制字10100000B:设置A口方式1输出4.等待硬中断。
A口中断输出,BL左移一位。
5.判断CF是否位1。
若是,关中断,结束程序。
若不是,中断返回。
(3)8255方式1输入实验1.按照电路图连线。
2. 设置中断向量,写中断屏蔽字,PC4置1,开中断3.设置方式控制字10110000B ;设置A口方式1输入4.等待硬中断。
A口中断输入,送输出处理5.判断。
若数据大于10,除以10后,输出高位再输出低位。
否则,直接输出。
6.判断。
计数器若大于0,中断返回。
否则,关中断,结束程序。
3.3 程序流程图图3-3-1 8255方式0实验图3-3-2 8255方式1输出实验(主程序)图3-3-3 8255方式1输出实验(中断服务程序)图3-3-4 8255方式1输入实验(主程序)图3-3-5 8255方式1输入实验(中断服务程序)四、程序清单与执行结果4.1 程序清单(1)8255方式0实验DA TA SEGMENTDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV DX,28BHMOV AL,10001001B ;A口方式0输出,C口输入OUT DX,AL ;方式字送控制端口LIGHT:MOV AH,6MOV DL,0FFHINT 21HMOV DX,28AHIN AL,DX ;读取C口数据MOV DX,288HOUT DX,AL ;输出数据至A口JMP LIGHTCODE ENDSEND START(2)8255方式1输出实验DA TAS SEGMENTDA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKSSTART:CLIMOV AX,SEG LIGHT ;设置中断向量段地址MOV DS,AXMOV DX,OFFSET LIGHT ;设置中断向量偏移地址MOV AX,250BH ;中断入口地址送中断向量表INT 21HIN AL,21H ;读中断屏蔽字AND AL,0F7H ;开放8259A的IR3中断OUT 21H,ALMOV AL,10100000B ;设置A口方式1输出MOV DX,28BHOUT DX,ALMOV AL,0DH ;置位使PC6=1OUT DX,ALMOV BL,1STI ;开中断WIN:JMP WIN ;等待硬中断LIGHT:MOV DX,288HMOV AL,BLOUT DX,AL ;将A口的数据输出MOV AL,20H ;关中断OUT 20H,ALSHL BL,1 ;计数器左移JNC NEXT ;未进位就继续中断IN AL,21H ;关闭中断OR AL,0F7HOUT 21H,ALMOV AH,4CHINT 21NEXT:IRETCODES ENDSEND START(3)8255方式1输入实验DA TAS SEGMENTDA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:CLIMOV AX,SEG LIGHT ;设置中断向量段地址MOV DS,AXMOV DX,OFFSET LIGHT ;设置中断向量偏移地址MOV AX,250BH ;中断入口地址送中断向量表INT 21HIN AL,21H ;读中断屏蔽字AND AL,0F7H ;开放8259A的IR3中断OUT 21H,ALMOV AL,10110000B ;设置A口方式1输入MOV DX,28BHOUT DX,ALMOV AL,09 ;置位使PC4=1OUT DX,ALMOV CX,8STI ;开中断WIN:JMP WIN ;等待硬中断LIGHT:MOV DX,288HIN AL,DX ;将A口的数据输入MOV DL,ALMOV AH,2INT 21HMOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HMOV AL,20H ;关中断OUT 20H,ALDEC CX ;计数器减一JNZ NEXT ;不为零就继续IN AL,21H ;关闭中断OR AL,8OUT 21H,ALMOV DX,28BHOUT DX,ALMOV AH,4CHINT 21HNEXT:IRETCODES ENDSEND START4.2 执行结果(1)8255方式0实验拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。
改变开关的状态,灯的亮暗也随之改变。
图4-1 8255方式0实验连线图(2)8255方式1输出实验按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。
中断8次结束。
图4-2-1 8255方式1输出实验连线图(3)8255方式1输入实验每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
图4-3-1 8255方式1输入实验连线图图4-3-2 屏幕输出结果五、程序调试说明和实验感想5.1 调试说明5.2 实验感想与收获5.3 实验特色5.4 展望。