阅读:1250回复:1
ADuC812的DMA,请教。
各位好!
我想问些关于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。 |
|
|
沙发#
发布于: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 ;********************************************************************** |
|
|