6.6 8259A初始化举例-讲义.pdf

上传人:奉*** 文档编号:4055563 上传时间:2021-01-09 格式:PDF 页数:18 大小:557.17KB
返回 下载 相关 举报
6.6 8259A初始化举例-讲义.pdf_第1页
第1页 / 共18页
6.6 8259A初始化举例-讲义.pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《6.6 8259A初始化举例-讲义.pdf》由会员分享,可在线阅读,更多相关《6.6 8259A初始化举例-讲义.pdf(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、知识点6.6.4 1 8259A编程举例 8259A的应用举例 【例6-7】 在某8088系统配置一片中断控制器8259A,其端口地址为8CH和8DH。中断源的 中断请求线连到IR7输入线上,边沿触发方式,IR7的中断类型码为77H,其它条 件保持8259A的复位设置状态。要求: (1)写出8259A的初始化程序。 (2)写出中断类型码为77H的中断向量设置程序。 2 3 由于只使用1片8259A,初始化程序只需要写入ICW1、ICW2、ICW4和OCW1。 ICW1命令字。单片、边沿触发、需要ICW4,故为00010011B=13H,写入偶 地址(8CH)。 ICW2命令字。IR7的中断类型

2、码为77H,即可将70H作为ICW2命令字写入奇地 址(8DH)。 ICW4命令字。8088 CPU、正常全嵌套方式、自动EOI结束、非缓冲方式,故 为00000011B=03H,写入奇地址(8DH)。 OCW1命令字。系统只使用了IR7,为防止干扰,产生误动作,应将IR0-IR6屏 蔽掉,屏蔽字为01111111B=7FH,写入奇地址(8DH)。 初始化程序段为:初始化程序段为: INIT8259 PROC NEAR MOV AL,13H ;ICW1 OUT 8CH,AL MOV AL,70H ;ICW2 OUT 8DH,AL MOV AL,03H ;ICW4 OUT 8DH,AL MOV

3、AL,7FH ;OCW1 OUT 8DH,AL STI RET INIT8259 ENDP 4 中断向量设置程序中断向量设置程序 假设中断服务程序名为INTP,该符号地址包含段值属性和段内偏移量属性,将 这二者分别存入中断向量表。中断类型码77H的中断向量地址为77H4=1DCH, 即占用1DCH1DFH4个单元,其中1DEH1DFH存放INTP的段地址,1DCH1DDH存 放INTP的段内偏移量。 5 用串指令完成中断向量的设置,程序如下: CLI MOV AX,0 MOV ES,AX ;中断向量表段地址 MOV DI,1DCH ;中断向量表偏移地址 MOV AX,OFFSET INTP ;

4、中断服务程序偏移地址 CLD STOSW MOV AX,SEG INTP ;中断服务程序段地址 STOSW STI 6 中断实例 在某8088系统中使用了一片中断控制器8259A,其端口地址为9000H和9001H。 单脉冲信号作为中断源中断请求信号连接到IR0上,边沿触发方式。IR0的中断类 型码为70H,其它条件保持8259A的复位设置状态。要求对每次中断进行计数, 并将计数结果通过8255A芯片的PA口输出。8255A的端口地址8000H8003H。 7 8255 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB

5、7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 WR A0 A1 RD WR RD CSCS0 RESET RESET LED0 LED1 LED2 LED3 LED4 LED5 LED6 LED7 1 2 3 4 5 6 34 27 28 29 30 31 32 33 9 8 36 18 19 20 21 22 23 24 25 37 38 39 40 8259 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 VCC GND CAS0 CAS1 CAS2 AD0 AD1 AD2 AD3 AD4 A

6、D5 AD6 AD7 D0 D1 D2 D3 D4 D5 D6 D7 A0 WR A0 INT RD WR RD CS CS5 21 20 19 18 3 27 11 4 5 6 7 8 9 10 17 26 1 28 16 14 13 15 25 24 23 22 SP/E 12 2 INTAINTA INTR 单脉冲 VCC VCC 中断实例 在某8088系统中使用了一片中断控制器8259A,其端口地址为9000H和9001H。 单脉冲信号作为中断源中断请求信号连接到IR0上,边沿触发方式。IR0的中断类 型码为70H,其它条件保持8259A的复位设置状态。要求对每次中断进行计数, 并将计

7、数结果通过8255A芯片的PA口输出。8255A的端口地址8000H8003H。 8 8255 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 WR A0 A1 RD WR RD CSCS0 RESET RESET LED0 LED1 LED2 LED3 LED4 LED5 LED6 LED7 1 2 3 4 5 6 34 27 28 29 30 31 32 33 9 8 36 18 19 2

8、0 21 22 23 24 25 37 38 39 40 8259 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 VCC GND CAS0 CAS1 CAS2 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 D0 D1 D2 D3 D4 D5 D6 D7 A0 WR A0 INT RD WR RD CS CS5 21 20 19 18 3 27 11 4 5 6 7 8 9 10 17 26 1 28 16 14 13 15 25 24 23 22 SP/E 12 2 INTAINTA INTR 单脉冲 VCC VCC mode equ82h ; 8255方式

9、控制字 ,PA口方式0,输出,PB口方式0,输入。 PA8255 equ8000h ; 8255 PA口输出地址 CTL8255 equ8003h;8255控制端口地址 ICW1 equ00010011b ; 单片8259, 上升沿触发, 要写ICW4 ICW2 equ01110000b ; 中断号为70H ICW4 equ00000011b ; 工作在8086/88 模式,AEOI方式,非缓冲方式,普通全嵌套方式 OCW1 equ11111110b ; 只响应INT0 中断 CS8259A equ09000h ; 8259偶地址 CS8259B equ09001h;8259寄地址 data

10、segment CNT db0 data ends 9 code segment assume cs:code, ds: data IEnterproc near;中断服务程序 push ax push dx movdx, PA8255 incCNT;计数值加1 moval, CNT out dx, al ;输出计数值 ;movdx, CS8259A ;moval, 20h ; 中断结束指令 ;out dx, al pop dx pop ax iret Ienterendp 10 IInit proc near;8259A初始化 movdx, CS8259A moval, ICW1 out d

11、x, al movdx, CS8259B moval, ICW2 out dx, al moval, ICW4 out dx, al moval, OCW1 out dx, al ret IInit endp 11 start proc near;主程序 movdx, CTL8255;8255A初始化 moval, mode out dx, al cli;关中断 movax, 0 moves, ax movdi, 4*ICW2 ;中断号*4,中断向量表中的首地址 movax, offset IEnter; 中断入口地址(段地址为0) cld stosw movax, seg IEnter; 中

12、断入口地址(段地址为0) stosw 12 call IInit movax, data movds, ax movCNT, 0 ; 计数值初始为0 moval, CNT movdx, PA8255 out dx, al sti LP: ; 等待中断,并计数。 nop jmpLP start endp code ends end start 13 start proc near;主程序 movdx, CTL8255;8255A初始化 moval, mode out dx, al cli;关中断 movax, 0 moves, ax movdi, 4*ICW2 ;中断号*4,中断向量表中的首地址

13、 movax, offset IEnter; 中断入口地址(段地址为0) cld stosw movax, seg IEnter; 中断入口地址(段地址为0) stosw 14 call IInit movax, data movds, ax movCNT, 0 ; 计数值初始为0 moval, CNT movdx, PA8255 out dx, al sti LP: ; 等待中断,并计数。 nop jmpLP start endp code ends end start 15 #define PA8255 0 x8000 /* 8255 PA输出地址 */ #define CTL8255 0

14、 x8003 #define mode 0 x82 #define ICW1 0 x13 /* 单片8259, 上升沿中断, 要写ICW4 */ #define ICW2 0 x70 /* 中断号为70H */ #define ICW4 0 x03/* 工作在8086/88 方式 */ #define OCW1 0 xfe /* 只响应INT0 中断 */ #define CS8259A 0 x9000 #define CS8259B 0 x9001 extern unsigned char IN(unsigned int port); extern void OUT(unsigned int

15、 port, unsigned char v); extern void DISABLE(void); extern void ENABLE(void); extern void SETINT(unsigned char NO, unsigned int *ENTER); 16 unsigned char CNT; interrupt IEnter() CNT+; OUT(PA8255, CNT); /* OUT(CS8259A, 0 x20); 中断结束指令 */ void IInit() OUT(CS8259A, ICW1); OUT(CS8259B, ICW2); OUT(CS8259B, ICW4); OUT(CS8259B, OCW1); 17 void main() OUT(CTL8255,mode); DISABLE(); /* 关闭中断响应 */ IInit(); SETINT(ICW2, /* 中断入口地址 */ CNT = 0; OUT(PA8255, CNT); ENABLE(); /* 打开中断响应 */ while (1); /* 等待中断,并计数。*/ 18

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com