阅读:821回复:1
向各位高手请教DOS下用C驱动8237进行DMA传送的问题
我需要在dos下驱动DMA从外设传数进内存,用的是8237,现在把它的页面寄存器,地址寄存器,字数寄存器,模式寄存器,命令寄存器等都设置好了,运行后A/D触发DMA后检查它的DMA状态寄存器发现该通道的DMA传送已经完成,但在我设的内存地址却没有发现有数据传进来,是不是我有什么步骤没干阿???请高手指点一下~~~谢谢!!
outportb(DMA+0x0F,0xff); /*全部通道屏蔽位置1*/ outportb(DMA+2,Hight_address); /*设置通道1的内存地址初值*/ outportb(DMA+2,Low_address); outportb(DMA+3,a); /*设置通道1的计数值初值*/ outportb(DMA+3,b); outportb(DMA+0x000B,0x85); /*DMA通道1方式字:块模式,写传送,禁止自动初始化,选择地址递增*/ outportb(DMA+8,0); /*命令寄存器全置0*/ outportb(0x83,Page); /*设置页面寄存器,选择Page*64k开始的64k内存为页面*/ outportb(BASE+2,channel); /*通道选择*/ outportb(BASE+9,0x07); /*DMA使能,并选择Pacer作为A/D触发源*/ outportb(BASE+15,0x76); /*Counter工作于模式3*/ outportb(BASE+13,e); /*Counter的频率*/ outportb(BASE+13,f); outportb(BASE+15,0xB6); outportb(BASE+14,c); outportb(BASE+14,d); outportb(BASE+10,0); /*Pacer使能*/ outportb(DMA+0x0F,0x0d); /*启动通道1*/ |
|
沙发#
发布于:2004-05-26 19:54
请高手帮帮忙~~~
|
|