- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: assembler 'datenbank'

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.06.2008
    Beiträge
    10

    assembler 'datenbank'

    hi, gibt es die möglichkeit in assembler eine art datenbank anzulegen und zu nutzen?

    ich nutze den I2C bus um daten an ein display zu senden, was ungefähr so aussieht:
    Code:
    		; Paket senden
    		movlw	H'11'
    		call	senden
    		movlw	H'0E'
    		call	senden
    		movlw	H'1B'
    		call	senden
    		movlw	H'44'
    		call	senden
    		movlw	H'4C'
    		call	senden
    		movlw	H'1B'
    		call	senden
    		movlw	H'47'
    		call	senden
    		movlw	H'44'
    		call	senden
    		movlw	H'00'
    		call	senden 
    		movlw	H'00'
    		call	senden
    		movlw	H'140'
    		call	senden
    		;etc......
    __________________________________________
    
    ; ein Byte aus W senden 
    senden 
    		movwf   SSPBUF          ; -> zum I2C-Slave übertragen 
    		goto	warten
    ich find das aber ziehmlich unübersichtlich,... das ganze muss auch einfacher und besser gehen, hat jmd. einen rat wie?

    MfG,
    S.Z


    edit: kann man das eigentlich auch direkt in ASCii senden..?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Hallo Sir.Zeiber,
    das was du suchst nennt sich Tabelle und nicht Datenbank. Natürlich kann der PIC sowas; jeder halbwegs brauchbare Mikrocontroller kann sowas
    Beim PIC dient der Befehl "retlw" diesem Zweck. Der Befehl springt aus einem Unterprogramm raus und lädt vorher das W-Register mit einem Wert.
    Um eine Tabelle zu bauen musst du folgendes machen:

    ;PCLATCH für "call tabelle" setzen
    movf index,w
    call tabelle
    ;irgendwas mit W machen


    tabelle:
    addwf PCL,f
    retlw 0x01
    retlw 0x02
    retlw 0x03

    Bin mir nicht 100% sicher, ob das alles richtig ist. Ich hab schon lange nichts mehr mit dem PIC gemacht... aber so ähnlich sollte das gehen.

    Gruß,
    SIGINT

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Je nach verwendetem PIC kann man das auch ohne RETLW tätigen.
    Wenn der PIC die Befehle TBLRD unterstützt, lassen sich solche
    Tabellen wesentlich eleganter handhaben.

    Beispiel aus meiner RS232 Schnittstelle:

    #define RED 0x02

    ;Farbe,Spalte,Zeile,Text

    Text_FE_ERROR: db RED,1,1,"Frame Error",0
    Text_UC_ERROR: db RED,1,2,"Unknown Command Error",0
    Text_PE_ERROR: db RED,1,3,"Parameter Error",0
    Text_OV_ERROR: db RED,1,4,"Overrun Error",0

    mfg Siro

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Das geht leider nur bei den PICs der 18er Generation und höher. Ansonsten muss es mit dem RETLW Befehl gehen, da der Pointer INDF nicht auf den Flash zeigen kann.
    Leider ist der PIC 16 wegen der internen 14Bit Befehlsbreite nicht sehr hübsch um Tabellen von 8-Bit Werten anzulegen, es geht recht viel Platz verloren.

    Um direkt Ascizeichen auszugeben, musst du einfach folgendes schreiben:
    RETLW 'A'
    RETLW 'B'
    RETLW '2'
    RETLW '!'
    Solange kein D oder so vor den ' steht,interpretiert der Assembler das als Zeichen und setzt es von selbst in Ascii um.

Berechtigungen

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

LiFePO4 Speicher Test