
中断控制器8259A的初始化尤为复杂,他的控制字、方式字相对于8253 8255要多。就给你一道例题吧。
某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址为20H和21H。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。试编写主片和从片的初始化程序。
根据题意,写出ICW1, ICW2, ICW3和ICW4的格式,按图6.21的顺序写入。编写初始化程序如下:
主片8259A的初始化程序如下:MOV AL, 00010001B 级联, 边沿触发, 需要写ICW4
OUT 20H, AL 写ICW1
MOV AL, 01000000B 中断类型号40H
OUT 21H, AL 写ICW2
MOV AL, 00000100B 主片的IR2引脚接从片
OUT 21H, AL 写ICW3
MOV AL, 00010001B 特殊完全嵌套、非缓冲、自动结束
OUT 21H, AL 写ICW4
从片8259A初始化程序如下:
MOV AL, 00010001B 级联, 边沿触发, 需要写ICW4
OUT 80H, AL 写ICW1
MOV AL, 01110000B 中断类型号70H
OUT 81H, AL 写ICW2
MOV AL, 00000010B 接主片的IR2引脚
OUT 81H, AL 写ICW3
MOV AL, 00000001B 完全嵌套、非缓冲、非自动结束
OUT 81H, AL 写ICW4
建议楼主多看看课本,理解里面控制字方式字的格式,多看看例题。
呵呵~~我们是同行啊~~~也许是对的吧~~顶~~顶~~~
顶~~~~MOV AX,FLAGS
AND AX,1111110111111111B 关中断
MOV FLAGS,AX
MOV AL,00110110B 假设定时器0设为方式3
OUT 43H,AL
MOV AL,XXH
OUT 40H,AL
MOV AL,XXH
OUT 40H,AL 定时器0初值
MOV AL,01110110B 假设定时器1设为方式3
OUT 43H,AL
MOV AL,XXH
OUT 41H,AL
MOV AL,XXH
OUT 41H,AL 定时器1初值
MOV AH,35H
MOV AL,0AH
INT 21H
PUSH ES 保存原向量
PUSH BX
PUSH DS 借用DS和DX作中断入口,暂时保存原值
PUSH DX
MOV DS,XXH 新中断向量段地址
MOV DX,XXH 新中断向量偏移量
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
IN AL,21H
MOV SAV_IR,AL 保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间)
OR AL,00000100B 开IR2
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B 开中断
MOV FLAGS,AX
WAIT1:
JMP WAIT1
2.
MESSAGE DB 'THIS IS A 8259A INTERRUPT$'
SAV_IR DB 0
MOV AH,9
MOV DX,SEG MESSAGE
MOV DS,DX
MOV DX,OFFSET MESSAGE
INT 21H
MOV AX,FLAGS
AND AX,1111110111111111B 关中断
MOV FLAGS,AX
PUSH DS 借用DS和DX作中断入口,暂时保存原值
PUSH DX
MOV DS,ES
MOV DX,BX 原0AH中断向量值
MOV AH,25H
MOV AL,0AH
INT 21H
POP DX
POP DS
MOV AL,SAV_IR 读回8259原设置值
OUT 21H,AL
MOV AX,FLAGS
OR AX,0000001000000000B 开中断
MOV FLAGS,AX
IRET
一、实验要求
利用 8086 外接 8253 可编程定时/计数器,可以实现方波的产生。
二、实验目的
1、学习 8086 与 8253 的连接方法。
2、学习 8253 的控制方法。
3、掌握 8253 定时器/计数器的工作方式和编程原理
三、实验说明
8253 芯片介绍
8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V 单电源供电。
8253 的功能用途:
⑴延时中断;⑵可编程频率发生器;⑶事件计数器;⑷二进制倍频器⑸实时时钟;⑹数字单稳⑺复杂的电机控制器。
8253 的六种工作方式:
⑴方式0:计数结束中断;⑵方式l:可编程频率发生;⑶方式2:频率发生器;⑷方式3:方波频率发生器;⑸方式4:软件触发的选通信号;⑹方式5:硬件触发的选通信号。
四、实验步骤
1、Proteus 仿真
a.在 Proteus 中打开设计文档“8253_STM.DSN”;
b.建立实验程序并编译,仿真;
c.如不能正常工作,打开调试窗口进行调试。
参考程序:
CODE SEGMENT
ASSUME CS: CODE
START:
JMP TCONT
TCONTRO EQU 0A06H
TCON0 EQU 0A00H
TCON1 EQU 0A02H
TCON2 EQU 0A04H
TCONT:
MOV DX, TCONTRO
MOV AL,16H 计数器 0,只写计算值低 8 位,方式 3,二进制计数
OUT DX, AL
MOV DX, TCON0
MOV AX, 20 时钟为 1MHZ,计数时间=1us*20=20us,输出频率 50KHZ OUT DX,AL
JMP $
CODE ENDS
END START
五、实验电路及连线
1、Proteus 实验电路
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)