- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 48

Thema: Tips & Tricks

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    Bei Erstellung von ASM Programmen, um mir das Kompilieren zu vereinfachen, verwende ich folgende Prozedur:

    Zuerst erstelle ich mir in gleichem Verzeichnis, wo die Sammlung meiner Unter/Programme sich befindet, eine Textdatei (z.B. Test.txt) wo ich meinen einspaltigen PAD mit Pfeilen nach oben und unten schreibe/skizziere. In der Datei mache ich mir auch ganz oben ständig aktualisierte Liste aller Register, die in diesem Unter/Programm verwendet sind.

    Wenn das PAD fertig ist, speichere ich diese Datei mit gleichem Namen als *.asm Datei (z.B. Test.asm) und erzetze alle PAD "Symbole" mit Befehlen für bestimmten PIC/Assemblerprogramm (z.B. für MPASM um die Register für ihm zu benennen).

    Bei Änderungen mache ich sie gleich in beiden Dateien, damit sie am Ende wirklich aktuell sind. Letztendlich habe ich dann beide, wenn ich später etwas ändern muß. Dank dessen brauche ich ausser eventuellen Namen der UPs keine Kommentare im Programm schreiben, was seine Erstellung deutlich beschleinigt.

    Mit diesem Prinzip in umgekehrter Richtung lassen sich auch "fremde" Programme leicht analisieren.

    Als Beispiel habe ich ein UP aus meiner Sammlung für PIC18F252 in Code kopiert. Als einige PAD Symbole sind wegen Einfachheit von mir Mnemonics verwendet und die verwendete Register (Tmp und Tmp1) weggelassen, da sie schon in gemeinsamem Programm benannt sind. Bei PAD Erstellung darf man eben beliebige Symbole verwenden, die man selber am besten versteht.

    Wahrscheinlich eignet sich die Prozedur auch für Hochsprachen.

    MfG
    Code:
    WriteFlash      0x100 -> FSR0			; copy 1024 bytes from RAM (100h-500h)
                    0 -> TBLPTRU                    ; in Flash (7C00h-7FFFh)
                    0x7C -> W
                    W ->	TBLPTRH
                    0 ->	TBLPTRL
                    tblrd*-
                    0x80 -> W
                    W ->	Tmp1
    FlashProgL      8 -> W <------------------------+
                    W ->	Tmp             	|
    WriteFL     +-> POSTINC0 -> W          		|
                |	W ->	TABLAT                  |
                |	tblwt+*                         |
                |	dec	Tmp                     |
                |   Tmp = 0? j >----------+         |
                +----------< n            |         |
                    1 ->	EECON1,EEPGD <-+        |
                    0 ->	EECON1,CFGS             |
                    0 ->	EECON1,WREN             |
                    0 ->	INTCON,GIE              |
                  +----------+                      |
                  | standard |                      |
                  +----------+                      |
                    1 ->	EECON1,WR               |
                    0 ->	PIR2,EEIF               |
                    1 ->	INTCON,GIE              |
                    dec	Tmp1             	|
                    Tmp1 = 0? j >---------+         |
                              n >---------|---------+
                    0 ->	EECON1,WREN <--+
                    return
    
    
    WriteFlash	 	lfsr	FSR0,0x100	  ; copy FFh=1024d bytes from RAM (100h-500h)
            		clrf	TBLPTRU           ; in Flash (7C00h-7FFFh)
            		movlw	0x7C
            		movwf	TBLPTRH
            		clrf	TBLPTRL
            		tblrd*-
            		movlw	0x80
            		movwf	Tmp1
    FlashProgL	 	movlw	8
            		movwf	Tmp
    WriteFL 		movf	POSTINC0,0
            		movwf	TABLAT
            		tblwt+*
            		decfsz	Tmp,1
            		bra	WriteFL
            		bsf	EECON1,EEPGD
            		bcf	EECON1,CFGS
            		bsf	EECON1,WREN
            		bcf	INTCON,GIE
        	              +----------------+
        	              | movlw	0x55   |
        	              | movwf	EECON2 |<- standard
        	              | movlw	0xAA   |
        	              | movwf	EECON2 |
        	              +----------------+
            		bsf	EECON1,WR
            		bcf	PIR2,EEIF
            		bsf	INTCON,GIE
            		decfsz	Tmp1,1
            		bra	FlashProgL
            		bcf	EECON1,WREN
            		return
    Geändert von PICture (09.06.2011 um 13:30 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen