实验指导书.docx
《实验指导书.docx》由会员分享,可在线阅读,更多相关《实验指导书.docx(11页珍藏版)》请在冰豆网上搜索。
实验指导书
实验三 中断控制实验
一、实验目的
⒈ 掌握8259中断控制器的接口方法。
⒉ 掌握8259中断控制器的应用编程。
二、实验内容
利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。
三、实验接线图
图6-6
四、编程指南
⑴ 8259芯片介绍
中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。
即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。
⑵ 本实验中使用3号中断源IR3,“
”插孔和IR3相连,中断方式为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示“8259——good”。
如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。
五、实验程序框图
IR3中断服务程序:
IR7中断服务程序:
六、实验步骤
1、按图6-6连好实验线路图。
⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“
”插孔和8259的3号中断IR3插孔相连,“
”端初始为低电平;⑷8259的CS端接FF80H孔;
2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入12D0,按EXEC键,系统显示8259-1。
3、拨动AN开关按钮,按满l0次显示good。
七、实验程序清单
CODESEGMENT;H8259.ASM
ASSUMECS:
CODE
INTPORT1EQU0FF80H
INTPORT2EQU0FF81H
INTQ3EQUINTREEUP3
INTQ7EQUINTREEUP7
PAEQU0FF20H;字位口
PBEQU0FF21H;字形口
PCEQU0FF22H;键入口
ORG12D0H
START:
JMPSTART0
BUFDB?
?
?
?
?
?
intcntdb?
data1:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0:
CLD;递加
CALLBUF1;写显示缓冲初值
CALLWRINTVER;写中断向量
MOVAL,13H;写ICW1
MOVDX,INTPORT1
OUTDX,AL
MOVAL,08H;写ICW2
MOVDX,INTPORT2
OUTDX,AL
MOVAL,09H;写ICW4
OUTDX,AL
MOVAL,0F7H;写OCW1
OUTDX,AL
MOVintcnt,01H;中断计数初值
STI;开中断
WATING:
CALLDISP;DISP8259-1
JMPWATING;循环显示
WRINTVER:
MOVAX,0H;写中断向量子程序
MOVES,AX
MOVDI,002CH;IR3中断向量地址
LEAAX,INTQ3;IR3中断服务地址
STOSW;写中断服务地址偏移量
MOVAX,0000h;写中断服务段地址
STOSW
MOVDI,003CH;IR7中断向量地址
LEAAX,INTQ7;IR7中断服务地址
STOSW;写中断服务地址偏移量
MOVAX,0000h;写中断服务段地址
STOSW
RET
INTREEUP3:
CLI;IR3中断服务
pushax;压栈保护现场
pushbx
pushcx
pushdx
MOVAL,INTCNT;
CALLCONVERS;拆送缓冲区
MOVBX,OFFSETBUF;077BH
MOVAL,10H
MOVCX,05H
INTRE0:
MOV[BX],AL;高五位缓冲区送熄灭码
INCBX
LOOPINTRE0
MOVAL,20H;中断返回码
MOVDX,INTPORT1
OUTDX,AL
ADDINTCNT,01H
CMPINTCNT,06H
JNAINTRE2;中断次数小于5次继续
CALLBUF2;中断次数结束DISP:
good
INTRE1:
CALLDISP
JMPINTRE1
CONVERS:
ANDAL,0FH;拆送缓冲区
MOVBX,offsetbuf;077AH
MOV[BX+5],AL
RET
INTRE2:
MOVAL,20H
MOVDX,INTPORT1
OUTDX,AL
popdx
popcx
popbx
popax
STI
IRET;中断返回
INTREEUP7:
CLI;IR7中断服务
MOVAL,20H;中断返回码
MOVDX,INTPORT1
OUTDX,AL
callbuf3;disp:
err
INTRE3:
CALLDISP;循环显示:
ERR
JMPINTRE3
DISP:
MOVAL,0FFH;显示子程序,5ms
MOVDX,PA
OUTDX,AL
MOVCL,0DFH;20H
MOVBX,OFFSETBUF
DIS1:
MOVAL,[BX]
MOVAH,00H
PUSHBX
MOVBX,OFFSETDATA1
ADDBX,AX
MOVAL,[BX]
POPBX
MOVDX,PB
OUTDX,AL
MOVAL,CL
MOVDX,PA
OUTDX,AL
PUSHCX
DIS2:
MOVCX,00A0H
LOOP$
POPCX
CMPCL,0FEH;01H
JZLX1
INCBX
RORCL,1;SHRCL,1
JMPDIS1
LX1:
MOVAL,0FFH
MOVDX,PB
OUTDX,AL
RET
BUF1:
MOVBUF,08H;写”8259-1”
MOVBUF+1,02H
MOVBUF+2,05H
MOVBUF+3,09H
MOVBUF+4,17H
MOVBUF+5,01H
RET
BUF2:
MOVBUF,09H;写”good”
MOVBUF+1,00H
MOVBUF+2,00H
MOVBUF+3,0dH
MOVBUF+4,10H
MOVBUF+5,10H
RET
BUF3:
MOVBUF,0eH;写”err”
MOVBUF+1,18H
MOVBUF+2,18H
MOVBUF+3,10H
MOVBUF+4,10H
MOVBUF+5,10H
RET
CODEENDS
ENDSTART
实验四 可编程定时器/计数器实验
一、实验目的
⒈ 学会8253芯片和微机接口的原理和方法。
⒉.掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容
用8253的0通道工作在方式3,产生方波。
三、实验接线图
图6-5
四、编程指南
⒈ 8253芯片介绍
8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。
8253的功能用途:
⑴ 延时中断⑸ 实时时钟
⑵ 可编程频率发生器⑹ 数字单稳
⑶ 事件计数器⑺ 复杂的电机控制器
⑷ 二进制倍频器
2,8253的六种工作方式:
⑴ 方式0:
计数结束中断 ⑷ 方式3:
方波频率发生器
⑵ 方式l:
可编程频率发生 ⑸ 方式4:
软件触发的选通信号
⑶ 方式2:
频率发生器 ⑹ 方式5:
硬件触发的选通信号
五、实验程序框图
六、实验步骤
⒈ 按图6-5连好实验线路⑴ 8253的GATE0接+5V。
⑵ 8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频率源为8.0MHZ,T→8.0MHZ。
⒉运行实验程序在系统提示符“P.”状态下,按SCAL键,输入1290,按EXEC键。
用示波器测量8253的OUT0输出插孔有方波产生。
七、实验程序清单
CODESEGMENT;H8253.ASM
ASSUMECS:
CODE
ORG1290H
START:
JMPTCONT
TCONTROEQU0043H
TCON0EQU0040H
TCONT:
MOVDX,TCONTRO;8253控制口
MOVAL,36H;命令字,计数器0,先低后高,方式3,HEX
OUTDX,AL;写命令字
MOVDX,TCON0;T0口
MOVAL,00H;计数器低位值
OUTDX,AL
MOVAL,04H;计数器高位值
OUTDX,AL
JMP$
CODEENDS
ENDSTART