Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
07/01/05 02:42
Read: times


 
#96357 - AT89S52 ISP Commands
Hello Guys,

just looking for some more in depth information on the ISP commands regarding the AT89S52. I a building an ISP programmer using another
AT89S52, and hyperterminal. (serial port)

YES, YES, I read the datasheet 100 times, but it is quite vague to say the least. Other Atmel datasheets are more detailed, and much easier to understand.

Just wondering if anyone knows where to find some good information or maybe source code on the internet. I looked high and low and did not find much info.

I am quite certain my problem lies within the enable programming
command string. However I cannot seem to read the lock bits, or even the signature bytes. (It reads all FF's)

program starts up with welcome screen in hyperterminal.
make the selection, i.e, erase, lock, program, read lock bits,
read signature bits. Here is most of the code, hopefully someone can tell me what i am doing wrong here.

Forgive me if the code is sloppy, i am just a beginner and only doing this for educational purposes. Any advice would be kindly appreciated. I am not looking for a handout, just some friendly advice.

Thank you
CT

  
at reset, start up with :

setb	MOSI			;
setb	MISO			;
clr	SCK			;
clr	RST			;	


;*************************************************
; Prepare the target AT89S52 for programming.
;enter here with the rst low, sck low, MOSI & MISO high.
En_pg_Mode:
	setb RST 	; force target into reset 		
	call delay1ms 	; wait 1 ms

			; Enable writes to code memory.
	mov a, #0ACh	; send first byte of enable code
	call shout 	;
	mov a, #053h	; send second byte
	call shout 	;
	mov a, #055h	; send dummy byte
	call shout 	;

        mov a, #069h	; send fourth byte
	call shout 	;according to the datasheet
	ret             ;the last byte = output 69h

;when returning back to main,from each routine,
;RST is taken low again.
;*************************************************

Read_Sig:
	mov	dptr,#Sigbits_str	;
	lcall	OutStr		        ;

	mov	r1,#000h	;
	mov	r7,#003h		;

Read_Sig1:
	mov	a,#028h		;command byte
	lcall	shout		;
	
	mov	a,r1		;address byte

;???not sure on the next instruction
;the datasheet states that the address of the 3 signature bits
;=(000H,100H, & 200H)
; i do not understand the above values can't be 8 bit? 

	anl	a,#01Fh		;isolate 5 bits
	lcall	shout		;
	
	mov	a,#055h		;dummy byte
	lcall	shout		;	

	lcall	shin		;read sig byte into acc
	lcall	PutByte		;print it
	inc	r1		;next byte
	djnz	r7,Read_Sig1	;
	ret
; *******************************************************************
Read_Lock:
	
	mov	a,#024h		;command byte
	lcall	shout		;

	mov	a,#055h		;dummy byte
	lcall	shout		;

	mov	a,#055h		;dummy byte
	lcall	shout		;

	lcall	shin		;read lock byte into acc
	lcall	putbyte
        ret
;*******************************************************************
;write all lock bits up to mode 4
Lock:
	mov	r1,#0E0h	;
	mov	r7,#003h	;

Lock1:
	mov	a,#0ACh		;
	lcall	shout		;

	mov	a,r1		;lock bit in R1
	lcall	shout		;

	mov	a,#055h		;dummy byte
	lcall	shout		;

	mov	a,#055h		;dummy byte
	lcall	shout		;

	inc	r1
	djnz	r7,Lock1

	ret

;***************************************************************
shout:
; Shift out a byte, most significant bit first.
; SCK expected low on entry. Return with SCK low.
; Called with data to send in A.
	mov r7, #8 	; bit counter
shout1:
	rlc a 		; move bit into CY
	mov MOSI, c 	; output bit
	nop 		; enforce data setup
	nop 		;
	setb SCK 	; raise clock
	nop 		; enforce SCK high
	nop 		;
	nop 		;
	nop 		;
	clr SCK 	; drop clock
	djnz r7, shout1 ; next bit
	ret
;***************************************************************
; Shift in a byte, most significant bit first.
; SCK expected low on entry. Return with SCK low.
; Returns received data byte in A.
shin:
	mov r7, #8 		; bit counter
shin1:
	setb SCK 		; raise clock
	mov c, MISO 	        ; input bit
	rlc a 		        ; move bit into byte
	nop 			; enforce SCK high
	nop 			;
	clr SCK 		; drop clock
	nop 			; enforce SCK low
	nop 			;
	djnz r7, shin1 	        ; next bit
	ret

Erase:
	acall	En_Pg_Mode	;
	mov a, #0ACh 		; send first byte of erase 
	call shout 		;
	mov a, #080h		; send second byte
	call shout 		;
	mov a, #055h		; send third byte (dummy byte)
	call shout 		;	
	call delay10ms 		; wait 10 milliseconds
        ret






List of 8 messages in thread
TopicAuthorDate
AT89S52 ISP Commands            01/01/70 00:00      
   some ideas            01/01/70 00:00      
   Be warned...            01/01/70 00:00      
      ISP commands            01/01/70 00:00      
   look here            01/01/70 00:00      
   midi            01/01/70 00:00      
      Start a new thread...            01/01/70 00:00      
          ... but first            01/01/70 00:00      

Back to Subject List