xinli->新利
驱动中牛
驱动中牛
  • 注册日期2004-03-28
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分483分
  • 威望56点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
阅读:1249回复:1

ADuC812的DMA,请教。

楼主#
更多 发布于:2005-05-09 08:57
各位好!

我想问些关于ADuC812的问题,恳请大家多帮忙:)
E-mail:xueli19810917@sina.com
QQ:103094558

(1)DMA方式下进行AD采样,配置外部存储器时,必须从#000000H开始配置吗?

资料:先配置外部存储器,然后启动DMA转换,最后读取转换结果。


  我的外部存储器是用片选法扩展的,地址是#FC0000H-#FDFFFFH。
所以,我配置外部数据存储器时,是从#FC0000H开始的。

(2)DMA启动时,为什么这三个寄存必须要赋值#0?
MOV     DMAL,#0 ;DMAL
        MOV     DMAH,#0 ;DMAH
        MOV     DMAP,#0 ;DMAP,以上三个值,必须赋值0。
  下面为什么不行?
MOV     DMAL,#0 ;DMAL
        MOV     DMAH,#0 ;DMAH
        MOV     DMAP,#0FCH ;DMAP,以上三个值,必须赋值0。
xueli19810917@163.com www.GGJJDDMM.com
xinli->新利
驱动中牛
驱动中牛
  • 注册日期2004-03-28
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分483分
  • 威望56点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-09 09:00
附,我的程序如下:

;**********************************************************************
;子程序。
;配置外部数据存储器,为DMA采样做准备。
;**********************************************************************
SETUPDMA: ;配置外部数据存储器
MOV DPP,#0FdH
MOV DPH,#00H
MOV DPL,#00H ;从FC0000H开始
SETUP: MOV     A,DMACHANNEL ;写入通道号
        MOVX    @DPTR,A
        INC     DPTR
MOV A,#NULL ;写入空值
        MOVX    @DPTR,A
        INC     DPTR
        CALL    GETSTOPFLAG     ;检验:配置的字节数是否已达到要求?
        JC      SETUP ;CY=1转移,继续配置。

MOV     A,DMACHANNEL ;写入通道号
        MOVX    @DPTR,A
        INC     DPTR
MOV A,#NULL ;写入空值
        MOVX    @DPTR,A

        INC     DPTR
        MOV     A,#DMASTOPFLAG ;写入结束标志,配置结束。
        MOVX    @DPTR,A

RET
;**********************************************************************

;**********************************************************************
;子程序。
;启动DMA采样。
;**********************************************************************
STARTDMA: ;启动DMA采样
MOV     DMAL,#0 ;DMAL
        MOV     DMAH,#0 ;DMAH
        MOV     DMAP,#0 ;DMAP,以上三个值,必须赋值0。

        MOV     RCAP2L,#0FEh    ;RCAP2L
        MOV     RCAP2H,#0FFh    ;RCAP2H
        MOV     TL2,#0FEh       ;TL2
        MOV     TH2,#0FFh       ;TH2

        MOV     ADCCON2,#040h   ;ADCCON2
        MOV     ADCCON1,#66h   ;ADCCON1

        SETB    EADC ;开ADC中断
        SETB    TR2             ;启动定时器2
        SETB    C

        JC      $ ;CY=1,表示DMA还没结束,则循环等待。

RET
;**********************************************************************
xueli19810917@163.com www.GGJJDDMM.com
游客

返回顶部