When using PDATA, the memory viewer, watchpoint tabs, and command window contain zeros for the PDATA I'm using. When I step through the disassembled output, the Register window in the Project Workspace gets the correct non-zero values. The PDATA symbol (32 byte array) in question is getting placed at 0x40. I look up this symbol in the memory window by doing a x:symbol_name, symbol_name, or x:0x40. In the command window, I do a "d symbol_name". Any ideas?
See: http://www.keil.com/support/docs/2394.htm. Maybe this answers your question.
Thanks but still no luck... I checked this link too http://www.keil.com/support/docs/1848.htm Snippets from my Start_ad.a51 file
; ; the absolute start-address of IDATA memory is always 0 IDATALEN EQU 100H ; the length of IDATA memory in bytes. Tim Dahlin Changed from 80 ; XDATASTART EQU 100H ; the absolute start-address of XDATA memory XDATALEN EQU 700H ; the length of XDATA memory in bytes. Tim Dahlin Changed from 0 ; PDATASTART EQU 0H ; the absolute start-address of PDATA memory. PDATALEN EQU 0ffH ; the length of PDATA memory in bytes. ;+++++ PPAGEENABLE EQU 0 ; set to 1 if pdata object are used. PPAGE EQU 0 ; define PPAGE number.
Is the behaviour of MOVX @Ri specified for the ADuC83x devices? Where is it documented? On standard 8051 the P2 value is used to provide the high byte for MOVX @Ri. In case that the ADuC83x always uses 0 as high-byte you need to initialize the PPAGE VTREG in teh simulator to 0.
Is what behavior specifed? I've been referencing old atmel/intel 8051 manuals. Is there a way to have the VTREG PPAGE default to 0x00? I thought the startup file set the default. This statement
PPAGE=0xFFFFFFF // Use default behavior for MOVX @Rx
Okay it assumes your using external XRAM.
View all questions in Keil forum