微机-同济上大考研联盟_第1页
微机-同济上大考研联盟_第2页
微机-同济上大考研联盟_第3页
微机-同济上大考研联盟_第4页
微机-同济上大考研联盟_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8259的操作命令字(3个)及其操作过程中的编程1,操作命令字OCW1:A0=1时写入设置对8259中断源的屏蔽操作。2,操作命令字OCW2:A0=0时写入(完全嵌套与循环方式设置)设置优先级管理方式及中断结束命令例:非自动EOI下用OCW2发布结束命令撤消ISR中断标志。

MOV AL,20H ;20H是命令字,EOI=1 OUT 20H,AL ;A0=0,20H是OCW2地址或: MOV AL,01100***B;结束指定中断级***的中断

OUT 20H,AL ;A0=0,20H是OCW2地址3,操作命令字OCW3:A0=0时写入(特殊屏蔽与查询工作方式设置)查询读入字节用查询法排序:a,不用INTR或关中;b,发OCW3且P=1,RR和RIS=00,冻结IRR内容;c,A0=0时读入8259信息字节,如果I=1,则低3位为最高优先级中断,且置相应的ISR位。d,根据最低3位,计算出中断类型号。7.3.48259A的应用举例8259的10个寄存器只占2个地址(只有A0地址线),如何区分?读写共用端口,特征标志位、初始化顺序中断系统的应用方法1,分配合适的中断级:系统空余的、适当的优先级。2,设计中断请求逻辑:沿触发或电平触发;能返回中断类 型码;请求能及时撤消。3,确定中断类型号、编制中断服务程序、初始化中断向量表。8259应用举例1,8259与系统总线的连接对于8259,本图中A0,A2可任意&2,对8259的初始化与中断屏蔽寄存器的检查a,初始化程序(先画出流程图,看看同一个地址的寄存器)SET59A: MOV DX,0FF00H ;8259A0=0 MOV AL,00010011B;D4=1,ICW1;D3=LTIM=0 沿触发,D1=1单片,D0=1要ICW4 OUT DX,AL MOV DX,0FF02H ;8259A0=1 MOV AL,00011000B;ICW2(必须):中断类型码

IR0~IR7类型码18H~1FH OUT DX,AL MOV AL,00000011B;ICW4:8086/8088,

自动EOI,非缓冲,正常全嵌套

OUT DX,AL MOV AL,11100000B;OCW1:屏蔽IR5~IR7 OUT DX,ALb,检查中断屏蔽寄存器是否正常的程序段MOV DX,0FF02H;ICW1-ICW4结束后即默认8259A0=1为OCW1(IMR),除非再以ICW1开始一个初始化过程MOV AL,0 ;写全零OUT DX,ALIN AL,DX ;A0=1,IMROR AL,AL ;影响标志位ZFJNZ IMERR ;不为0出错MOV AL,0FFH ;写全一OUT DX,AL IN AL,DXADD AL,1 ;影响标志位ZFJNZ IMERR ;不为全1出错c,读ISR举例:MOV DX,0FF00H ;A0=0,读时可能为IRR,ISR,或标志码MOV AL,00001001B ;OCW3,P=D2=0,D0=1,下一次读ISR;D4D3=01代表OCW3OUT DX,AL ;写OCW3告诉下一次读哪一个IN AL,DX ;读出ISR3,一个完整的中断处理例子─电子钟(1)编写20ms中断服务程序每次中断(20ms)→n1=n1+1→n1<50→中断返回;

n1=50→second=second+1,n1=0→second<60→中断返回;second=60→minute=minute+1,second=0→minute<60→中断返回;

minute=60→hour=hour+1,minute=0→hour<24→中断返回;

hour=24→hour=0利用20ms一次的定时中断服务程序,建立时、分、秒电子钟中断服务子程序:CLOCK PROC FAR ;可长调用的子程序

PUSH AX ;现场保护 PUSH SI ;弹出要和它对应

MOV AX,SEGTIMER ;中断服务

MOV DS,AX MOV SI,OFFSETTIMER;得到具体地址

MOV AL,[SI] ;得到n1数据

INC AL ;n1+1 MOV [SI],AL 保存新n1 CMP AL,50 ; 1秒到? JNZ TR_END MOV AL,0 ;1秒到则修正n1=0 MOV [SI],AL ;重新送回

MOV AL,[SI+1] ;得出秒

ADD AL,1 ;second+1DAA ;BCD调整

MOV [SI+1],AL ;保存新second CMP AL,60H ;一分钟到?

JNZ TR_END ;未到

MOV AL,0 ;修正为0 MOV [SI+1],AL ;重新送回

MOV AL,[SI+2] ;分钟

ADD AL,1 ;+1 DAA ;BCD调整

MOV [SI+2],AL ;送回

CMP AL,60H ;一小时到?

JNZ TR_END ;未到 MOV AL,0 ;一小时到了,分清零

MOV [SI+2],AL ;重新送回

MOV AL,[SI+3] ;小时

ADD AL,1 ;+1 DAA ;小时调整

MOV [SI+3],AL ;先送出去

CMP AL,24H ;24小时到?

JNZ TR_END ;未到

MOV AL,0 ;小时为24,调整为0 MOV [SI+3],AL ;重新送出去TRNED: POP SI ;现场恢复

POP AX ;依次弹出

STI ;开中断,IF=1 IRET ;中断返回CLOCK ENDP(2)确定中断类型码,初始化8259IR0中断类型码为18H(18H号),初始化程序同前SET59A。(书架,四十二章经,每一部分为四小册)(3)初始化中断向量表(入口地址):INITB: MOV AX,0MOV DS,AX ;段地址为0MOV SI,18H ;段内偏移

SHL SI,1 ;中断类型码*4SHL SI,1 ;左移两位

MOV DX,OFFSETCLOCKMOV [SI],DX ;放置段内偏移,ipMOV DX,SEGCLOCKMOV [SI+2],DX ;放置段地址,cs

(4)总的程序框架DATA SEGMENT ;数据段TIMER DB4DUP(0) ;数据存放区,初始化为0DATA ENDSSTACK SEGMENTPARASTACK‘STACK’;堆栈段

DB100DUP(0)

;100个字节,初始化为0STACK ENDSCODE SEGMENT ;代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: [INITB] ;初始化中断向量表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论