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

mon51_vs_DS5000

Question :



I had downloaded from KEIL Web site the file "mon51_ds5000.zip" with Mon51,

expanded it to "ds5000_mon_9600_110592.hex" and loaded it into my

DALLAS DS 5000FP 32-16 using "kit.exe" loader with MCON = "E8".



Then I

1.assembled an application :



-----------------------------------------------



void main (void) {

unsigned char a, b ,c;



ES = ENAB ; /* for mon51 only */



a = 2;

b = 3;

c = a+b;



while (1) {

_nop_();

};

}

-----------------------------------------------



2. set in startup.a51 : CSEG AT 2000H



3. set in MVision : C51 - Interrupt vectors at 0x2000

: BL51 Locate - Code Range : 0x2000-0x6FFF

: Debug - Keil monitor 51 driver,

- load application at startup - YES

- go till main - NO

- Settings :9600 Bd,

: stop program execution

with serial input

- Initialization file : debug_mon51.ini

(I wrote down in the ini file :

$ = 0x2000)



4.compiled all the files above successfully together



5. loaded intelhex of the application to my DS 5000 via mon51 (without

receiving any error mesages).



After loading the application I can see in MVision on the monitor, that program

counter is set to main function, but after a short while program counter

"crash" to address 0x0000.



The thing is that program counter is hunged on address 0x0000 and

I am not able to run program using single stepping.

However, I can successful place a breakpoint anywhere in main function,



When I enter command "$ - main" I can see a code of my application with

break point placed, but I can't single step the application. When trying it,

program counter everywhrere "crashes" to address 0x0000.



Could someone to tell me what I am doing incorecctly ?



I have tried manually create mon51 modifying file Install.a51 according

to instructions on Keil Web site and added this code in install.a51 :



----------------------------------------------------------------------



USER_PGM_START EQU 2000H

USER_PGM_MCON EQU 048H ; partition CODE/DATA : 0x2000

USER_XRAM_MCON EQU 0E8H ; partition CODE/DATA : 0x7000



sfr MCON = 0C6h;

sfr TA = 0C7h;



INT_ADR_OFF EQU USER_PGM_START ; INTERRUPT VECTOR OFFSET IF MONITOR

; IS INSTALLED AT ADDRESS 0000H

DEF_PC_VAL EQU USER_PGM_START ; DEFAULT PC VALUE AFTER START UP





$IF (SERIAL = 0)

;********************************************************************

;* Using TIMER 1 to Generate Baud Rates *

;* Oscillator frequency = 11.059 MHz *

;* Set Baudrate to 9600 Baud *

;********************************************************************



InitSerial: PROMCHECK ; Check if PROM in System



MOV TA,#0AAH ; timed access 1

0