[计算机硬件及网络]微机17.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机硬件及网络]微机17

7.4.4 8237A的初始化编程与应用举例 1、8237A的软件命令 (1)复位命令 也称为主清命令,与RESET信号作用相同。 (2)清除先/后触发器命令 8237A各通道的地址寄存器和字节计数寄存器都是16位的,而数据线只有8位,一次只能传送一个字节,因此采用连续两字节方式读写这些寄存器。为确保正确,8237A设置了一个内部先/后触发器用来控制读写16位寄存器的顺序。当先/后触发器清0时,读写低8位数据,然后自动置1,读写高8位数据,接着再自动清0,如此循环。每次8237A复位后,先/后触发器被清0。 (3)清除屏蔽寄存器 2、8237A初始化编程的一般步骤 1)输出复位命令,使8237A允许接受DMA请求,先/后触发器清0; 2)选择使用的通道,并写入相应通道当前地址寄存器和基地址寄存器的初始值; 3)输入当前字节计数器和基字节计数寄存器的初始值,确定要传送的字节数; 4)写入方式寄存器,以确定8237A的工作方式和传送类型; 5)写入控制寄存器,以控制8237A的工作; 6)写入屏蔽寄存器; 7)若有软件请求,则写入请求寄存器。 3、应用举例 例7-3:试编写利用IBM PC/XT系统中8237A从某接口电路(非软盘或硬盘接口)向内存某区域传送32字节数据的8237A初始化程序。要求每进行一次DMA请求后即从接口电路向内存传送一字节数据,该内存区域的起始地址为4000H : 0000H,相应的提供高4位地址A19~A16的页面寄存器地址为0083H。 解:在IBM PC/XT系统中,通道0用来对动态RAM进行刷新;通道1为用户所保留,用来提供其它传送功能;通道2用于软盘和内存之间的数据传送;通道3用作硬盘和内存之间的数据传送。 由题意可知数据的传送方式为单字节写传送,地址加1变化,则方式字可置为45H。 IBM PC/XT系统中8237A始终使用固定优先级,假设DACK低电平有效,DREQ高电平有效,则控制字可置为00H。 MOV DX, DMA +0DH ;DMA+0DH为复位命令端口地址 OUT DX, AL ;发复位命令 MOV AL,00H MOV DX,DMA +02H ;DMA+02H是通道1基地址与当前地址寄存器端口地址 OUT DX,AL ;写入低8位地址,先/后触发器在复位时被清0 MOV AL,00H MOV DX,DMA +02H OUT DX,AL ;写入高8位地址 MOV AL,04H MOV DX,0083H ;置页面寄存器 OUT DX,AL ;写入地址最高4位A19~A16 8237A提供了16位地址A15~A0,该16位地址与页面寄存器提供的高4位地址A19~A16共同构成系统20位内存地址A19~A0。由于8237A实际传送的字节数比编程写入的字节数大1,因此编程时要传送的字节数初始值应置为32-1=31。 根据8237A初始化编程的一般步骤,初始化程序如下: MOV AX,31 ;实际传送的字节数比编程写入的字节数多1 MOV DX,DMA+03H ;DMA+03H是通道1基字节计数寄存器与当前字节计数 ;寄存器端口地址 OUT DX,AL ;写入初始值低8位 MOV AL,AH OUT DX,AL ;写入初始值高8位 MOV AL,45H MOV DX,DMA +0BH ;DMA+0BH是方式寄存器端口地址 OUT DX,AL ;设置通道1方式字:单字节写传送方式、地址加1 ;变化、禁止自动预置 MOV AL,00H MOV DX,DMA +08H ;DMA+08H是控制寄存器端口地址 OUT DX,AL ;设置控制字:DACK低电平有效、DREQ高电平

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档