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

Help about mon51 with ds5000fp

We are working on a proyect with ds5000fp. We got to lo load our aplication with mon51.hex. We complied the mon51.hex making the changes that we read in this message:

The DS5000 monitor is designed and tested with a DS5000. It has not been tested with a DS5000FP. There are several subtle differences between the DS5000 and DS5000FP, so it is no surprise that the DS5000 monitor may not work on the DS5000FP.

The monitor for the DS5000 manipulates the MCON register so that it can write into CODE space.

In the INSTALL.A51 file, the following changes are made near the top:

.
.
.
EXTRN   CODE (MON51)    ; START OF MONITOR-51
EXTRN   CODE (SER_ISR)  ; SERIAL INTERRUPT SERVICE ROUTINE

;------------------------------------------------------------------------
; Change these to match the starting address for the user program.
; Get the MCON values from the Dallas Soft Microcontrollers Databook.
; Since the monitor data area is located at 1F00h, set the partition at
; 1800h (MCON = 3X).
;
; Memory Map
;-------------------------------
; C:0000-17FF   On-chip Monitor
; C:1800-1EFF   On-chip Unused
; C:1F00-1FFF   On-chip Monitor Data Area
; C:2000-6FFF   On-chip User Program
; C:7000-FFFF   Off-chip
;
; X:0000-6FFF   Off-chip
; X:7000-7FFF   On-chip User XDATA
; X:8000-FFFF   Off-chip
;------------------------------------------------------------------------
USER_PGM_START	EQU	2000H
USER_PGM_MCON	EQU	30H        ; 1800h
USER_XRAM_MCON  EQU     0E0H       ; 7000h

sfr MCON = 0C6h;
sfr TA   = 0C7h;

;------------------------------------------------------------------------
; !!! Don't change these. !!!
;------------------------------------------------------------------------
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

;------------------------------------------------------------------------
;------------------------------------------------------------------------
.
.
.
The InitSerial routine is modified as follows to set the MCON register:

InitSerial:

		PROMCHECK               ; Check if PROM in System

		MOV  	TA,#0AAH
		MOV  	TA,#055H
		ORL  	MCON,#02h	; Set PAA

		MOV  	MCON,#USER_XRAM_MCON

		MOV  	TA,#0AAH
		MOV  	TA,#055H
		ANL  	MCON,#0FDh	; Clear PAA

                MOV     TMOD,#00100000B ;C/T = 0, Mode = 2
                MOV     TH1,#0FDH
                SETB    TR1
                MOV     SCON,#01011010B ; Init Serial Interface

		JMP     Mon51

And, the WR_CODE stub is modified to manipulate the MCON register as follows:

WR_CODE:
		SETB	C
		JBC	EA, C_SET
		CLR	C
C_SET:		PUSH	PSW		; Save Interrupts
		CLR  	EA		; Disable Interupts

		MOV  	TA,#0AAH
		MOV  	TA,#055H
		ORL  	MCON,#02h	; Set PAA

		MOV  	MCON,#USER_PGM_MCON
	        MOVX    @DPTR,A
		MOV  	MCON,#USER_XRAM_MCON

		MOV  	TA,#0AAH
		MOV  	TA,#055H
		ANL  	MCON,#0FDh	; Clear PAA

		POP	PSW		; Restore Interrupts
		MOV	EA,C

                RET


We made a mon51.hex which works good. The problem is that we can only load our aplication once. If we execute the program then we have to configurate the partition of the micro again using kit.exe. So we'd like to know if someone has the solution to fix this problem. Are we doing something bad or are we forgoting anything. Please We'll thanks your advises. Greetings from Spain.

0