Crossware

Table of Contents        Previous topic       Next topic       

Extension Examples->Memory Bank Switching->8051 Test Code

; fill the first 100h bytes of each bank with a recognisable pattern
; first bank 0 (the default bank)
    mov    dptr,#8000h
    mov    r2,#0FFh
    mov    a,#11h    ; 11 into bank 0
loop0
    movx @dptr,a
    inc    dptr
    djnz    r2,loop0

    mov    P1,#1    ; switch to memory bank 1

    mov    dptr,#8000h
    mov    r2,#0FFh
    mov    a,#22h    ; 22 into bank 1
loop1
    movx @dptr,a
    inc    dptr
    djnz    r2,loop1

    mov    P1,#2    ; switch to memory bank 2

    mov    dptr,#8000h
    mov    r2,#0FFh
    mov    a,#33h    ; 33 into bank 2
loop2
    movx @dptr,a
    inc    dptr
    djnz    r2,loop2

    mov    P1,#0    ; switch to memory bank 3

    mov    dptr,#8000h
    mov    r2,#0FFh
    mov    a,#44h    ; 44 into bank 3
loop3
    movx @dptr,a
    inc    dptr
    djnz    r2,loop3

    ; now alternate between memory banks and observe the xdata view changing
loop4
    mov    P1,#1    ; switch to memory bank 1
    mov    P1,#0    ; switch to memory bank 3
    mov    P1,#2    ; switch to memory bank 2
    mov    P1,#3    ; switch to memory bank 0
    jmp    loop4