PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten in eine Adresse speichern



Egg
05.07.2008, 19:00
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

Mobius
05.07.2008, 19:51
Schau dir die indirekte Addressierung des PICs an. Am Besten liest du dir das Datenblatt und sprut.de (http://sprut.de/electronic/pic/grund/adress.htm#indirekt) durch.



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

Egg
05.07.2008, 19:59
Danke fuer die schnelle Antwort.
Hab mir des datenblatt schon oeffters durchgenommen hab aber nie die loesung drinn lesen koennen.
Nochmals Danke

PICture
05.07.2008, 21:06
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. O:)

MfG

Egg
06.07.2008, 13:44
Hallo
@ Mobius

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


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