× MSP430, Microcontrollori 16 bit Ultra Low Power

HELP

10 Anni 4 Mesi fa #1 da elpablito
HELP è stato creato da elpablito
Buon giorno
Sto facendo il solito.....
Conosco la locazione di memoria (indirzzo) supponiamo 0x200
so che contiene una variabile int (quindi in 0x200 e 0x201)
Come faccio ad assegnare alla variabile int pippo il contenuto di 0x200 e 0x201 ?
Naturalmente usando il C, vediamo se così scopro dove ho raccontato balle.
Baciamo le medaglie
Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
10 Anni 4 Mesi fa - 10 Anni 4 Mesi fa #2 da StefA
Risposta da StefA al topic HELP
Se ho capito cosa intendi..
definisci pippo come un intero.. ci copi dentro il valore della memoria più significatovo, poi shifti di 8 posizioni e ci sommi il valore meno significativo.

int pippo;

pippo = 0;
pippo = [il contenuto di 0x200];
pippo >> 8;
pippo = pippo + [il contenuto di 0x201];

questo considerando il valore contenuto in 0x200 quello più significativo, cioè i bit più a sinistra; se il più significativo è il contenuto di 0x201 basta invertire 0x200 e 0x201.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima Modifica 10 Anni 4 Mesi fa da StefA.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
10 Anni 4 Mesi fa #3 da elpablito
Risposta da elpablito al topic HELP
buondi allo STE

Il problema e esattamemte come scivere

pippo = [il contenuto di 0x200];

Se pippo è un int automaticamente le due locazioni finiscono in pippo

Lo 0x200 nasce da questa istruzione

ADC10SA = 0x200 che rappresenta la prima cella di memoria dove l'ADC va a memorizzare i risultati delle
varie conversioni.

ADC10SA è una voce del registro di ADC di che tipo è o se vuoi 0x200 di che tipo è ?

Dovrei scrivere:

int pippo = *ADC10SA che è una fesseria perchè ADC10SA è l'indirizzo, ma è per rendere l'idea

Il problema è solo questo come scrivere correttamente

pippo =[contenuto della cella 0X200]

Poi il resto non è problema.
Grazie
Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
10 Anni 4 Mesi fa #4 da StefA
Risposta da StefA al topic HELP
passa da una variabile a 8 bit.. un char.
int pippo = 0;
char dato = 0;

dato = [il contenuto di 0x200];
pippo = dato;
dato = [il contenuto di 0x201];
pippo >> 8;
pippo = pippo + dato;

simulandolo (anche solo con mplab sim) puoi vedere se il dato quando viene passato dalla memoria alla variabile a pippo rimane invariato, altrimenti devi aggiungere il casting..

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
10 Anni 4 Mesi fa #5 da elpablito
Risposta da elpablito al topic HELP
OK Ste
Dimmi come fai a scivere in c
dato = [il contenuto di 0x200];
Poi siamo amici !!
ciao Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login