Ich bin neu in der Programmierung. Ich habe kleine Zweifel, ich weiß, das ist eine einfache Frage, aber ich bin verwirrt. Ich habe folgende Funktion:
void ReadAdConfReg(void)
{
SPCR = 0x5D;
ADC_CS = 0;
while (MISO_PIN != 0) ;
spi(0x50);
adcConfig = spi(0xFF);
adcConfig = (adcConfig << 8) | spi(0xFF);
ADC_CS = 1;
}
Ich habe adcConfig
als globale Variable deklariert: unsigned int adcConfig
.
Wie kann ich den adcConfig
Wert drucken. Da dies eine void
Funktion ist, gibt sie keinen Wert zurück.
Ich habe es so versucht:
ReadAdConfReg();
printf("configreg:%d",adcConfig);
Ist es falsch? Oder wie kann ich adcConfig
Wert drucken.
Controller ist ATMega32A , Compiler CodeVisionAVR .
Wenn die Funktion einen Wert zurückgeben muss, kann sie nicht für ungültig erklärt werden. So wie Sie es jetzt haben, müssen Sie zuerst die Funktion aufrufen und dann die globale Variable an die printf-Funktion übergeben. Also, was Sie tun, sollte funktionieren.
Um die Funktion mit einem Rückgabewert zu verwenden, gehen Sie wie folgt vor:
unsigned int ReadAdConfReg(void)
{
unsigned int retVal;
SPCR = 0x5D;
ADC_CS = 0;
while (MISO_PIN != 0) ;
spi(0x50);
adcConfig = spi(0xFF);
adcConfig = (adcConfig << 8) | spi(0xFF);
ADC_CS = 1;
return acdConfig;
}
(Hinweis: Die vorherige Bearbeitung verwendete ein lokales retVal, während die adcConfig-Variable vorhanden blieb, was möglicherweise verwirrend war. Sie können adcConfig direkt übergeben, da es sich um den richtigen Typ handelt. Wenn Sie jedoch möchten, dass die Funktion unabhängig von adcConfig ist, verwenden Sie die lokales retVal anstelle von adcConfig - das ist wahrscheinlich besser als die Verwendung einer globalen Variablen)
Dann können Sie Folgendes tun:
printf("configreg:%d", ReadAdcConfigReg());
unsigned char
.spi(0xFF)
:-) Werde ihn jetzt ändern.
verendra
Dean
verendra