Discussione: Help assembler pic
Visualizza messaggio singolo
Vecchio 20 marzo 09, 22:40   #5 (permalink)  Top
MSchiepp
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da Milus Visualizza messaggio
in effetti non capisco come faccia l'assembler
a capire che con il primo org intendo lavoare sulla ram e con il secondo
nella program memory...
In effetti non serve che lo capisca... quando definisci una variabile tu in realtà definisci l'indirizzo (cioè la cella di memoria) della variabile in cui scriverai e leggerai dei valori. Quando usi ad esempio l'istruzione movf xx,w il processore sa che deve prendere il valore contenuto nella locazione xx e metterlo nel registro w. Sono le istruzioni che usi che interpretano il valore come una locazione di memoria o una locazione di programma, non l'assemblatore!
Per definire le variabli hai tanti modi:
definire il valore assoluto di ogni variabile (dici tu dove è la variabile):
1) Dato EQU 0x12 vuol dire che la variabile Dato è nella locazione di memoria (dati) n. 0x12. sistema assolutamente sconsigliato.

2) Definire con ORG 0x0C l'inizio dell'area dati ed elencare le variabili specificando la direttiva RES n che riserva una o più locazioni di memoria
es:
ORG 0x0C ; inizio file register
Dato_1 res 1 ;locazione 0x0C
Dato_2 res 1 ;locazione 0x0D
... ecc. sistema comodo, ma non ottimale

3) Usare le direttive CBlock/endc che definiscono l'area variablili e che permettono di associare il nome delle variabili alle finestre di watch per il debug e permettono di creare una lista di simboli che aiuta nel debug del software. Es.

CBlock 0x0C ;inzio blocco
Dato_1
Dato_2
Dato_3
...
Dato_N
endc

Altro consiglio: invece di ridefinire i registri di sistema, includi il file del processore che stati usando (o quello generico pic.inc nelle ultime versioni) che contiene già tutti i nomi e gli indirizzi corretti dei registri per tutti i pic!

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando