da
belva87 » 6 nov 2012, 23:10
Ordunque, a mente sgombra e dopo aver fatto due scritti di Analisi Matematica ho compreso la logica

Ieri ero un po' nervoso, con la testa piena di scritture incomprensibili

e altra robaccia varia.
Ho però un'altra domanda, anche se io non definisco PA0, o più in generale PXn, come ha fatto [user]Gohan[/user] nel suo esempio di codice al post 27 assegnando un valore preciso (ad esempio assegna a PA7 il valore 7) ... mi funziona lo stesso...
Sto di nuovo sbagliando? oppure non ho capito un fico secco?? oppure è intrinseco nella scrittura PAn, con n da 0 a 7, che il compilatore "comprende" in automatico?? (appare infatti nel completamento automatico del testo)
Sto testando questo codice:
- Codice: Seleziona tutto
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/delay.h>
int main(void)
{
MCUSR = (0 << WDRF); // mette a 0 il bit WDRF del registro MCUSR, disabilita il watchdog
wdt_disable(); // a cosa serve? se non lo scrivo il WD è attivo
DDRA = 0xff; // imposto la porta A come uscita scrivendo tutti 1 dentro il registro DDRA
_delay_ms(1000); // aspetto per avere tempo dopo il reset
PORTA = (1 << PINA0); // scrivo 1 nel registro PORTA in posizione di PINA0, led rosso on
_delay_ms(1000); //aspetto
PORTA = (1 << PINA1) | (0 << PINA0); //accendo led rosso spengo led verde
while(1)
{
}
}
In cui l'ultima operazione fatta su PORTA mi restituisce come valore 00000010 che è ottenuto dall'operazione di OR tra 00000010 e 00000000, se ho capito bene...
Se mi confermate ciò e sapete dirmi qualcosa a riguardo la storia del define ve ne sarei grato, che poi ho già in mente di fare il test dello stato di un bit di PORTA, e mi sa che ho anche in mente come farlo con questi nuovi metodi che sto scoprendo
Però ammetto che l'istruzione BTFSC o BTFSS mi mancano già....
