Social Icons

twitterfacebookgoogle plusrss feedemail

12/04/2009

微處理機-Data Movement Practices

沒有留言:
期中考前老師要我們練習以下題目

1. Move data from on-chip SRAM 40H-5FH to on-chip SRAM 48H-67H.
2. Move data from external Data RAM 3000H-3FFFH to external data RAM 7000H-7FFFH.
3. Move data from ROM 3000H-3FFFH to external data RAM 4000H-4FFFH.
4. Move data from ROM 3000H-302FH to on-chip SRAM 40H-6FH.
5. Move data from external data RAM 3000H-302FH to on-chip SRAM 40H-6FH
6. Move data from   on-chip SRAM 40H-6FH to external data RAM  3000H-302FH

程式碼我有利用UV3跑過一次
每一部分的詳細說明如下

1. Move data from on-chip SRAM 40H-5FH to on-chip SRAM 48H-67H
    請點此連結前往觀看

2. Move data from external Data RAM 3000H-3FFFH to external data RAM 7000H-7FFFH.
    請點此連結前往觀看

3. Move data from ROM 3000H-3FFFH to external data RAM 4000H-4FFFH.
    請點此連結前往觀看

4. Move data from ROM 3000H-302FH to on-chip SRAM 40H-6FH.
     請點此連結前往觀看

5. Move data from external data RAM 3000H-302FH to on-chip SRAM 40H-6FH.
     請點此連結前往觀看

6. Move data from   on-chip SRAM 40H-6FH to external data RAM  3000H-302FH.
    請點此連結前往觀看



如果發現文章有錯,歡迎留言告知

微處理機-Data Movement Practices-(6)

沒有留言:
6. Move data from on-chip SRAM 40H-6FH to external data RAM 3000H-302FH
dest_add equ 3000H
source_add equ 40H
number_of_bytes equ 30H


mov dptr,#dest_add
mov r1,#source_add
mov r2,#number_of_bytes
L1: mov A,@r1
movx @dptr,A
inc dptr
inc r1
djnz r2, L1
nop
end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可


相信前面幾題看得懂,後面這幾題應該也都可以,暫時不做說明


文章如果有錯 請留言跟我說

微處理機-Data Movement Practices-(5)

沒有留言:
5. Move data from external data RAM 3000H-302FH to on-chip SRAM 40H-6FH
source_add    equ    3000H
dest_add    equ    40H
number_of_bytes    equ    30H

    
    mov    r1,#dest_add
    mov    dptr,#source_add
    mov    r2,#number_of_bytes
L1:    movx    A,@dptr
    mov    @r1,A
    inc    dptr
    inc    r1
    djnz    r2, L1
    nop
    end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可


相信前面幾題看得懂,後面這幾題應該也都可以,暫時不做說明


文章如果有錯 請留言跟我說

微處理機-Data Movement Practices-(4)

沒有留言:
4. Move data from ROM 3000H-302FH to on-chip SRAM 40H-6FH
source_add equ 3000H
dest_add equ 40H
number_of_bytes equ 30H

 
 mov r1,#dest_add
 mov dptr,#source_add
 mov r2,#number_of_bytes
L1: clr A
 movc A, @A+dptr
 mov @r1,A
 inc dptr
 inc r1
 djnz r2, L1
 nop

 end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可


相信前面幾題看得懂,後面這幾題應該也都可以,暫時不做說明


文章如果有錯 請留言跟我說

微處理機-Data Movement Practices-(3)

沒有留言:
3. Move data from ROM 3000H-3FFFH to external data RAM 4000H-4FFFH.
source_add equ 3000H
     dest_add equ 4000H
     last_dest_add equ 4FFFH

     source_dph_buf equ 30H
     source_dpl_buf equ 31H
     dest_dph_buf equ 32H
     dest_dpl_buf equ 33H

     mov source_dph_buf, #HIGH(source_add)
     mov source_dpl_buf, #LOW(source_add)
     mov dest_dph_buf, #HIGH(dest_add)
     mov dest_dpl_buf, #LOW(dest_add)
AGAIN:
     mov dph, source_dph_buf
     mov dpl, source_dpl_buf
     clr A
     movc A, @A+dptr
     inc dptr
     mov source_dph_buf, dph
     mov source_dpl_buf, dpl

     mov dph, dest_dph_buf
     mov dpl, dest_dpl_buf
     movx @dptr, A
     inc dptr
     mov dest_dph_buf, dph
     mov dest_dpl_buf, dpl

     mov A,dph
     cjne a,#HIGH(last_dest_add+1), AGAIN
     nop

     end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可

請注意一下,老師在(09.12.04)課堂上打的code程式碼中與上面程式碼有點不同,老師的程式碼在 uv3 上無法執行,因為老師打的程式碼: 
cjne    dph,#HIGH(last_dest_add+1), AGAIN
這段 dph 應改為 A才對,否則可能在uv3上Build時會出現以下錯誤碼
1.a(30): error A39: REGISTER OPERAND EXPECTED

微處理機-Data Movement Practices-(2)

沒有留言:
2. Move data from external Data RAM 3000H-3FFFH to external data RAM 7000H-7FFFH.
程式碼如下
      source_add equ 3000H
      dest_add equ 7000H
      last_dest_add equ 7FFFH

      source_dph_buf equ 30H
      source_dpl_buf equ 31H
      dest_dph_buf equ 32H
      dest_dpl_buf equ 33H

      mov source_dph_buf, #HIGH(source_add)
      mov source_dpl_buf, #LOW(source_add)
      mov dest_dph_buf, #HIGH(dest_add)
      mov dest_dpl_buf, #LOW(dest_add)

AGAIN:
     mov dph, source_dph_buf
     mov dpl, source_dpl_buf 
     movx A, @dptr
     inc dptr
     mov source_dph_buf, dph
     mov source_dpl_buf, dpl

     mov dph, dest_dph_buf
     mov dpl, dest_dpl_buf
     movx @dptr, A
     inc dptr 
     mov dest_dph_buf, dph
     mov dest_dpl_buf, dpl

     mov A,dph
     cjne A,#HIGH(last_dest_add+1), AGAIN
     nop
     end
如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可
請注意一下,老師在(09.12.04)課堂上打的code程式碼中與上面程式碼有點不同,老師的程式碼在 uv3 上無法執行,因為老師打的程式碼: 
cjne    dph,#HIGH(last_dest_add+1), AGAIN
這段 dph 應改為 A才對,否則可能在uv3上Build時會出現以下錯誤碼
1.a(30): error A39: REGISTER OPERAND EXPECTED
為了方便說明先在 external Data RAM中存放一些值,但是因為此題範圍有點大,所以並不全部輸入,用部分的值來說明,如下圖所示。