原创 8259中断控制器实验(2)

2008-11-28 15:44 7871 10 10 分类: MCU/ 嵌入式

实验二    8259中断控制器实验<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


一、实验目的


掌握8259中断控制器的接口方法与程序设计。


二、实验要求


编制程序,将中断触发信号连接8259芯片的IR0TR7的任意输入端,作为中断源,产生单一中断,系统显示中断号的数字。


三、程序流程


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


四、实验电路


 



五、实验提示


1)“SP”插孔和8259A 中断输入TR0IR7插孔相连,“SP”端初始为低电平。


2)按照实验1电路连接138译码电路,8259CS端连138译码器的Y0Y7孔。


3)将8259单元的D0~D7,用8芯扁平线与数据总线单元D0~D7的任意接口相连。


 


六、实验程序设计


1.编程提示:


8259中断控制器是专为控制优先级中断设计的芯片。它将中断源优先级排队、中断源识别以及提供中断矢量的电路集于芯片中。因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,中断结构可以由用户编程来设定。在不需要增加其它电路的情况下,通过多片8259的级联,能构成多达64级的矢量中断系统。




中断序号


0


1


2


3


4


5


6


7


变量地址


20~23h


24~27h


28~2Bh


<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2C~2Fh


30~33h


34~37h


38~3Bh


3C~3Fh


本实验中使用8259A的任意中断源TR0IR7,中断方式为边沿触发方式,按动AN按钮产生一次中断,编写程序,使系统每次响应外部中断时,显示1个与中断源对应的数字字符,显示满以后清空显示“P.”继续等待中断。


 


2.参考程序


ZXK   EQU 0FFDCH   ;显示字形口地址


ZWK   EQU 0FFDDH   ;显示字位口地址


Port0  EQU  ( 0FF80)    ;8259A端口地址,A0=0


Port1  EQU  ( 0FF81)    ;8259A端口地址,A0=1


/*******端口地址=片选+片内**********/


 


CODE   SEGMENT


    ASSUME CS:CODE,DS:CODE,ES:CODE


    ORG 3400H


H8:   JMP P8259


LED   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H


       DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H


BUF   DB ?,?,?,?,?,?


P8259: CLI


    CALL WP      ;初始化显示“P.


--------------建立中断向量表-----------------


    MOV AX,OFFSET INT8259  


    MOV BX, (中断序号低2位 )     中断向量表地址,在此地址中存放中断子程序偏移地址


    MOV [BX],AX     


    MOV BX, (中断序号高2位  )     中断向量表地址,在此地址中存放中断子程序的段地址


 


 


 


/**************这里一般是实验系统固定的*****************/


 

    MOV AX,0000H  


    MOV [BX],AX   


    CALL FOR8259   


    M0V SI,0000H


    STI              


CON8:  CALL DIS    


    JMP CON8


;----------------8259中断子程序---------------


INT8259:CLI    


    MOV BX,OFFSET BUF


    MOV BYTE PTR [BX+SI],07H


    INC SI


    CMP SI,0007H


    JZ X59


XX59:  MOV AL,20H   


    MOV DX,Port0


    OUT DX,AL


    MOV CX,0050H


xxx59: PUSH CX


    CALL DIS


    POP CX


    LOOP xxx59


   


    STI


    IRET


X59:  MOV SI,0000H


    CALL WP


    JMP XX59


;============8259初始化子程序===========


FOR8259:


由学生完成


            mov dx,port0
                mov al,13h
                out dx,al   ; ICW1中断请求触发方式设定+芯片数目的设定



                mov dx,port1
                mov al,8
                out dx,al  ;ICW2中断类型号的确定


(这里可以随意自己设定高5位,低3位系统自 动分配给IR中断请求线)


 



                mov al,9
                out dx,al    ;ICW4缓冲方式+中断结束方式设定


 



                mov al,7fh
                out dx,al   :ocw1屏蔽低六位
                ret


 


  


 


 


;-------------------------------------


WP:   MOV BUF,11H   ;初始化显示“P.


    MOV BUF+1,10H


    MOV BUF+2,10H


    MOV BUF+3,10H


    MOV BUF+4,10H


    MOV BUF+5,10H


    RET


;----------------显示子程序-------------


DIS:  MOV CL,20H


    MOV BX,OFFSET BUF


DIS1:  MOV AL,[BX]


    PUSH BX


    MOV BX,OFFSET LED


    XLAT


    POP BX


    MOV DX,ZXK


    OUT DX,AL


    MOV AL,CL


    MOV DX,ZWK


    OUT DX,AL


    PUSH CX


    MOV CX,0100H


DELAY: LOOP $


    POP CX


    CMP CL,01H


    JZ EXIT


    INC BX


    SHR CL,1


    JMP DIS1


EXIT:  MOV AL,00H


    MOV DX,ZWK


    OUT DX,AL


    RET


;-------------------------------------


CODE  ENDS


    END H8


 


七、实验要求


1)通过完成注释,说明中断向量表的建立过程。


2)完成8259初始化子程序设计


3阅读程序,说明在显示程序中如何获得段码。


4)阅读程序,写出本程序中所用8259A的命令字。


5)实验程序在Inter8088实验系统环境中实现编译、连接、装载成功后,通过Inter8088实验系统环境中的连续运行命令,实现程序运行。


6)或通过实验箱键盘输入程序起始地址,按EXEC键运行已经装载成功的程序。(7)按动AN按钮产生中断信号,LED数码管从最高位开始依次显示数字,显示


满六位后,最高位显示“P.”继续等待中断。


 


 


 


菜鸟收获:这次试验的关键是中断向量表的建立=中断号+中断程序的入口地址(菜鸟认为是cpu通过  中断号  访问  中断服务程序的入口地址 )/中断号由ICW2定义5位+自动分配的3位 =======>对应系统提供的中断序号地址(即中断服务程序的入口地址)


 


 


第一次实验的心得。。。。。。。请同学们批正!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2012-12-10 15:31

谢谢分享
相关推荐阅读
用户172079 2008-11-30 15:46
总想追求完美。。
总想追求完美。。。就连起名字也一样!总想起一个可以完美的。。。。。。。郁闷!  或许自己还没确定自己的职业道路。。。或许对职业的认可还没有达到一定深度!这个名字就很好!...
用户172079 2008-11-28 13:43
简单I/O口扩展(接口实验1)
______________________________________________________________________实验名称:实验一  简单I/O口扩展<?xml:nam...
用户172079 2008-11-22 16:32
10分钟学会PLD设计(6)
10分钟学会PLD设计<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />4 下载验证 ...
用户172079 2008-11-22 16:29
10分钟学会PLD设计(5)
10分钟学会PLD设计<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />3 波形仿真此...
用户172079 2008-11-22 16:27
10分钟学会PLD设计(4)
10分钟学会PLD设计<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />2 编译和布线...
我要评论
1
10
关闭 站长推荐上一条 /3 下一条