计算机输入输出系统接口实验报告姓名:学号:东南大学计算机科学与工程学院、软件学院School of Computer Science & EngineeringCollege of Software EngineeringSoutheast University二0 16 年 6 月实验一环境熟悉与I/O地址译码一、实验目的掌握I/O地址译码电路的工作原理。
二、实验内容将接口实验包中所带的EX-138.DSN文件用ISIS 7打开。
改变A9~A3的接线方法,从而得到Y0;388H~38FH;Y1:398H~39FH; ……;Y7:3F8H~3FFH。
并修改上一问的程序,以同样使得Y4#有效。
1)源程序.8086.MODEL SMALL.stack.dataaddress word 3c8h.codestart:mov ax,@datamov ds,axmov dx,addressmov al,0out dx,aljmp $END start2)电路原理图(138译码部分)3)运行结果贴图(138译码及上面两个273的输出)实验二可编程中断控制器8259一、实验目的1.掌握8259的基本工作原理和编程方法。
2.深入了解中断的概念和实地址模式下中断处理程序的编写方法。
二、实验内容将接口实验包中所带的EX-8259.DSN文件用ISIS 7打开。
按手册接线并执行。
运行结果贴图(执行三次中断,每次中断后的8086寄存器的截图)……实验三可编程定时器计数器8253一、实验目的掌握8253的基本工作原理、编程方法及其应用。
二、实验内容一)研究定时计数器(选)1)源程序.8086.MODEL SMALL.DATA.CODESTART:MOV AX,@DATAMOV DS,AXMOV DX,226HMOV AL,00010000B ;T/C0,least significant byte only,mode0,BinaryOUT DX,ALMOV AL,5 ;Initial count=5MOV DX,220HOUT DX,ALMOV AH,4CHINT 21HEND START2)讨论题如果把方式0改成方式1,电路不动,则按下BUTTON后,计数器值会否减1?为什么?不会,因为方式1下GATE=1或0没有影响,只有GATE的上升沿才会触发计数器开始计数,而该电路中GATE时钟为1,所以计数器不会减1.二)信号发生器1)源程序.8086.MODEL SMALL.DATA.CODESTART:MOV AX,@DATAMOV DS,AX;Initailize T/C0MOV DX,226HMOV AL,00110110B ;T/C0,least significant byte first,mode3,binaryOUT DX,ALMOV DX,220HMOV AX,1000 ;Initial count=1000OUT DX,ALMOV AL,AHOUT DX,AL;Initialize T/C1MOV DX,226HMOV AL,01110110B ;T/C1,least significant byte first,mode3,binaryOUT DX,ALMOV DX,222HMOV AX,1000 ;Initial count=1000OUT DX,ALMOV AL,AHOUT DX,AL;Initialize T/C2MOV DX,226HMOV AL,10010110B ;T/C2,least significant byte only,mode3,binaryOUT DX,ALMOV DX,224HMOV AL,5 ;Initial count=5OUT DX,ALMOV AH,4CHINT 21HEND START2)接线原理图3)编程与调试心得(遇到的问题和解决的办法,以及获得的收获)(1)1秒为周期,占空比1:2的方波,现将1MHz的方波输入CLK0,设C/T0计数值为1000 工作方式为方式3,则OUT0输出的信号为1KHz,占空比1:2的方波,再将OUT0输入CLK1,设C/T1计数值为1000,工作方式为方式3,则OUT1输出的信号为1Hz,占空比1:2的方波。
(2)产生5秒为周期,占空比为2:5的方波时,如果只将OUT1输入CLK2,C/T2计数初始值为5,工作方式为方式3,则OUT2输出的信号为5秒为周期,占空比为3:5的方波,要产生占空比为2:5的方波,还需要在OUT2上加一个非门。
(3)产生5秒为周期的波形,其中前2秒频率为1KHz的方波,后3秒为低电平,该波形可以看出5秒为周期,占空比为2:5的方波和1KHz的方波的叠加,因此只需将OUT0和OUT2#相与即可。
实验五七段数码管实验一、实验目的掌握数码管显示数字的原理,进一步复习8255的应用。
二、实验内容1.静态显示(选)。
1)源程序.8086.MODEL SMALL.DATABUFF BYTE 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H .CODESTART:MOV AX,@DATAMOV DS,AXMOV DX,206HMOV AL,10001001BOUT DX,ALAGAIN:MOV DX,204HIN AL,DXNOT ALMOV BX,OFFSET BUFFXLATMOV DX,200HOUT DX,ALJMP AGAINEND START2)接线原理图3)运行结果截图2.动态显示。
1)源程序.8086.MODEL SMALL.DATAVAR BYTE ?BUFF BYTE 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H.CODESTART:MOV AX,@DATAMOV DS,AXMOV DX,206H ;Address of 82C55 is 200H,202H,204H,206HMOV AL,10001001B ;Port A in mode0,ouput,Port B in mode 0,output,Port OUT DX,AL ;C in mode 0,inputAGAIN:MOV DX,204H ;Get the set of switch from port CIN AL,DXNOT ALMOV VAR,AL ;Store the set of switch in 'VAR'MOV DX,202HMOV AL,02H ;Set S1=1,output tens digitOUT DX,ALMOV CL,4MOV AL,VAR ;shift AL 4-bit leftSHR AL,CLMOV BX,OFFSET BUFFXLATMOV DX,200HOUT DX,ALMOV CX,64HLOOP $ ;Cause a delay before display units digitMOV DX,202HMOV AL,01H ;Set S2=1,output units digitOUT DX,ALMOV AL,VARAND AL,0FHMOV BX,OFFSET BUFFXLATMOV DX,200HOUT DX,ALMOV CX,64HLOOP $ ;Cause a delay before the circulationJMP AGAINEND START2)接线原理图3)运行结果截图4)编程与调试心得(遇到的问题和解决的办法,以及获得的收获)编程心得:输出十位数段码与输出个位数段码之间需要产生延迟,在程序中可以通过 MOV CX,64H LOOP $来实现。
XLAT是查表指令:以DS:[BX+AL]为地址,提取存储器中的一个字节再送入AL。
将寄存器左移或者右移时,移动的位数要存在CL寄存器中实验六交通灯控制实验一)实验目的通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用和中断的使用。
二)交通灯变化规律十字路口交通灯的变化规律要求1)南北路口的绿灯、东西路口的红灯同时亮10秒,然后2)南北路口的黄灯闪烁2次(闪烁周期2秒),同时东西路口的红灯继续亮,然后3)南北路口的红灯、东西路口的绿灯同时亮10秒,然后4)南北路口的红灯继续亮,同时东西路口的黄灯2次(闪烁周期2秒),然后5)转1重复。
三)实验内容1.红黄绿三色交通灯控制。
将接口实验包中所带的EX-825X-1.DSN文件用ISIS 7打开,将D6、D5、D4作为南北路口的交通灯与PA7、PA6、PA5相连;D3、D2、D1作为东西路口的交通灯与PA2、PA1、PA0相连(方式0)。
利用8253产生1秒的中断信号(系统已经为CLK0提供了一个1MHz的时钟输入),在中断处理程序中用程序处理10秒延迟和两次黄灯闪烁的问题。
编程使六个灯按交通灯变化规律燃灭。
1)源程序.8086.MODEL SMALL.DATACOUNT BYTE 10STATE BYTE 1.CODESTART:MOV AX,@DATAMOV DS,AX;Initialize 8259AMOV AL,13H ;ICW1,Edge triggered,single,ICW4 is neededMOV DX,210HOUT DX,ALMOV AL,60H ;ICW2,the interrupt vector is 60HMOV DX,212HOUT DX,ALMOV AL,00000001H ;ICW4OUT DX,AL;Initialize 8253AMOV AL,00110110B ;T/C0,least significant byte first,mode3,BinaryMOV DX,226HOUT DX,ALMOV AX,1000 ;conut0=1000MOV DX,220HOUT DX,ALMOV AL,AHOUT DX,ALMOV AL,01110110B ;T/C1,least significant byte first,mode3,Binary MOV DX,226HOUT DX,ALMOV AX,1000 ;count1=1000MOV DX,222HOUT DX,ALMOV AL,AHOUT DX,AL;Initialize 82C55MOV AL,10000000BMOV DX,206HOUT DX,AL;Initailize Interrupt Vector TableMOV AX,@DATAMOV DS,AXCLIMOV AX,0MOV ES,AXMOV SI,0MOV CX,255l: MOV AX,OFFSET SERVICEMOV ES:[SI],AXMOV AX,SEG SERVICEMOV ES:[SI+2],AXADD SI,4LOOP lMOV AX,OFFSET SERVICEMOV ES:[SI],AXMOV AX,SEG SERVICEMOV ES:[SI+2],AXSTIJMP $SERVICE PROC ;Interrupter handlerPUSH AXPUSH DXPUSH DSSTIMOV AX,@DATAMOV DS,AXMOV AL,STATENEXT3:CMP AL,1 ;State S1JNZ NEXTMOV DX,200HMOV AL,10000001B ;North and south direction of green lightOUT DX,AL ;West and east direction of red lightMOV AL,COUNTDEC ALMOV COUNT,ALCMP AL,0MOV COUNT,AL ;If COUNT=0,COUNT=4,STATE=2JNZ EXITMOV AL,4MOV COUNT,ALMOV AL,2MOV STATE,ALJMP EXITNEXT: CMP AL,2 ;State S2JNZ NEXT1MOV AL,COUNTTEST AL,01H ;North and south direction of yellow light flashingJZ YELLOW1 ;West and east direction of red lightMOV DX,200HMOV AL,00000001BOUT DX,ALJMP RESUME1YELLOW1:MOV DX,200HMOV AL,01000001BOUT DX,ALRESUME1:MOV AL,COUNTDEC ALMOV COUNT,ALCMP AL,0 ;If COUNT=0,COUNT=10,STATE=3JNZ EXITMOV AL,10MOV COUNT,ALMOV AL,3MOV STATE,ALJMP EXITNEXT1:CMP AL,3 ;State S3JNZ NEXT2MOV DX,200HMOV AL,00100100B ;North and south direction of red lightOUT DX,AL ;West and east direction of green lightMOV AL,COUNTDEC ALMOV COUNT,ALCMP AL,0 ;If COUNT=0,COUNT=4,STATE=4JNZ EXITMOV AL,4MOV COUNT,ALMOV AL,4MOV STATE,ALJMP EXITNEXT2:CMP AL,4 ;State S4JNZ NEXT3MOV AL,COUNTTEST AL,01HJZ YELLOW2 ;North and south direction of red lightMOV DX,200H ;West and east direction of yellow light flashingMOV AL,00100000BOUT DX,ALJMP RESUME2YELLOW2:MOV DX,200HMOV AL,00100010BOUT DX,ALRESUME2:MOV AL,COUNTDEC ALMOV COUNT,ALCMP AL,0 ;If COUNT=0,COUNT=10,STATE=1JNZ EXITMOV AL,10MOV COUNT,ALMOV AL,1MOV STATE,ALEXIT: CLIMOV AL,20H ;Send EOIMOV DX,210HOUT DX,ALPOP DSPOP DXPOP AXIRETSERVICE ENDPEND START2)接线原理图3)运行结果截图4)编程与调试心得(遇到的问题和解决的办法,以及获得的收获)编程心得:在实现S2和S4的黄灯闪烁时,在每次调用中断处理程序时通过判断COUNT的奇偶性,如果COUNT是偶数,则使黄灯点亮,如果COUNT是奇数,则使黄灯熄灭2.带倒计时的交通灯控制(选):将接口实验包中所带的EX-825X-2.DSN文件用ISIS 7打开,将D6、D5、D4作为南北路口的交通灯与PA7、PA6、PA5相连;D3、D2、D1作为东西路口的交通灯与PA2、PA1、PA0相连(方式0)。