dspic33ch512mp508 模寻址

问题描述 投票:0回答:1

dsPIC33CH512MP508 上的模寻址

我正在尽力让Modulo Adressing在dsPIC33CH512MP508上工作。 我如何让它只在 X 数据内存而不是 Y 数据内存上工作,我不明白为什么它不能在 Y 数据内存上工作。具体的问题是

YMODEND
无法让它工作。

我正在遵循此处给出的示例(仅 1 页)Modulo_Adressing

这是我的asm代码:

.global _modulo_adress_2
_modulo_adress_2:
    MOV #0x01, w0   // writing 1 into start of X-data and Y-data ram
    MOV w0, 0x2000  // X-data-ram
    MOV w0, 0x7200  // Y-data-ram
    MOV #0x02, w0   // writing 2 into start of X-data and Y-data ram
    MOV w0, 0x2002
    MOV w0, 0x7202
    MOV #0x03, w0   // writing 3 into start of X-data and Y-data ram
    MOV w0, 0x2004
    MOV w0, 0x7204
    MOV #0x04, w0   // writing 4 into start of X-data and Y-data ram
    MOV w0, 0x2006
    MOV w0, 0x7206
    
    MOV #0x05, w0   // writing 5 into start of X-data and Y-data ram
    MOV w0, 0x7208  // if this shows Y does not stop at YMODEND 
            // as its ment to 
    
    MOV #0x7200,w11 //set modulo start address for Y
    MOV w11, YMODSRT
    NOP
    MOV #0x2000,w0  //set modulo start address for X
    MOV w0, XMODSRT
    NOP
    MOV #0x7207,w11 //set modulo end address for Y
    MOV w11, YMODEND
    NOP
    MOV #0x2007,w0  //set modulo end address for X
    MOV w0, XMODEND
    NOP
    MOV #0xCFD1,w0  // enable X, Y (C) Bit-reversed addressing disabled(F)
            // Y selected for modulo addressing = w11 (D)
            // X selected for modulo addressing = w1 (1)
    MOV w0, MODCON  
    NOP
    MOV #0x2000,w1  // start of w1
    MOV #0x2014,w3  // form where we expect to see the containt repeat of X
    MOV #0x7200,w11 // start of w11
    MOV #0x2048,w5  // form where we expect to see the containt repeat of Y
    REPEAT #20
    MOV [w11++],[w5++]
    REPEAT #20
    MOV [w1++],[w3++]
RETURN

输出是:

