实验五 8259A中断控制器实验
微机接口实验报告8259中断控制器实验
实验六8259中断控制器实验1 实验目的(1) 学习中断控制器8259的工作原理。
(2) 掌握可编程控制器8259的应用编程方法。
3 实验内容编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。
4 实验原理1. 8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259A 的内部结构和引脚如图6-1所示。
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
2.8259寄存器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表6-1所示。
图6-1 8259内部结构和引脚图图6-2(a) ICW1格式图6-2(b) ICW2格式图6-2(c) ICW3格式图6-2(d) ICW4格式图6-3 OCW命令字格式3. PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表6-2示。
8259A的单极中断控制和ad转换
8259A的单极中断控制实验1.实验目的1)掌握中断控制器8259A与微机接口的原理和方法。
2)掌握中断控制器8259A的应用编程2.实验内容本实验中已设计有1片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7实验原理图如图所示。
8259A和8088系统总线直接相连,8259A上连有一系统地址线A0,故8259A有两个端口地址,本系统中为20H、21H。
20H用来写ICW11,21H用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。
OCW2、OCW3用端口地址20H,OCW1用端口地址21H,。
图中使用了3号中断源,IRQ33插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号.如果中断源电平信号不符合规定要求则自动转到7号中断,显示Err。
CPU 响应中断后,在中断服务中,对中断次数进行计数并显示,计满次数结束,显示器显示“8259 good”。
3.实验软件框图4.实验步骤1)连接好线路:8259A的IRQ33插孔和脉冲发生器单元SP插孔相连。
SP插孔初始电平置低电平。
2)运行实验程序。
3)按QAN键,每按2次产生一次中断,在显示器左边一位显示中断次数,满55次中断,显示器显示“8259 good”。
5.实验参考程序CODE SEGMENTASSUME CS:CODE INTPORT1 EQU 0020H INTPORT2 EQU 0021HINTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA0 EQU 0580H DATA1 EQU 0500H DATA2 EQU 0508H DATA3 EQU 0518H DATA4 EQU 0520HORG 1000H START: JMP Tint1Tint1: CLIMOV AX,0HMOV DS,AXMOV DX,CONTPORTMOV AL,00HOUT DX,AL;KEYBORD DISPLY MODEMOV AL,2AHOUT DX,AL;8279 CLOCKMOV AL,0d0hOUT DX,AL;8279 CLEARMOV AL,90hOUT DX,AL;READ FIFO RAM COMMAND TEST1: IN AL,DXAND AL,80HJNZ TEST1CALL FORMATCLIMOV DI,DATA0MOV CX,08HXOR AX,AXREP STOSWMOV SI,DATA3CALL LEDDISP ;DISP 8259-1MOV AX,0HMOV DS,AXCALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV BYTE PTR DS:[0601H],01H ;TIME=1STIWATING: JMP WATINGWRINTVER:MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSWMOV AX,CSSTOSWMOV DI,003CHLEA AX,INTQ7STOSWMOV AX,CSSTOSWRETINTREEUP3:CLIMOV AL,DS:[0601H]CALL CONVERSMOV SI,DATA0CALL LEDDISPDMOV AL,20HMOV DX,INTPORT1OUT DX,ALADD BYTE PTR DS:[0601H],01HCMP BYTE PTR DS:[0601H],06HJNA INTRE1MOV SI,DATA4CALL LEDDISPINTRE3: JMP INTRE3CONVERS:MOV BH,0HAND AL,0FHMOV BL,ALMOV AL,CS:[BX+DATA2]MOV BX,DATA0MOV DS:[BX],ALRETINTRE1: MOV AL,20HMOV DX,INTPORT1OUT DX,ALSTIIRETINTREEUP7: CLIMOV SI,DATA1CALL LEDDISPMOV AL,20HMOV DX,INTPORT1OUT DX,ALIRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+SI]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETLEDDISPD:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LEDD1: CMP BYTE PTR DS:[0600H],07HJA LEDD2MOV BL,DS:[0600H]MOV BH,0HMOV AL,DS:[BX+SI]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LEDD1LEDD2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],5050HADD BX,2MOV WORD PTR DS:[BX+0500H],0079HADD BX,2MOV WORD PTR DS:[BX+0500H],0000HADD BX,2MOV WORD PTR DS:[BX+0500H],0000HADD BX,2MOV WORD PTR DS:[BX+0500H],063FHADD BX,2MOV WORD PTR DS:[BX+0500H],4F5BHADD BX,2MOV WORD PTR DS:[BX+0500H],6D66HADD BX,2MOV WORD PTR DS:[BX+0500H],077DHADD BX,2MOV WORD PTR DS:[BX+0500H],6F7FHADD BX,2MOV WORD PTR DS:[BX+0500H],7C77HADD BX,2MOV WORD PTR DS:[BX+0500H],5E39HADD BX,2MOV WORD PTR DS:[BX+0500H],7179HADD BX,2MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D6FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHADD BX,2MOV WORD PTR DS:[BX+0500H],3F5EHADD BX,2MOV WORD PTR DS:[BX+0500H],5C3FHADD BX,2MOV WORD PTR DS:[BX+0500H],6D6FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START6.思考题简述8259A的中断初始化过程。
微机原理与汇编语言_实验5_8259中断控制器实验概论
微机原理与汇编语言实验报告姓名x x x学号xxxxxx 专业班级计科x班课程名称微机原理与汇编语言实验日期2014.11.25 实验名称8259中断控制器实验成绩1、掌握8259A的工作原理。
2、掌握编写中断服务程序方法。
3、掌握初始化中断向量的方法。
二、实验内容1、实验原理本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。
电平开关电路简单io扩展电路8259中断控制器电路1)电平开关电路开关量输入电路由8只开关组成,每只开关有两个位置H和L,一个位置代表高电平,一个位置代表低电平。
对应的插孔是:K1~K8。
2)扩展输出口扩展输出接口由74LS273构成,74LS273的输出信号由插孔O0~O7输出,插孔CS273是其选通信号,其它信号线已接好。
3)8259中断控制电路CS8259是8259芯片的片选插孔,IR0~IR7是8259的中断申请输入插孔。
DDBUS是系统8位数据总线。
INT插孔是8259向8086CPU的中断申请线,INTA是8086的中断应答信号。
2、实验步骤1)实验接线CS0↔CS8259 CS1↔CS273 O0~O7↔LED1~LED8 K1~K8↔IR0~IR7 INT↔INTR INTA↔QINTACS0 片选信号,地址04A0~04AF 偶地址有效CS1 片选信号,地址04B0~04BF 偶地址有效CS2 片选信号,地址04C0~04CF 偶地址有效CS3 片选信号,地址04D0~04DF 偶地址有效CS4 片选信号,地址04E0~04EF 偶地址有效CS5 片选信号,地址04F0~04FF 偶地址有效CS6 片选信号,地址0000~01FF 偶地址有效CS7 片选信号,地址0200~03FF 偶地址有效关于偶地址有效当8259片选连接CS0时,因访问端口时地址位A0的值必须为1,由A1地址位来区分两个端口吗,因此,偶地址:04A0,04A4…奇地址:04A2,04A6…2)编译调试程序3)全速运行程序,拨动某一电平开关,观察LED的亮灭情况。
8259a中断控制器——利用IRQ2显示中断过程
8259a中断控制器:利用8259A的IRQ2显示中断过程目录8259a中断控制器:利用8259A的IRQ2显示中断过程 (1)设计题目: (1)要求: (1)设计思路: (1)实验代码: (2)实验心得体会: (10)设计题目:利用8259A IRQ2显示中断过程要求:1.主是在7段数码管上循环显示‘8’从右到左显示2.中断服务中在7段数码管上依次显示全1234567 89要去显示2秒左右时间可采用软件Software延迟(时间可通过调试大致2秒左右)总计中断9次结束返回DOS3.每次由手动产生IRQ2中断请求信号引起中断设计思路:软件Software方面有两个主要部分:主和中断服务子主首先要完成是些和处理工作例如查找设备设置TPC卡中9054芯片IO口,保存原来0AH号中断中断向量设置新中断向量设置中断掩码显示提示信息然后打开中断进入主循环在主循环中不断在LED上从右向左显示8直到被IRQ2中断信号打断此外在主中还对中断执行进行计数当计数满9次后自动跳出为了使主上8循环可以看出来故将显示8延迟设计比较长当完成9次中断主还要完成些后续处理工作:恢复中断掩码;恢复中断向量;设置TPC卡中9054芯片IO口,关闭中断返回DOS中断子完成在6位数码管上“同时”显示个数功能这个数为1—9中某个可以用循环次数作为参数这里同时显示实质上是利用视觉上暂停效果即只要每秒能在同个数码管上显示信息超过24次看起来就是同时了而这点在现在计算机速度条件下很容易实现为了不发生混乱在中断子执行过程中不允许再次中断另外中还有两个子:findtpc和dispword这些是为了完成查找设备等预处理硬件方面实验时把总线上IRQ2引脚和拨键开关相连以手动产生中断信号另外再把LED片选信号CS和210-217相连(注:LED显示是通过向LED数据端口送入数据再向LED位选端口送入位选信号来实现)实验代码:;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译;**********************************************;;*利用8259AIRQ2 显示中断过程*;;**********************************************;io_plx_device_id equ 05406h ;TPC卡设备IDio_plx_vendor_idequ 010b5h ;TPC卡厂商IDIO_PLX_SUB_ID EQU 0905410B5H;TPC卡子设备及厂商IDportseg EQU 211H-200H ;数码管端口地址portbit EQU 210H-200Hdata segmentcsregdw?[Page]ipreg dw? ;旧中断向量保存空间irq_times dw10 ;中断计数msg1 db 0dh,0ah,\'TPC pci card Interrupt\',0dh,0ah,\'$\'msg2 db 0dh,0ah,\'Press any key to exit!\',0dh,0ah,\'$\'msg3 db 0dh,0ah,\'Press DMC or wait to errupt 10 times and exit!\',0dh,0ah,\'$\'io_9054base_address db 4 DUP(0) ;TPC卡PCI接口芯片I/O基地址暂存空间io_base_addressdb 4 DUP(0) ;TPC卡I/O基地址暂存空间errupt_line db 2 DUP(0) ;TPC卡中断号暂存空间pcicardnotfind db 0dh,0ah,\'TPC pci card not find or address/errupt error !!!\',0dh,0ah,\'$\' io9054baseaddress db 0dh,0ah,\'TPC pci card 9054 Chip I/O Base Address : \',\'$\' iobaseaddress db 0dh,0ah,\'TPC pci card I/O Base Address : \',\'$\'number db 0dh,0ah,\'TPC pci card Interrupt Line : \',\'$\'enter_ db 0dh,0ah,\'$\'MESS DB \'8253A TIMER0 IN MODE3! COUNT=0200H\',0AH,0DHDB \'8253A TIMER1 IN MODE2! COUNT=0aH\',0AH,0DH,\'$\'irq_vect db 08h,09h,0ah,0bh,0ch,0dh,0eh,0fh,70h,71h,72h,73h,74h,75h,76h,77h;新中断向量,中断0-7向量为:08h-0fh,中断8-15向量为:70h-77hirq_mask_0_7_table db 011111110b,011111101b,011111011b,011110111bdb 011101111b,011011111b,010111111b,001111111bdb 011111011b,011111011b,011111011b,011111011b[Page] db 011111011b,011111011b,011111011b,011111011b;新中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零irq_mask_8_15_table db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh db 011111110b,011111101b,011111011b,011110111bdb 011101111b,011011111b,010111111b,001111111b;新中断掩码,中断0-7时全,中断8-15时从低至高相应位为零LED DB 06,5BH,4FH,66H,6DH,7DH,07,7FH,6FHdata endsstacks segmentdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:datastart:;Enable Local Interrupt Input.386climov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axcall findtpc ;查找TPC卡资源并显示movdx,word ptr io_9054base_addressadd dx,68h;设置tpc 卡中9054芯片io口,使能中断in ax,dxor ax,0900hout dx,axmov bx,word ptr errupt_line ;保存原中断向量mov al, ptr [irq_vect+bx]mov ah,35h21hmov ax,esmov csreg,ax[Page] mov ipreg,bxmov bx,word ptr errupt_line ;设置新中断向量mov al, ptr [irq_vect+bx]mov cx,csmov ds,cxmov dx,off _procmov ah,25h21hmov ax,datamov ds,axmov es,axin al, 21h ;设置中断掩码mov bx,word ptr errupt_linemov ah, ptr [irq_mask_0_7_table+bx]and al,ahout 21h, alin al, 0a1hmov bx,word ptr errupt_linemov ah, ptr [irq_mask_8_15_table+bx]and al,ahout 0a1h, almov dx,off msg2mov ah,09h21hmov dx,off msg3mov ah,09h21hmov irq_times,0sti ;开中断loop1:cmp irq_times,9 ;等待中断并判断中断9次后退出jz exitmov ax,datamov ds,ax[Page] mov al,7FHmovdx,word ptr io_base_addressadd dx,portsegout dx,almov al,blmovdx,word ptr io_base_addressadd dx,portbitout dx,alpushcxmov cx,0FFFFhskip3:push cxmov cx,03FFHskip4:loop skip4pop cxloop skip3pop cxshl bl,1cmp bl,40hjne skip5mov bl,01hskip5:jmp loop1exit:climov bx,word ptr errupt_line ;恢复中断掩码mov ah, ptr [irq_mask_0_7_table+bx]not ahin al, 21hor al, ahout 21h, almov bx,word ptr errupt_linemov ah, ptr [irq_mask_8_15_table+bx]not ahin al, 0a1hor al, ah[Page] out 0a1h, almov bx,word ptr errupt_line ;恢复原中断向量mov al, ptr [irq_vect+bx]mov dx,ipregmov cx,csregmov ds,cxmov ah,25h21hmov ax,data ;设置tpc 卡中9054芯片io口,关闭中断mov ds,axmov dx,word ptr io_9054base_address add dx,68hin ax,dxand ax,0f7ffhout dx,axmov ax,4c00h21h ;退出_proc proc farclipush axpush dxpush dsmov bl,01hmov ax,datamov ds,axmovsi,irq_timesmov cx,05FFHagain:mov al,LED[si]movdx,word ptr io_base_addressadd dx,portsegout dx,almov al,blmovdx,word ptr io_base_addressadd dx,portbit[Page] out dx,alshl bl,1cmp bl,40hjne skip6mov bl,01hskip6:push cxmov cx,0FFFFHagain2:pushcxmov cx,10again4:loopagain4pop cxloop again2pop cxloop againmov al,20h ;Send EOIout 0a0h,alout 20h,alinc irq_timespop dspop dxpop axstiiret_proc endpfindtpc proc near ;查找TPC卡资源并显示pushadpushfdmov ax,0b101h1ahjc findtpc_notfind ;检查PCI BIOS是否存在mov ax,0b102hmov cx,io_plx_device_idmov dx,io_plx_vendor_idmov si,01ahjc findtpc_notfind ;检查tpc卡是否安装,设备号、厂商号[Page]mov ax,0b10ahmov di,02ch1ahjc findtpc_notfindcmp ecx,io_plx_sub_idjnz findtpc_notfind ;检查tpc卡是否安装,子设备号、厂商号mov ax,0b10ahmov di,14h1ahjc findtpc_notfind ;读TPC卡9054芯片I/O基址信息mov dword ptr io_9054base_address,ecxand ecx,1jz findtpc_notfind ;检查是否为i/o基址信息mov ecx,dword ptr io_9054base_addressand ecx,0fffffffehmov dword ptr io_9054base_address,ecx;去除i/o指示位并保存MOV AX,0B10AHMOV DI,18HINT 1AHJCfindtpc_notfind ;读TPC卡I/O基址信息mov dword ptr io_base_address,ecxand ecx,1jz findtpc_notfind ;检查是否为i/o基址信息mov ecx,dword ptr io_base_address[Page] and ecx,0fffffffehmov dword ptr io_base_address,ecx ;去除i/o指示位并保存mov ax,0b10ahmov di,3ch1ahjc findtpc_notfind ;读TPC卡中断信息and cx,0ffhmov word ptr errupt_line,cx ;去除errupt其它指示位并保存mov dx,off io9054baseaddress ;显示i/o提示信息mov ah,09h21hmov ax,word ptr io_9054base_addresscall dispword ;显示i/o基地址mov dx,off iobaseaddress ;显示i/o提示信息mov ah,09h21hmov ax,word ptr io_base_addresscall dispword ;显示i/o基地址mov dx,off number ;显示errupt提示信息mov ah,09h21h[Page] mov ax,word ptr errupt_linecall dispword ;显示中断号mov dx,off enter_ ;加回车符,换行符21hpopfdpopadretfindtpc_notfind:mov dx,off pcicardnotfind ;显示未找到tpc卡提示信息mov ah,09h21hmov ax,4c00h21h ;退出findtpc endpdispword proc near ;显示子push dxpush cxpush bxmov cx,4mov bx,16dispword_loop1:push axpush cxsub bx,4mov cx,bxshr ax,cland al,0fh ;首先取低4位[Page] mov dl,alcmp dl,9 ;判断是否<=9jle dispword_num ;若是则为\'0\'-\'9\',ASCII码加30H add dl,7 ;否则为\'A\'-\'F\',ASCII码加37Hdispword_num:add dl,30hmov ah,02h ;显示21hpop cxpop axloop dispword_loop1pop bxpop cxpop dxret ;子返回dispword endpend start实验心得体会:本实验难点在LED显示上由于在此的前我直认为LED显示是由8255A驱动所以开始做这个时我首先想到是利用8255A但是结合实验箱上LED我才发现这样思路方法行区别于是再回头认真学习了下LED显示原理才发现LED显示其实很简单只要往数据端口送数据再往位选端口送入位选代码就可以了这下流程变得豁然开朗另外在设计时候我和其他同学讨论了手动中断信号种种产生方式最终发现用开关直接和总线插槽上IRQ2直接相连时最简单思路方法!本实验些预处理操作和有关TPC实验板化、后处理都是结合平时实验在此基础上修改完成经过小组成员致努力我们圆满完成了这次实验任务!经过此次实验我体验了从实战到学习再到实战过程乐趣。
8259A可编程中断控制器实验
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验二8259A可编程中断控制器实验实验类型设计型姓名学号日期地点微机实验室成绩教师第1页共8页1. 实验目的及内容1.1实验目的1)了解8259A芯片的工作原理。
学会使用8259A中断控制芯片实现对外中断的响应和处理。
2)了解8259A内部结构和熟悉8086的接口逻辑。
3)掌握8259A的初始化编程方法和8086是如何响应中断、退出中断的。
1.2实验内容1)设计8259A与8086CPU的硬件连接图,分配8259A的端口地址为9000H,9001H。
2)设计8259A的外围连接,实现拨动单脉冲开关触发8259A中断,8086计数中断次数并显示于G5区的断码管LED上。
3)中断次数的显示需调用系统给定的显示子程序DISPLAY8。
程序开始处必须设置外部连接,告诉汇编程序该显示程序在何处;设置显示缓冲区及相应的入口参数:si——显示缓冲区首地址。
若要让LED无任何显示,即对应单元送10H,若要让它显示数字,则把数字值直接送到相应的显示缓冲区单元中就可以显示了。
4)要保证DISPLAY8能正常显示,必须使得8279键盘/LED控制器能正确运行。
此时要设置连线:①8279键盘/LED控制器的CLK应连接2MHz的时钟;②8279键盘/LED控制器的CS,A0连接到芯片组A3区的CS5,A0;③控制数码管LED亮灭的数据(段码,列码)由8279的键盘/LED控制器输出,应该把E5区中的B,C与G5区的B,C对应连接起来。
2. 实验环境星研电子软件,STAR系列实验仪一套、PC机一台、导线若干3. 实验方法8259A的中断引脚IRi与单脉冲连接,实现拨动单脉冲开关触发8259A中断,8086计数中断次数并显示于G5区的断码管LED上,此实验使用8259A的IR2中断,正脉冲触发中断,脉冲频率为2MHz.4.实验步骤MOV DX,9001HMOV AL,00001010B OUT DX,ALMOV AL,00001101B OUT DX,ALMOV AL,11111011B OUT DX,ALMOV CX,0000HMOV BL,00HMOV BH,11STI L1: MOV FLAG,0MOV AL,BLAND AL,0FHMOV BUF,ALMOV AL,BLSHR AL,4AND AL,0FHMOV BUF+1,ALMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HMOV BUF+6,10HMOV BUF+7,10HLEA SI,BUFCALL DISPLAY8 CHECK:CMP FLAG,0JZ CHECK CMP BH,00HJZ ZEROJMP L1ZERO:MOV DX,9001HIN AL,DX OR AL,00000100 OUT DX,ALJMP ZEROIRQ2 PROC FARMOV AL,BLADD AL,01HDAAMOV BL,ALDEC BHMOV FLAG,1MOV DX,9000HMOV AL,00100000BOUT DX,ALIRETIRQ2 ENDPEND START4.4运行调试程序1)按要求设计的电路正确连接线路,检查完毕后打开电源。
8259中断控制器实验报告
竭诚为您提供优质文档/双击可除8259中断控制器实验报告篇一:8259中断控制器实验报告8259中断控制器实验报告作者:一实验目的1,掌握8259A的工作原理。
2,掌握编写中断服务程序方法。
3,掌握初始化中断向量的方法。
二,实验设备cpu挂箱,8086cpu模块图1-cpu挂箱三,实验内容用电平开关的输出作为中断源,每个开关对应于一个中断源。
在中断服务程序中,通过74Ls273输出一个数据,以点亮于中断源对应位置的LeD灯。
四,实验原理1.本实验用到三部分电路:电平开关电路、简单I/o扩展电路和8259中断控制器电路;2.8086的中断系统是向量中断方式,内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量,不同的中断向量对应不同的偏移地址;3.中断类型由8359通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序;4.中断类型的高5位由8359寄存器Icw2决定,低3位由中断源IRx的编码自动填充,IRo~IR7的编码分别是000,001,010,011,100,101,110,111。
五,实验步骤1,实验接线cs0-cs8259cs1-cs27300~07-LeD1~LeD8K1~K8-IR0~IR7InT-InT(8086cpu板)InTA-InTA(8086cpu板)2,编译调试程序3,全速运行程度,拨动某一电平开关,观察LeD的亮灭情况。
六,实验结果全速运行程序,由上向下拨动开关时,相应位置的LeD灯点亮,其余LeD灯全灭七,源代码Assumecs:coDecoDesegmenTpubLIcoRg100hsTART:moVcx,0sTART1:cLImoVDx,04A0hmoVAx,13houTDx,AxmoVDx,04A2hmoVAx,80h ouTDx,AxmoVAx,01houTDx,AxmoVAx,00houTDx,AxnopmoVAx,0moVDs,AxmoVADDDI,2DI,200hmoVDs:[DI],100h;初始化中断向量表moVAx,oFFseTint0moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint1moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint2moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint3moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint4moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint5moVDs:[DI],AxADDDI,2moVAx,oFFseTint6moVDs:[DI],AxADDDI,2moVDs:[DI],100hADDDI,2moVAx,oFFseTint7moVDs:[DI],AxADDDI,2;上述程序为芯片8259的初始化程序moVDs:[DI],100hmAIn:moVAx,0sTIwAITIng:cmpAx,0hJewAITIngmoVDx,04b0houTDx,AxmoVcx,0 DeLAY:LoopDeLAYJmpsTART1Int0:cLInopmoVAx,oFehIReTInt1:cLInopmoVAx,oFDhIReTInt2:cLInopmoVAx,oFbhIReTInt3:cLInopmoVAx,oF7hIReTInt4:cLInopmoVAx,oeFhIReTInt5:cLInopmoVAx,oDFhIReTInt6:cLInopmoVAx,obFhIReTInt7:cLInopmoVAx,o7FhIReT篇二:8259中断控制实验报告深圳大学实验报告班级:实验时间:实验报告提交时间:教务处制篇三:8259中断控制实验报告实验六8259中断控制一、实验目的1.学习8086/8088cpu中断系统的知识。
8259A中断控制器实现
一、实验目的与要求1、了解8259的内部结构,工作原理;了解8259A 与8088的接口逻辑;掌握对8259A 的初始化编程方法,了解8088是如何响应中断、退出中断的。
二、实验逻辑原理图与分析 2.1 画实验逻辑原理图AD0~AD15ALEWR#INTR INTA数据锁存器地址锁存器地址译码器D0~D7CS#A0WR#INT INTA#IR0A02.2 逻辑原理图分析8282地址锁存器,用于8086CPU 与8259A 芯片地址线的连接用于总线周期T1状态下发出的地址信号。
经锁存后的地址信号可以在整个周期内保持稳定不变,8286收发器用于8086CPU 与8259A 芯片数据线的连接,通过地址译码器实现片选信号(CS )的选通。
(1)、8086是Intel 系列的16为微处理器,芯片上有4万个晶体管,采用NMOS 工艺制造,用单一的+5V 电源,时钟频率为4.77MHZ~10MHZ.8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据,可寻址的内存空间为1MB 。
(2)、8282锁存器:用来锁存8086访问存储器或I/O 端口时,于总线周期T1状态下发出的地址信号。
经锁存后的地址信号可以在整个周期内保持稳定不变 (3)、8286收发器:可以进行双向数据锁存 (4)、8259A 可编程中断控制器主要功能:1)、 1片8259A 能管理8级中断,通过级联用9片8259A 可以构成64 级主从 式中断系统2)、每一级中断可以屏蔽或允许3)、在中断响应周期,8259A 可提供相应的中断类型号。
4)、 可编程使8259A 工作在多种不同的方式。
(5)、8259A 的内部结构:1)、IRR:当IR0-IR7某一个引脚上出现有效中断请求时,IRR对应位被置12)、IMR:当IR0-IR7中需要屏蔽的,IMR对应位置13)、ISR:是一个8位寄存器,通过8位二进制数的值纪录当前正在处理的中断请求。
微机原理8259中断控制完整实验报告
实验5 8259中断控制实验实验时间2019年11月27日
实验类型■验证性□设计性□综合性
1. 实验目的
掌握8259中断控制器的工作原理
2. 实验内容及过程(主要内容、操作步骤)
利用系统总线上中断请求信号MIR6,设计一个单一中断实验3. 测试数据及实验结果
4. 实验分析及总结(主要考察内容)
1.显示字符“7”时,前面的“0137H”中的“37H”是“7”的ASCII码,若要改变显示的字符,就更改ASCII码。
2.中断服务程序的入口地址有段基址和段内偏移,故有32位,一个中断在中断向量表里面占4个字节,这4个字节就是中断服务程序的入口地址。
实验第一步就是在初始化中断向量表,就是告诉系统中断服务程序在哪里,填上IQR6的段基址和段内偏移(38H-3BH)。
其次就是对8259A主从片进行初始化,很多东西可以不初始化,就用到了主片,8259A从片上也接了一个中断。
再下面就是中断服务程序,实验中中断服务程序有延时,但是在正常编程情况下中断服务程序决不允许有延时,中断服务程序要快进快出
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结。
实验五 8259A中断控制器实验
南昌大学实验报告学生姓名:林海金学号:6100210178 专业班级:卓越通信101班实验类型: 验证□综合□设计□创新实验日期:2012-5-22 实验成绩:一、实验项目名称实验五8259A中断控制器实验二、实验目的(1)了解8259A中断控制器的工作原理。
(2)了解PC机中断的原理和过程。
(3)学会中断程序的编写。
三、实验要求编写中断程序,在请求8259A1时,能够响应8259A的硬件中断,并在数码管上显示“IRQ0…”字样,中断结束时,显示“E…IRQ”。
四、实验仪器及连线方式1)实验仪器:AEDK-T598D实验系统。
2)连线方式:INT0连接至+PULSE;8259A的片选接至试验箱的200H;8279的片选接至210H~217H。
五、实验说明以中断0为例,先加载主中断程序,然后再加载中断程序IRQ0程序,然后打开对话窗口,输入“SW 0:0020,<回车>0000,””8200<回车>”,在执行“G8100:0<回车>Y”即可。
六、实验参考程序INT00 EQU 200HINT01 EQU 201HZ8279 EQU 239HD8279 EQU 238HLEDMODE EQU 00HSCANFRQ EQU 38HDA TA SEGMENTDA TA ENDSSTACK SEGMENTSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: CLIMOV AL,13HMOV DX,INT00OUT DX,ALNOPNOPMOV AL,8MOV DX,INT01OUT DX,ALMOV CX,0FFFHL00: LOOP L00MOV AL,3MOV DX,INT01OUT DX,ALMOV CX,0FFFHMOV CX,0FFFHL01: LOOP L01NOPNOPMOV DX,Z8279MOV AL,LEDMODEOUT DX,ALMOV AL,SCANFRQOUT DX,ALMOV DX,INT01MOV AL,00HOUT DX,ALMOV CX,0FFFHL02: LOOP L02MOV DX,INT00MOV AL,20HOUT DX,ALMOV CX,0FFFHL03: LOOP L03MOV DX,Z8279MOV AL,90HOUT DX,ALMOV AL,0D0HOUT DX,ALMOV CX,0FFFFHL2: LOOP L2MOV AL,67HOUT DX,ALMOV AL,50HOUT DX,ALMOV AL,0FHOUT DX,ALJMP SHORT $+2STIHLT0X2: MOV DX,Z8279MOV AX,0D0HOUT DX,ALMOV CX,0FFFHLOOP L5L5: LOOP L5MOV AL,90HOUT DX,ALMOV DX,D8279MOV AL,67HOUT DX,ALMOV AL,50HOUT DX,ALMOV AL,0FHOUT DX,ALMOV AL,80HOUT DX,ALOUT DX,ALMOV AL,79HOUT DX,ALJMP SHORT X2NOPCODE ENDSEND STARTZ8279 EQU 239HD8279 EQU 238HINT0 EQU 200HDA TA SEGMENTDA TA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: STIMOV CX,0FFFHMOV DX,Z8279MOV AL,0D0HOUT DX,ALL1: LOOP L1MOV AL,90HOUT DX,ALMOV DX,D8279MOV AL,80HOUT DX,ALOUT DX,ALOUT DX,ALMOV AL,3FHOUT DX,ALOUT DX,ALMOV AL,50HOUT DX,ALMOV AL,0FHOUT DX,ALMOV CX,0FFFFH12: LOOP L2MOV DX,INT0MOV AL,20HOUT DX,ALIRETCODE ENDSEND START七、实验步骤1、实验前检查实验箱是否完好,串口是否正确连接;2、按照实验电路图连接好电路,并检测通讯口;3、在LCA88ET环境中依次进入文件--打开--EXP--88ASM--8259A和Irgo;4、程序加载:设置--实验机--加载地址,8259A加载到8100H,Irgo加载到8200H;5、在LCA88ET环境中进行程序调试,调试(或窗口)--对话窗口--SW 0:0200<回车>0000,8200<回车>,再执行G8100:0<回车>Y6、运行程序,按下按键,看实验箱上数码管显示结果是否正确;3、实验结果:程序运行后,每次按下按键都能产生中断。
PC机8259A的中断应用实验
8259A的中断应用实验一、实验目的(1)学习8259 A中断控制器的结构及其工作原理。
(2)掌握59A的工作方式及初始化。
(2)学习8259 可编程控制器的应用编程。
(3)掌握使用PC 机内8259 的方法。
(4)掌握修改中断向量的方法。
二、实验要求编写一键盘中断处理程序,计数键盘中断次数,并用该程序替换系统键盘中断处理程序,使当键盘中断产生10 次后,显示按键次数并结束应用。
三、相关基本知识a、CPUCPU是中央处理单元(Central Process Unit)的缩写,它可以被简称做微处理器。
(Microprocessor),不过经常被人们直接称为处理器(processor)。
不要因为这些简称而忽视它的作用,CPU是计算机的核心,其重要性好比心脏对于人一样。
实际上,处理器的作用和大脑更相似,因为它负责处理、运算计算机内部的所有数据,而主板芯片组则更像是心脏,它控制着数据的交换。
CPU的种类决定了你使用的操作系统和相应的软件。
CPU主要由运算器、控制器、寄存器组和内部总线等构成,是PC的核心,再配上储存器、输入/输出接口和系统总线组成为完整的PC。
CPU的基本结构、功能及参数CPU主要由运算器、控制器、寄存器组和内部总线等构成。
寄存器组用于在指令执行过后存放操作数和中间数据,由运算器完成指令所规定的运算及操作。
CPU主要的性能指标有:1.主频主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。
CPU的主频=外频×倍频系数。
很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。
CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。
CPU的运算速度还要看CPU的流水线的各方面的性能指标。
当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
2.外频外频是CPU的基准频率,单位也是MHz。
使用8259A单级中断控制实验
实验五使用8259A的单级中断控制实验一、实验目的1、掌握中断控制器8259A与微机接口的原理和方法。
2、掌握中断控制器8259A的应用编程。
二、预备知识1、8259A的内部结构8259A是专为控制优先级中断而设计的芯片。
它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。
b5E2RGbCAP如图5-19所示,它由中断请求寄存器(IRR>、优先级分析器、中断服务寄存器(ISR>、中断屏蔽寄存器(IMR>、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。
p1EanqFDPw图5-19中断请求寄存器:寄存所有要求服务的请求IR0~IR7。
中断服务寄存器:寄存正在被服务的中断请求。
中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为1,屏蔽该号中断,否则开放该号中断。
DXDiTa9E3d 数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线,通过它可以由CPU对8259A写入状态字和控制字。
RTCrpUDGiT读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。
5PCzVD7HxA级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。
2、8259A编程及初始化(1> 写初始化命令字* 写初始化命令字ICW1(A0=0>,以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。
jLBHrnAILg* 写初始化命令字ICW2,以定义中断向量的高五位类型码。
* 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。
xHAQX74J0X第i位=0,表明IRi引脚上无从片第i位=1,表明IRi引脚上有从片* 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断服务寄存器复位方式等。
定时器8253与中断控制器8259A实验
定时器8253与中断控制器8259A实验实验七定时器8253与中断控制器8259A 实验二、实验电路五、实验项目1.该实验用PC 机内部的中断控制器8259A ,中断源用TPC-H 实验箱上的8253来产生,电路如图1所示,将8253计数器0,计数器1分别设置为方式3和方式2,计数初值设为2000,使8253每隔4秒产生一次中断请求。
2.编写程序,要求每次主机响应外中断IRQ7时,显示"THIS IS A 8259A INTERRUPT !",在键盘上敲任意一个键,程序退出。
3.修改电路和程序,直接用手动产生单个脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次" THIS IS A 8259A INTERRUPT !",中断10次后程序退出。
六、编程提示1.在TPC-H 实验系统的接口卡上有一个跳线开关(JP ),可以选择IRQ2、IRQ3、IRQ4、IRQ7引到试验箱上的IRQ 插孔,出厂设置的是IRQ7。
2.由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS 的环境中才能正常运行。
3.由于TPC 卡使用PCI 总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法如下:在纯DOS 环境下C:\ASM\>提示符下键入PORTR1后敲回车键,会得到:TPC PCI Card 9054 Chip I/O Base Adress :2000TPC PCI Card I/O Base Adress :2400TPC PCI Card Memory Base Adress :d2000000TPC PCI Card Interrupt Line :0A其中,2000为PCI 卡上9054芯片的基地址;2400为试验箱的基地址,2400/2407对应的是280/287H 插孔;0A 表示系统分配中断为IRQ10。
8259中断控制实验
深圳大学实验报告课程名称:实验项目名称:学院:专业:指导教师:报告人: 学号: 班级:实验时间:实验报告提交时间:教务部制一般中断实验,为了保护现场,程序开头都会引用堆栈把把现在的程序放入堆栈中进行保护,所以.PUS.DS就起到这样的作用.在中断程序结束后,为了能回到之前执行的程序入口,还得用PO.D.指令返回现场.这个实验是关于8259的单中断,不牵涉级联问题,所以,8259的初始化只需要看主片就可了.初始化的时候,一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入始化字.8259有四个初始化控制字ICW1,ICW2,ICW3,ICW4,由于8259只有一根地址线,因此对各个制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的.当初始化完成后,对8259的操作命令字的寻址是通过8259的地址线A0和某些数据位结合来进行的.其初始化控制字和控制命令辽的赋值由我已经在注释中给出.另外,在初始化程序中我们用了STI这条指令打开中断,那么进入MIR7中断程中,我们为什么又执行STI这条指令呢,会不会重复了?经过实验,我们知道这条指令并不是没用的,如果少后面这条STI指令,实验中我们会发现,当按一次KK1开关的时候,屏幕会显示一个字符7,但是,再按KK1的时候,就没有反应了,起初并不知道怎么解释这个现象,后来才知道8086CPU执行完一次中断后,会自动将相应的中断位屏蔽,所以,如果我们想按一次KK1就发生一次中断,就得重新在程序中打开中断,也就是STI.另外,RET指令是短信返回指令,而IRET指令则是中断短程返回指令,一般中断程序也大多是短程的.那么,中断发生的时候,CPU又是怎样进入中断子程序的呢?这就需要我们正确地设置中向量表的了.实验板上主中断序号7可用,也就是我们得利用3CH-3FH这矢量地址.所以在程序开始的候,就采用MO.AX.OFFSE.MIR7,MO.SI.003CH,MO.[SI].AX这三句来获得偏移地址IP,接着高址位置又用MO.AX.CS,MO.SI.003EH,MO.[SI].AX这三条指令来获得CS.CPU根据CS,IP 就能转入正确的中断程序执行中断了.而中断程序结尾处,用了MO.AL.20. OU.20H.AL以及IRET这三条指令.是为了说明这是正常的EOI, 可以通知8259A此次服务结束.深圳大学学生实验报告用纸注: 1.报告内的项目或内容设置, 可根据实际情况加以调整和补充。
8259A中断控制器实验
8259A中断控制器实验一、实验目的与要求了解8259A的内部结构、工作原理;了解8259A与8088的接口逻辑;掌握对8259A的初始化编程方法,了解8088是如何响应中断、退出中断的。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8088计数中断次数,显示于F4区的数码管上四、实验原理图五、实验步骤1、连线说明:区:单脉冲3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
六、演示程序.MODEL TINYEXTRN Display8:NEARIO8259_0 EQU 0F000HIO8259_1 EQU 0F001H.STACK 100.DATABUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPCALL Init8259CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HLEA SI,BufferCALL Display8RETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETEND START七、实验扩展及思考1、从8259A收到上升沿,到8088响应中断,试画这个过程的时序图。
微机原理中断实验报告(3篇)
第1篇一、实验目的1. 理解中断的概念和作用;2. 掌握中断系统的组成和基本工作原理;3. 熟悉中断向量表、中断服务程序和中断处理过程;4. 通过实验验证中断系统的正确性和可靠性。
二、实验原理1. 中断的概念:中断是CPU在执行程序过程中,由于某些事件的发生,暂时停止当前程序的执行,转而执行相应的事件处理程序的过程。
2. 中断系统的组成:中断系统主要由中断控制器、中断源、中断向量表、中断服务程序和CPU等组成。
3. 中断向量表:中断向量表是存储中断服务程序入口地址的表格,其中每个中断向量对应一个中断服务程序。
4. 中断服务程序:中断服务程序是处理中断事件的核心程序,用于完成中断事件的处理任务。
5. 中断处理过程:当中断事件发生时,CPU会根据中断向量表找到对应的中断服务程序入口地址,并跳转到该地址执行中断服务程序。
三、实验仪器与设备1. 实验台:微机原理实验台2. 电脑:一台3. 软件环境:Keil uVision、emu8086等四、实验步骤1. 启动实验台,打开微机原理实验台软件。
2. 在软件中设置实验参数,如中断源、中断向量等。
3. 编写中断服务程序,实现中断事件的处理任务。
4. 编写主程序,调用中断服务程序。
5. 运行实验程序,观察中断系统的运行情况。
五、实验内容1. 实验一:单级中断系统(1)设置一个外部中断源,如按键中断。
(2)编写中断服务程序,实现按键按下时的处理任务。
(3)在主程序中调用中断服务程序。
2. 实验二:多级中断系统(1)设置两个外部中断源,如按键中断和定时器中断。
(2)编写中断服务程序,实现按键中断和定时器中断的处理任务。
(3)设置中断优先级,实现多级中断。
(4)在主程序中调用中断服务程序。
3. 实验三:中断嵌套(1)设置两个外部中断源,如按键中断和定时器中断。
(2)编写中断服务程序,实现按键中断和定时器中断的处理任务。
(3)实现中断嵌套,即在定时器中断服务程序中再次触发按键中断。
中断控制器8259A及中断服务
实验内容:中断控制器8259A及中断服务1、实验连线原理见图1所示:8259A连线:(1)单脉冲与时钟单元“”插孔和8259的3号中断IR3插孔相连作为中断源;(2)8259的INT连8088的INTR(Xl5);(3)8259的INTA连8088的INTA(Xl2);(4)8259的CS端接EX1(8259A端口地址是60H,61H);(5)A0→A0。
(6)IOWR→IOWR;(7)IORD→IORD;(8)连通CPU和8259A的数据总线,JX4→JX17。
8255连线:(1)将8255的A端口的PA7到PA0连接到灯L1~L8上。
图1:实验连线图2、实验原理:按动按键AN0后,单脉冲与时钟单元部件会产生“”信号,该信号的上升沿作为中断请求送8259A的IR3引脚,如果8259A没有屏蔽该级中断并且其优先级最高,8259A向CPU的INTR引脚送中断,CPU如果允许响应中断,则进入中断处理子程序,中断处理子程序向8255A的A端口送数据,将灯L1~L8点亮1秒。
3、实验要求:单片8259A以缓冲方式连接数据总线,以上升沿作为中断请求信号,中断源通过IR3引入,优先级采用一般全嵌套方式,非自动中断结束方式,引脚IR0~IR7的中断类型号为08F~0FH,编写一个汇编程序,主程序完成8255和8259A的初始化,循环等待中断请求;中断处理子程序将灯点亮1秒后熄灭。
4、端口地址:5、系统内存分配:5、程序结构:CODE SEGMENTASSUME CS:CODEMAIN PROCSTART: ;主过程;初始化8259;初始化8255;调用3号中断 MAIN ENDPINT3 PRCO……;中断处理子程序 INT3 ENDPDELAY PROC…… ;延时子过程DELAY ENDPCODE ENDSEND6、程序流程图主程序代码:PA EQU 0FF28H ;8255A端口地址标号定义 PB EQU 0FF29HPC EQU 0FF2AHPCTL EQU 0FF2BHINTPORT1 EQU 0060H ;8259控制口地址标号定义 INTPORT2 EQU 0061HCODE SEGMENTASSUME CS:CODEORG 1000HMAIN PROCSTART: CLI ;CPU关中断MOV AL,80H ;初始化8255MOV DX,0FF2BHOUT DX,ALPUSH DS ;保护DSMOV AX,0MOV DS,AXMOV DI,0B*4MOV DX,OFFSET INT3MOV WORD PTR[DI],DXMOV DX,SEG INT3MOV WORD PTR[DI+2],DXPOP DS ;恢复DSMOV AL,13H ;初始化8259AOUT 60H,ALMOV AL,08HOUT 61H,ALMOV AL,0DHout 61H,ALMOV AL,0F7HOUT DX,AL ;开放8259A中断STI ;CPU开中断HLTWATING: JMP WATING ;循环等待中断请求MAIN ENDPINT3 PROCPUSH DXPUSH AX ;保护现场STIMOV DX,PAMOV AL,00HOUT DX,AL ;灯全亮CALL DELAY1S ;延时子程序MOV AL,0FFHOUT DX,AL ;灯全灭MOV DX,INTPORT1MOV AL,20HOUT DX,AL ;送中断结束命令 CLIPOP AXPOP DX ;恢复现场MOV AL,20HOUT 60H,ALIRET ;中断返回INT3 ENDPDELAY1S PROCPUSH CXPUSH DXMOV DX,04AGAIN: MOV CX,0FFFFHDELAY: LOOP DELAYDEC DXJNZ AGAINPOP DXPOP CXRETDELAY1S ENDPCODE ENDSEND START。
8259中断控制实验报告
8259中断控制实验一.实验目的1. 掌握8259 中断控制器的工作原理。
2. 掌握系统总线上IR1,IR2 中断请求的应用编程方法。
二.实验设备IA-32 架构的微机系统及应用教学平台一套。
三.实验原理3.1 中断控制器8259简介中断控制器8259 是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。
它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。
8259 的内部结构和引脚如图1 所示。
图 1 8259 内部结构和引脚图8259 的命令共有7 个,一类是初始化命令字,另一类是操作命令。
8259 的编程就是根据应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4 各命令字格式如图2所示,OCW1-OCW3各命令字格式如图3 所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259 内部寄存器的读出命令。
图 2(a) ICW1格式图 2(b) ICW2格式图 2(c) ICW3格式图 2(d) ICW4格式图 3 OCW 命令字格式3.2 8259寄存器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表1所示。
表 1 8259 寄存器及命令的访问控制3.3 EPC 微机系统中的8259在80x86 系列EPC 微机系统中,系统中包含了两片8259 中断控制器,经级连可以管理15 级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2 示。
完整word版,8259A中断控制器实验
南京信息工程大学实验(实习)报告实验(实习)名称 8259A中断控制器实验实验(实习)日期 2015.5.12 得分指导教师朱节中计算机系专业网络工程年级 2012 班次 1 姓名学号一. 实验目的1.掌握8259A中断控制器工作原理,熟悉实验中涉及到的中断屏蔽寄存器IMR和中断服务寄存器ISR等的使用方法.2.学会中断处理程序的编写二. 实验内容用8259A的输出作为中断请求信号使8259A产生中断,进入中断后显示一个字符串.1.中断请求通过PC/XT62芯总线的IRQ2端输入,中断源可以是片外8253定时器输出的脉冲,也可以是其它脉冲,也可以是其它脉冲.现用8253做中断源,参看实验21连接8253的线路,并把8253的OUTO和总线槽IR02连接好.2.编写程序,要求每次主机响应外部中断IRQ2时,显示字符串“THIS IS A 8259A INTERRUPT!”(或其它串),中断十次后,程序退出。
三.编程提示1.本实验使用PC/XT机内的8259A芯片,主机启动实际时已奖8259A 中断寄存器前五位初始化为00001,因此,IRQ2的中断号应为0AH。
2.主机吧IRQ2保留给用户使用,而其他外中断已由系统时钟,键盘等占用,因此,编程时要注意系统中已使用的中断请求号。
只须将IMR寄存器中对应IRQ2的位清零,允许IRQ2中断即可。
3.机内8259A初始化为普通结束方式,因此,外中断结束时,必须使用中断结束命令清除中断服务寄存器ISR中的对应位。
4.程序退出时,关闭IRQ2中断,即给IMR中相应位置1,禁止中断。
5.PC 机系统中8259A地址:偶地址 20h奇地址 21h6. PC机系统中IRQ2硬中断为用户保留的。
编程时首先应将IRQ2对应的中断向量(中断号为0ah)保存起来,然后设置新的中断向量以指向中断处理程序。
另外,还要将中断屏蔽寄存器的相应位开放。
典型的程序段如下: MOV AH, 35HMOV AL, OAH ;取0AH号中向量送ES: BXINT 21HPUSH ES ;保存原中断向量PUSH BXPUSH DXMOV DX ,SEG ADINTMOV DS ,DXMOV DX ,OFFSET ADINT ;设置新的中断向量MOV AH ,25HMOV AL ,0AHINT 21HPOP DSIN AL ,21H ;取中断屛蔽寄存器的内容PUSH AX ;保存AND AL ,11111011B ;允许IRQ2中断OUT 21H ,AL7、PC机系统中的8259A工作在全嵌套方式下,在中断处理程序结束时,需要发中断结束命令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告
学生姓名:林海金学号:6100210178 专业班级:卓越通信101班
实验类型:验证□综合□设计□创新实验日期:2012-5-22 实验成绩:
一、实验项目名称
实验五8259A中断控制器实验
二、实验目的
(1)了解8259A中断控制器的工作原理。
(2)了解PC机中断的原理和过程。
(3)学会中断程序的编写。
三、实验要求
编写中断程序,在请求8259A1时,能够响应8259A的硬件中断,并在数码管上显示“IRQ0…”字样,中断结束时,显示“E…IRQ”。
四、实验仪器及连线方式
1)实验仪器:AEDK-T598D实验系统。
2)连线方式:INT0连接至+PULSE;8259A的片选接至试验箱的200H;8279的片选接至210H~217H。
五、实验说明
以中断0为例,先加载主中断程序,然后再加载中断程序IRQ0程序,然后打开对话窗口,输入“SW 0:0020,<回车>0000,””8200<回车>”,在执行“G8100:0<回车>Y”即可。
六、实验参考程序
INT00 EQU 200H
INT01 EQU 201H
Z8279 EQU 239H
D8279 EQU 238H
LEDMODE EQU 00H
SCANFRQ EQU 38H
DATA SEGMENT
DATA ENDS
STACK SEGMENT
STA DW 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: CLI
MOV AL,13H
MOV DX,INT00
OUT DX,AL
NOP
NOP
MOV AL,8
MOV DX,INT01
OUT DX,AL
MOV CX,0FFFH
L00: LOOP L00
MOV AL,3
MOV DX,INT01
OUT DX,AL
MOV CX,0FFFH
MOV CX,0FFFH
L01: LOOP L01
NOP
NOP
MOV DX,Z8279
MOV AL,LEDMODE
OUT DX,AL
MOV AL,SCANFRQ
OUT DX,AL
MOV DX,INT01
MOV AL,00H
OUT DX,AL
MOV CX,0FFFH
L02: LOOP L02
MOV DX,INT00
MOV AL,20H
OUT DX,AL
MOV CX,0FFFH
L03: LOOP L03
MOV DX,Z8279
MOV AL,90H
OUT DX,AL
MOV AL,0D0H
OUT DX,AL
MOV CX,0FFFFH
L2: LOOP L2
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV AL,0FH
OUT DX,AL
JMP SHORT $+2
STI
HLT0
X2: MOV DX,Z8279
MOV AX,0D0H
OUT DX,AL
MOV CX,0FFFH
LOOP L5
L5: LOOP L5
MOV AL,90H
OUT DX,AL
MOV DX,D8279
MOV AL,67H
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV AL,0FH
OUT DX,AL
MOV AL,80H
OUT DX,AL
OUT DX,AL
MOV AL,79H
OUT DX,AL
JMP SHORT X2
NOP
CODE ENDS
END START
Z8279 EQU 239H
D8279 EQU 238H
INT0 EQU 200H
DATA SEGMENT
DATA ENDS
STACK SEGMENT
STACK END
SCODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: STI
MOV CX,0FFFH
MOV DX,Z8279
MOV AL,0D0H
OUT DX,AL
L1: LOOP L1
MOV AL,90H
OUT DX,AL
MOV DX,D8279
MOV AL,80H
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,3FH
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV AL,0FH
OUT DX,AL
MOV CX,0FFFFH
12: LOOP L2
MOV DX,INT0
MOV AL,20H
OUT DX,AL
IRET
CODE ENDS
END START
七、实验步骤
1、实验前检查实验箱是否完好,串口是否正确连接;
2、按照实验电路图连接好电路,并检测通讯口;
3、在LCA88ET环境中依次进入文件--打开--EXP--88ASM--8259A和Irgo;
4、程序加载:设置--实验机--加载地址,8259A加载到8100H,Irgo加载到8200H;
5、在LCA88ET环境中进行程序调试,调试(或窗口)--对话窗口--SW 0:0200<回车>
0000,8200<回车>,再执行G8100:0<回车>Y
6、运行程序,按下按键,看实验箱上数码管显示结果是否正确;
3、实验结果:程序运行后,每次按下按键都能产生中断。
八、实验小结
1、通过本次实验,熟悉了8259A中断控制器编程方法和硬件的使用。
2、编写程序,进一步了解PC机中断的原理和过程。
3、要多加练习,熟悉在汇编环境和实验箱硬件的使用的过程。
4、本实验有主程序和中断服务程序等两个程序,要加载到不同的地址。
5、在理解原有程序的基础上,学会了中断处理程序的编写。