This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Problem in X51 Banking

Hi

I am using atmel controller with 64k Flash& 1.7k Xdata.Now my code lengh is only24k,xdata is 846 bytes.Suppose I add a new valiables in xdata means i felt lot problems (ie)i am getting jumbled data in my LCD if remove that variable then output is OK.Please help me to overcome this problem.

  • Write 0x10 to AUXR at the beginning of your STARTUP.A51 file.

  • Hi
    Thanks a lot for your reply.In startup51,Where to add this value(instead of thatI write in my micro controller initialization routine AUXR = 0x10; is it OK).Hereby I attached Srartup51 code.Please help me.
    /////////////////////////////////////////////

    $NOMOD51


    IDATALEN EQU 80H

    XDATASTART EQU 0H
    XDATALEN EQU 0H
    PDATASTART EQU 0H
    PDATALEN EQU 0H
    IBPSTACK EQU 0
    IBPSTACKTOP EQU 0FFH+1
    XBPSTACK EQU 0
    XBPSTACKTOP EQU 0FFFFH+1
    PBPSTACK EQU 0
    PBPSTACKTOP EQU 0FFFFH+1
    PPAGEENABLE EQU 0
    PPAGE EQU 0 PAGE_SFR DATA 0A0H ACC DATA 0E0H
    B DATA 0F0H
    SP DATA 81H
    DPL DATA 82H
    DPH DATA 83H
    AUXR DATA 8EH


    NAME ?C_STARTUP


    ?C_C51STARTUP SEGMENT CODE
    ?STACK SEGMENT IDATA
    MOV AUXR,#10H
    RSEG ?STACK
    DS 1

    EXTRN CODE (?C_START)
    PUBLIC ?C_STARTUP

    CSEG AT 0
    ?C_STARTUP: LJMP STARTUP1

    RSEG ?C_C51STARTUP

    STARTUP1:

    IF IDATALEN <> 0

    MOV R0,#IDATALEN - 1
    CLR A
    IDATALOOP: MOV @R0,A
    DJNZ R0,IDATALOOP
    ENDIF

    IF XDATALEN <> 0
    MOV DPTR,#XDATASTART
    MOV R7,#LOW (XDATALEN)
    IF (LOW (XDATALEN)) <> 0
    MOV R6,#(HIGH (XDATALEN)) +1
    ELSE
    MOV R6,#HIGH (XDATALEN)
    ENDIF
    CLR A
    XDATALOOP: MOVX @DPTR,A
    INC DPTR
    DJNZ R7,XDATALOOP
    DJNZ R6,XDATALOOP
    ENDIF

    IF PPAGEENABLE <> 0
    MOV PPAGE_SFR,#PPAGE
    ENDIF

    IF PDATALEN <> 0
    MOV R0,#LOW (PDATASTART)
    MOV R7,#LOW (PDATALEN)
    CLR A
    PDATALOOP: MOVX @R0,A
    INC R0
    DJNZ R7,PDATALOOP
    ENDIF

    IF IBPSTACK <> 0
    EXTRN DATA (?C_IBP)

    MOV ?C_IBP,#LOW IBPSTACKTOP
    ENDIF

    IF XBPSTACK <> 0
    EXTRN DATA (?C_XBP)

    MOV ?C_XBP,#HIGH XBPSTACKTOP
    MOV ?C_XBP+1,#LOW XBPSTACKTOP
    ENDIF

    IF PBPSTACK <> 0
    EXTRN DATA (?C_PBP)
    MOV ?C_PBP,#LOW PBPSTACKTOP
    ENDIF

    MOV SP,#?STACK-1
    ; EXTRN CODE (?B_SWITCH0)
    ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
    LJMP ?C_START

    END

  • I'd stick it here:

    STARTUP1:
    MOV AUXR,#10H
    IF IDATALEN <> 0

  • Hi
    Stefan Duncanson,thanks a lot.We solved our problem.