Value at 0X2000 is: 0X1. Address 0 
Value at 0X2002 is: 0X2. Address 1 
Value at 0X2004 is: 0X3. Address 2 
Value at 0X2006 is: 0X4. Address 3 
Value at 0X2008 is: 00. Address 4 
Value at 0X200A is: 00. Address 5 
Value at 0X200C is: 00. Address 6 
Value at 0X200E is: 00. Address 7 
Value at 0X2010 is: 00. Address 8 
Value at 0X2012 is: 00. Address 9 
Value at 0X2014 is: 0X1. Address 10 
Value at 0X2016 is: 0X2. Address 11 
Value at 0X2018 is: 0X3. Address 12 
Value at 0X201A is: 0X4. Address 13 
Value at 0X201C is: 0X1. Address 14 
Value at 0X201E is: 0X2. Address 15 
Value at 0X2020 is: 0X3. Address 16 
Value at 0X2022 is: 0X4. Address 17 
Value at 0X2024 is: 0X1. Address 18 
Value at 0X2026 is: 0X2. Address 19 
Value at 0X2028 is: 0X3. Address 20 
Value at 0X202A is: 0X4. Address 21 
Value at 0X202C is: 0X1. Address 22 
Value at 0X202E is: 0X2. Address 23 
Value at 0X2030 is: 0X3. Address 24 
Value at 0X2032 is: 0X4. Address 25 
Value at 0X2034 is: 0X1. Address 26 
Value at 0X2036 is: 0X2. Address 27 
Value at 0X2038 is: 0X3. Address 28 
Value at 0X203A is: 0X4. Address 29 
Value at 0X203C is: 0X1. Address 30 
Value at 0X203E is: 00. Address 31 
Value at 0X2040 is: 00. Address 32 
Value at 0X2042 is: 00. Address 33 
Value at 0X2044 is: 00. Address 34 
Value at 0X2046 is: 00. Address 35 
Value at 0X2048 is: 0X1. Address 36 
Value at 0X204A is: 0X2. Address 37 
Value at 0X204C is: 0X3. Address 38 
Value at 0X204E is: 0X4. Address 39 
Value at 0X2050 is: 0X5. Address 40 
Value at 0X2052 is: 00. Address 41 
Value at 0X2054 is: 00. Address 42 
Value at 0X2056 is: 00. Address 43 
Value at 0X2058 is: 00. Address 44 
Value at 0X205A is: 00. Address 45 
Value at 0X205C is: 00. Address 46 
Value at 0X205E is: 00. Address 47 
Value at 0X2060 is: 00. Address 48 
Value at 0X2062 is: 00. Address 49 
Value at 0X2064 is: 00. Address 50 
Value at 0X2066 is: 00. Address 51 
Value at 0X2068 is: 00. Address 52 
Value at 0X206A is: 00. Address 53 
Value at 0X206C is: 00. Address 54 
Value at 0X206E is: 00. Address 55 
Value at 0X2070 is: 00. Address 56 
Value at 0X2072 is: 00. Address 57 
Value at 0X2074 is: 00. Address 58 
Value at 0X2076 is: 00. Address 59 
Value at 0X2078 is: 00. Address 60 
Value at 0X207A is: 00. Address 61 
Value at 0X207C is: 00. Address 62 
Value at 0X207E is: 00. Address 63 
Value at 0X2080 is: 00. Address 64 
Value at 0X2082 is: 00. Address 65 
Value at 0X2084 is: 00. Address 66 
Value at 0X2086 is: 00. Address 67 
Value at 0X2088 is: 00. Address 68 
Value at 0X208A is: 00. Address 69 

如您所见,

Value at 0X2050 is: 0X5. Address 40 
意味着
YMODEND
不起作用,我不知道为什么

我已经尝试了许多

MODCON
的同伴,但对于
YMODEND
的不同 wx 寄存器也不起作用。我已经没有办法尝试了,数据表在这里:data_sheet

BR

有需要的学生项目

assembly signal-processing microchip dspic
1个回答
0
投票

我在 michrochip 上获得了帮助,事实证明你只能在 Y 数据内存中使用“dsp”“mac-class”指令,所以这里有一些有效的代码

.global _modulo_addressing_3
_modulo_addressing_3:
 mov #0x7002,w0
 mov w0,YMODSRT
 mov #0x7006,w0
 mov w0,YMODEND
 mov #0x4fbf,w0
 mov w0,MODCON
 mov #0x7004,w11
 mov #0x2000,w4
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 mov w5,[w4++]
 clr A,[w11]+=2,W5
 RETURN

代码是 dsoic33ch512mp508 的 asm

结果如下:

Value at 0X2000 is: 0XA60A. Address 0 
Value at 0X2002 is: 0X98D5. Address 1 
Value at 0X2004 is: 0X30CB. Address 2 
Value at 0X2006 is: 0XA60A. Address 3 
Value at 0X2008 is: 0X98D5. Address 4 
Value at 0X200A is: 0X30CB. Address 5 
Value at 0X200C is: 0XA60A. Address 6 
Value at 0X200E is: 0X98D5. Address 7 
Value at 0X2010 is: 0X30CB. Address 8 
Value at 0X2012 is: 0XA60A. Address 9 
Value at 0X2014 is: 0X98D5. Address 10 
Value at 0X2016 is: 0X30CB. Address 11 

© www.soinside.com 2019 - 2024. All rights reserved.