Pagina 1 di 1

Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 9:43
da floppinoo
Salve sono alle prese con la traduzione di un codice, che usa il modulo rfid 522, pero il mio problema è che la libreria è stata scritta usando il compilatore CCS :( , invece io devo usare il compilatore XC8 della Mplab, il codice lo preso da questa fonte:

http://simplesoftmx.blogspot.it/2015/04/pic-16f628a-16f627a-lector-rfid-rc522.html

Vorrei tradurlo in modo che possa girare sul compilatore XC8 delle Mplab X IDE, sempre in linguaggio C.
In pratica non so come tradurre queste due righe di codice da CCS in linee di codice riconoscibili al compilatore XC8, le due righe che non riesco a tradurre sono :

Codice: Seleziona tutto
1)   output_bit (MFRC522_SI, ( (ucAddr&0x80) == 0x80));
2)   ucResult|= (INT1) input (MFRC522_SO);



Qualcuno sa cosa fanno quelle due funzioni output_bit e input, e in particolare come posso
tradurle in linee di codice equivalenti C ma che vadano per il compilatore XC8 della Mplab IDE.

Se poi magari qualcuno comunque, dispone di progetti scritti per il modulo rfid 522 in c che vanno su XC8
ben venga, mi sarebbe davvero utile :ok:

Grazie anticipatamente O_/ delle risposte Francesco

Re: Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 10:51
da marioursino
Codice: Seleziona tutto
output_bit (MFRC522_SI, ( (ucAddr&0x80) == 0x80));


MFRC522_SI è un'etichetta definita 16f628a.c come segue

Codice: Seleziona tutto
#define MFRC522_SI PIN_B7


In XC8 utilizza

Codice: Seleziona tutto
#define MFRC522_SI RB7


Anche nel seguente caso

Codice: Seleziona tutto
ucResult |= (INT1) input (MFRC522_SO);


dovrai definire

Codice: Seleziona tutto
#define MFRC522_SO RB6


INT1 è un singolo bit e in XC8 non mi pare esista, visto come ucResult viene utilizzato puoi scrivere

Codice: Seleziona tutto
ucResult |= (input (MFRC522_SO)) & 0x01;

Re: Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 11:10
da floppinoo
Prima di tutto grazie marioUsino :ok: ... grazie a questi esempi ora ho chiarito molte parti del codice ccs, pero rimane un problema ;

XC8 non riconosce le funzioni output_bit ( o input ( penso siano funzioni del compilatore ccs

Codice: Seleziona tutto
output_bit (MFRC522_SI, ( (ucAddr&0x80) == 0x80));
.......
ucResult |= (input (MFRC522_SO)) & 0x01;


è giusto tradurre queste due righe semplicemnte in questo modo?


Codice: Seleziona tutto
MFRC522_SI= ((ucAddr&0x80) == 0x80);
.......
ucResult |= (MFRC522_SO) & 0x01;

Re: Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 11:55
da marioursino
floppinoo ha scritto:è giusto tradurre queste due righe semplicemnte in questo modo?

Codice: Seleziona tutto
MFRC522_SI= ((ucAddr&0x80) == 0x80);
.......
ucResult |= (MFRC522_SO) & 0x01;


Sì! (diciamo che sono sicuro al 95%)

Re: Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 12:35
da floppinoo
ok intanto grazie :D .... ora provo a smanettare ...
O_/

Re: Convertire output_bit, del compilatore CCS su XC8 in C

MessaggioInviato: 22 apr 2016, 14:01
da marioursino
Diciamo che dell'assegnazione sono sicuro, non conosco bene cosa facciano le funzioni output_bit e input ma immagino che siano dei banali mapping tra pin e valore da leggere/scrivere.

Se hai altri dubbi chiedimi pure.