内部寄存器的功能和应用 对计数寄存器的编程方法与上面介绍的对地址寄 存器的编程方法相同。例如,要把计数值0FFFH写 入到DMA控制器通道1的基本字计数寄存器和当前 字计数寄存器中,设DMAC的基I/O地址为 ADDER, 且 ADDER≤FoH,则可通过执行下列指令来实现 例【9-2】 MOV AL,0FFH 写低字节 OUT ADDER+3, AL MOV AL, OFH 写高字节 OUT ADDER+3, AL
内部寄存器的功能和应用 对计数寄存器的编程方法与上面介绍的对地址寄 存器的编程方法相同。例如,要把计数值0FFFH写 入到DMA控制器通道1的基本字计数寄存器和当前 字计数寄存器中,设DMAC的基I/O地址为ADDER, 且ADDER≤F0H,则可通过执行下列指令来实现 例【9-2】 MOV AL,0FFH ;写低字节 OUT ADDER+3,AL MOV AL,0FH ;写高字节 OUT ADDER+3,AL
82C37A其他5个寄存器 、命令寄存器(CR- command register) 由图9-1可以看出,82C37A内配备有一个8位 的命令寄存器。该寄存器的各位用来控制DMA控 制器所有通道的操作方式。图9-3给出了每个控制 位的功能;通常是通过这些位的设置来选择各种 操作,例如,存储器到存储器之间传送、允许DMA 控制器及选择优先级方式等。例如,当位0为1时 则允许存储器到存储器之间的DMA传送方式,而当 该位为0时,则DMA传送操作是在I0设备和存储器 之间进行。另外,若将位4设置为0,则全部4个通 道选择均为固定优先级方式;若这位被设置1,则 选择的是循环优先级
82C37A其他5个寄存器。 一、命令寄存器(CR-command register) 由图9-1可以看出,82C37A内配备有一个8位 的命令寄存器。该寄存器的各位用来控制DMA控 制器所有通道的操作方式。图9-3给出了每个控制 位的功能;通常是通过这些位的设置来选择各种 操作,例如,存储器到存储器之间传送、允许DMA 控制器及选择优先级方式等。例如,当位0为1时, 则允许存储器到存储器之间的DMA传送方式,而当 该位为0时, 则DMA传送操作是在I/O设备和存储器 之间进行。另外,若将位4设置为0,则全部4个通 道选择均为固定优先级方式;若这位被设置1,则 选择的是循环优先级
D 0禁止存储器到存储器传送 1允许存储器到存储器传送 0禁止通道0地址保持 1允许通道0地址保持 如果位0=0 0控制器允许 1控制器禁止 0正常定时 1压缩定时 如果位0=1 0固定优先级 1循环优先级 0滞后写选择 1扩展写选择 如果位3=1 0DREQ高电平有效 1DREQ低电平有效 0DACK低电平有效 1DACK高电平有效 图9-382c37A命令寄存器
方式寄存器(MR- Mode register) 82C37A的方式寄存器用于设备的操作特性。从 图9-1可以看出,4个DMA通道的每一个通道都分 别有一个方式寄存器,每个寄存器的长度均为6位。 其中的各个位用来为每个DMA通道选择各种操作方 式。典型方式寄存器的格式如图9-4所示 最低2位代码用以标识写入方式命令字节的通道号。 例如,在一个写入通道1的方式寄存器命令中,这2 位必须为01
二、方式寄存器(MR-Mode register) 82C37A的方式寄存器用于设备的操作特性。从 图9-1可以看出,4个DMA通道的每一个通道都分 别有一个方式寄存器,每个寄存器的长度均为6位。 其中的各个位用来为每个DMA通道选择各种操作方 式。典型方式寄存器的格式如图9-4所示 ◼ 最低2位代码用以标识写入方式命令字节的通道号。 例如,在一个写入通道1的方式寄存器命令中,这2 位必须为01
二、方式寄存器(MR- Mode register) D,位和D2位规定该通 00选择通道0 道是形成数据写、数据 01选择通道1 10选择通道2 读还是检验总线周期。 选择通道3 例如,如果将这两位设 )校验传送 置为01,那么该通道将 0写传送 0读传送 形成写数据传送,即I/o 设备到存储器的DMA数 ×如果位6和位7=11 据传送 0)禁止自动初始化 1允许自动初始化 D4和D5分别决定在 0选择地址 DMA周期结束及DMA数 选择地址减1 据传送时如何修改当前 00选择请求方式 01选择单了节方式 地址和当前计数寄存器 10选择块方式 中的值 11选择级联方式 图9-482C37A的方式寄存器
二、方式寄存器(MR-Mode register) ▪ D2位和D3位规定该通 道是形成数据写、数据 读还是检验总线周期。 例如,如果将这两位设 置为01,那么该通道将 形成写数据传送,即I/O 设备到存储器的DMA数 据传送 ▪ D4 和 D5 分别决定在 DMA周期结束及DMA数 据传送时如何修改当前 地址和当前计数寄存器 中的值