dma.h

#ifndef dmaqudong
#define dmaqudong

#include"kernel.h"
/存储器到设备
void set_dma_fp_read( );         //设置dma软盘读命令函数
void set_dma_hd_read();         //设置dma硬盘读命令函数
/设备到存储器
void set_dma_hd_write();        //设置dma硬盘写命令函数
void set_dma_fp_write();        //设置dma软盘写命令函数

void set_dma_fp_read()
{
 //软盘dma设置,开通通道2
  __asm
  {
    MOV  DX,081H
    MOV  AL,00H
    OUT  DX,AL
    OUT  0DH,AL    ;总清命令
    OUT  0CH,AL    ;清除先后触发器
    MOV  AL,00H
    OUT  04H,AL
    MOV  AL,60H
    OUT  04H,AL    ;地址
    MOV  AL,00H
    OUT  05H,AL
    MOV  AL,02H
    OUT  05H,AL    ;计数器
    MOV  AL,01001010B
    OUT  0BH,AL    ;方式字
    MOV  AL,2H
    OUT  0AH,AL    ;
    MOV  AL,01000000B
    OUT  08H,AL    ;命令寄存器
  }
 }
void  set_dma_hd_read()
{
                //开通通道3

  __asm
  {
    MOV  DX,081H
    MOV  AL,00H
    OUT  DX,AL
    OUT  0DH,AL    ;总清命令
    OUT  0CH,AL    ;清除先后触发器
    MOV  AL,00H
    OUT  06H,AL
    MOV  AL,50H
    OUT  06H,AL    ;地址
    MOV  AL,00H
    OUT  07H,AL
    MOV  AL,02H
    OUT  07H,AL    ;计数器
    MOV  AL,01001011B
    OUT  0BH,AL    ;方式字
    MOV  AL,2H
    OUT  0AH,AL    ;
    MOV  AL,01000000B
    OUT  08H,AL    ;命令寄存器
  }
}


void set_dma_fp_write()
{
   //软盘dma设置,开通通道2
 
  __asm
  {
    MOV  DX,081H
    MOV  AL,00H
    OUT  DX,AL
    OUT  0DH,AL    ;总清命令
    OUT  0CH,AL    ;清除先后触发器
    MOV  AL,00H
    OUT  04H,AL
    MOV  AL,60H
    OUT  04H,AL    ;地址
    MOV  AL,00H
    OUT  05H,AL
    MOV  AL,02H
    OUT  05H,AL    ;计数器
    MOV  AL,01000110B
    OUT  0BH,AL    ;方式字
    MOV  AL,2H
    OUT  0AH,AL    ;
    MOV  AL,01000000B
    OUT  08H,AL    ;命令寄存器
  }
}
void set_dma_hd_write()
{
                   //开通通道3
 
  __asm
  {
    MOV  DX,081H
    MOV  AL,00H
    OUT  DX,AL
    OUT  0DH,AL    ;总清命令
    OUT  0CH,AL    ;清除先后触发器
    MOV  AL,00H
    OUT  06H,AL
    MOV  AL,50H
    OUT  06H,AL    ;地址
    MOV  AL,00H
    OUT  07H,AL
    MOV  AL,02H
    OUT  07H,AL    ;计数器
    MOV  AL,01000111B
    OUT  0BH,AL    ;方式字
    MOV  AL,2H
    OUT  0AH,AL    ;
    MOV  AL,01000000B
    OUT  08H,AL    ;命令寄存器
  }
 }


#endif

转载于:https://my.oschina.net/u/268739/blog/53027

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值