实验五 8259A中断控制器实验

合集下载

微机接口实验报告8259中断控制器实验

微机接口实验报告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的单极中断控制和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中断控制器实验概论

微机原理与汇编语言_实验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中断控制器——利用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可编程中断控制器实验

集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验二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中断控制器实验报告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中断控制器实现

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中断控制完整实验报告

微机原理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从片上也接了一个中断。

再下面就是中断服务程序,实验中中断服务程序有延时,但是在正常编程情况下中断服务程序决不允许有延时,中断服务程序要快进快出
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、在理解原有程序的基础上,学会了中断处理程序的编写。

相关文档
最新文档