-         

Ergebnis 1 bis 5 von 5

Thema: Daten in eine Adresse speichern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2008
    Ort
    Hounslow
    Alter
    30
    Beiträge
    10

    Daten in eine Adresse speichern

    Anzeige

    Hi ich hab mich gerade neu hier angemeldet da ich ein problem hab mit dem ich nicht weiter komme.
    Ich hab keine Ahung ob des Thema schon einmal hier reingestellt hab aber ich freu mich auf eine Antwort.

    Ich hab einen PIC 16F873
    und ich weis nicht wie ich Daten, die der PIC errechnet hat. in Adressen speichern die der PIC vorgibt.
    Es sind mehrere Adressen 0x21 .... 0x6F
    und jeweils mehrere 1 Byte Informationen die in mehreren Files gespeichert sind.
    Eigentlich ist es mehr eine Zuordnung von den Informationen zu den Adressen.
    Am Anfang werden irgendwelche Daten vom PIC ermittelt und dann in Adresss 0x21 gespeichert, neue Daten werden ermittelt und in die naechst Adresse gespeichert 0x22 usw.
    koennte mir jemand eine kurzen typ geben wie ich des am einfachsten loesen koennte?? Danke
    Gruss

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    32
    Beiträge
    456
    Schau dir die indirekte Addressierung des PICs an. Am Besten liest du dir das Datenblatt und sprut.de durch.

    Code:
    indirekt:
        MOVLW 0x21
        MOVWF FSR
    
        ; Daten sind in W bereitgestellt
        MOVWF INDF ; schreibt W in den Register auf der Adresse 0x21
    
        ; Erhöhe die indirekte Adresse
        INCF FSR ; INDF zeigt nun auf 0x22
    lg
    Mobius

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2008
    Ort
    Hounslow
    Alter
    30
    Beiträge
    10
    Danke fuer die schnelle Antwort.
    Hab mir des datenblatt schon oeffters durchgenommen hab aber nie die loesung drinn lesen koennen.
    Nochmals Danke

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    @ Egg

    Aus deiner chaotischer Beschreibung kann ich mir dein Problem nicht vorstellen und deswegen leider auch nicht helfen. Versuch es, bitte, genauer zu schildern, vor allem was du genau brauchst.

    MfG

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.07.2008
    Ort
    Hounslow
    Alter
    30
    Beiträge
    10
    Hallo
    @ Mobius

    Deine Routine funktioniert hab sie mal geschrieben um sie fuer meine Anwedung zu testen.

    Code:
    list      p=16f873            ; list directive to define processor
    	#include <p16f873.inc>        ; processor specific variable definitions
    	
    	__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _CPD_OFF
    
    ; '__CONFIG' directive is used to embed configuration data within .asm file.
    ; The lables following the directive are located in the respective .inc file.
    ; See respective data sheet for additional information on configuration word.
    
    
    
    
    
    
    ;***** VARIABLE DEFINITIONS
    w_temp        EQU     0x20        ; variable used for context saving 
    status_temp   EQU     0x21        ; variable used for context saving
    
    AD1			EQU		  0x22
    AD2			EQU		  0x23
    
    DA10		EQU	  	0x26
    DA11		EQU	  	0x27
    
    PIX_COUNT	EQU		0x2F
    
    TEST_PORTA	EQU		0x30
    TEST_PORTB	EQU		0x31
    ;**********************************************************************
    		ORG     0x000             ; processor reset vector
    		clrf    PCLATH            ; ensure page bits are cleared
      		goto    main              ; go to beginning of program
    
    
    ;Initialisierung
    ini
    		movlw	0x6F
    		movwf	DA10
    		movlw	0x1C
    		movwf	DA11
    		return
    main
    		call	ini
    
    ;Die Routine ist nur zum Test geschrieben ist nicht die eigenliche Routine
    ;ansonsten laesst sich sowas auch einfacher schreiben
    start
    		incf	PIX_COUNT
    		movf	PIX_COUNT,w
    		addlw	0x21
    		movwf	FSR
    		movlw	0x26				
    		movwf	INDF
    		movf	PIX_COUNT,w
    		addlw	0x21
    		movwf	FSR
    		movf	INDF,w
    		movwf	FSR
    		movf	INDF,w
    		movwf	TEST_PORTA
    		incf	FSR
    		movf	INDF,w
    		movwf	TEST_PORTB
    		nop
    		nop
    		nop
    		
    	END                       ; directive 'end of program'
    Nochmal Danke

Berechtigungen

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