XDEF Entry,main Include 'derivative.inc' DEFAULT_RAM SECTION SHORT DEFAULT_ROM SECTION ; ####### FLASH 2 - viele Byte schreiben, Block Löschen Entry: main: lda #$12 sta SOPT1 ; Watchdock ruhig stellen mov #$FF,PTBDD ; Port B ist Ausgang ; ------------------------------------------------------------------------- ; # # # Fortlaufend 3 Bytes ab Adresse $E100 in den Flash eintragen # # # ; ------------------------------------------------------------------------- lda #3 sta $80 ldhx #$E100 ; Startadresse einstellen lda #$13 ; DIV $13 für 200 kHz Flashfrequenz setzen sta FCDIV ; Als Zeichen für einen gesetzten DIV Wert wird ; hierbei automstisch Bit 7 gesetzt ; --------------------------------------------------------------------- M0: lda FSTAT and #$10 ; Bei Fehler ist Bit4 = 1 bne M0 ; Wenn Bit4 nicht Null, erneut nachfragen ; --------------------------------------------------------------------- lda $80 ; Datenwert in A laden sta ,x ; Datenwert in A in HX eintragen lda #$20 ; Code für das Schreiben eines Byte in den Flash sta FCMD ; in das Komandoregister FCMD eintragen lda #$80 ; Bit 7 setzen und damit sta FSTAT ; den Befehl starten ; ------------------------------------------------------------------------- wait1: lda FSTAT ; Ist das Fertig Bit, Bit6 des FSTAT gesetzt? and #$40 ; hier ist Bit 6, das "Fertig Bit" FCCF gesetzt beq wait1 ; wenn keine Übereistimmung ist Z=1 ->Sprung nach wait ; ------------------------------------------------------------------------ nop ; 4 nop sind erforderlich! nop nop nop M2: incx dec $80 beq M3 bra M0 M3: lda #3 sta $80 bra M0 nop nop END