微处理器原理及应用--- 第七章 中断系统与8237A DMA控制器.ppt
文本预览下载声明
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高电平
显示全部