优·计算机接口第7章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1) 微机中DMA系统的组成 由两片DMA控制器、DMA页面地址寄存器,以及总线裁决逻辑构成一个完整的DMA系统。 7.4 8237DMA控制器的应用 HLDA HRQ 8237 DMAC2 DRQ4 DRQ5 DRQ6 DRQ7 DACK4 DACK5 DACK6 DACK7 HLDA HRQ 8237 DMAC1 DRQ0 DRQ1 DRQ2 DRQ3 DACK0 DACK1 DACK2 DACK3 在PC微机的DMA系统中为每一个通道设置一个DMA页面地址寄存器,以提供16位以上的地址线。 7.4 8237DMA控制器的应用 0 1 6 5 3 7 2 通道号 端口地址 87H 83H 89H 8BH 82H 8AH 81H 对请求以DMA方式传输的I/O设备,在进行读/写数据时,只要BACK信号和RD或WR信号同时有效,就能完成对I/O设备的读/写操作,而与I/O设备的端口地址无关。 2)DMA系统的初始化 7.4 8237DMA控制器的应用 系统对8237初始化的设置如下规定:指定8237为非存储器到存储器方式,允许8237工作,采用正常时序,固定优先级, 滞后写入,DRQ信号高电平有效,DACK信号低电平有效。 其命令字为=00H MOV AX,00H ; DMA初始化代码 OUT 08H, AL ;DMA命令寄存器 3)DMA传输参数设置 7.4 8237DMA控制器的应用 (1)向命令寄存器写入命令字 (2)向方式字寄存器写入方式字 (3)屏蔽所选用的通道 (4)置先/后触发器为0态 (5)写基地址寄存器 (6)写页面地址寄存器 (7)写基字节计数寄存器 (8)接触所选通道的屏蔽 4)参数设置举例 7.4 8237DMA控制器的应用 例12 某数据采集系统所采集的400H个字节的数据,采用DMA系统中8237的通道1,传输到起始地址为F0000H的内存。(程序中变量DMA地址00H) disable ( ) ; //关中断 outportb(DMA+0x0B,45H); //方式命令(单字节,地址加1,非 自动预置,DMA写,通道1) outportb(DMA+0x0A,0x05); //屏蔽通道1 outportb(DMA+0x0C,0x05); //清除先/后触发器(AL可以为其 他任意数据) 7.4 8237DMA控制器的应用 //设置内存地址寄存器和页面寄存器 outportb(DMA+0x02,0x00); //16位内存地址,先写低8位 outportb(DMA+0x02,0x00); //再写高8位 outportb(0x83,0x0f); //页面地址为0FH //设置传送字节计数器 outportb(DMA+0x03,0xff); //写入低8位字节数到通道1的基字 节计数寄存器 outportb(DMA+0x03,0x03); //再写高8位 Enable( ); //开中断 outportb(DMA+0x0A,0x01); //开放通道1,允许响应DREQ1请求 7.4 8237DMA控制器的应用 例13 8位A/D转换的DMA传送 D0 ? ? ? D7 RD Q 8253 GATE Q 采样 保持 D0 ? ? ? D7 IOR DACK CLR PR U3 CLR PR U1 Q Q 停止采样 启动采样 DRQ RESET OUT CLR PR EOC 启动 保持 模拟输入 7.4 8237DMA控制器的应用 #defineDMA_CH 1; 定义DMA_CH=1为所用的DMA通道 void transin(char *buff , int count) {unsigned long buf_seg, buf_off, add; int page; buf_seg = FP_SEG(buff); 取buff段地址 buf_off = FP_OFF(buff); 取buff偏移量 add = buf_seg * 16 + buf_off; 得到buff全地址,即物理地址 page = add / 65536; 获得buff的页面值,放入page disable(); 禁止中断 outportb

文档评论(0)

tianjiao123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档