2017-10-03 1 views
0

Ich lerne, AVR in AtmelStudio zu debuggen. Also habe ich ein einfaches Programm zum Testen geschrieben. Aber es kompiliert korrekt, aber nicht wie erwartet ausgeführt. ich folgenden Code ATmega32Debugging AVR in Atmel Studio

#include <avr/io.h> 
int main(void) 
{ 
DDRA = 0xFF; 
PORTA = (10/100)*255; 
return 0; 
} 

Und aus dem Debug-Menü ausgewählt Start Debugging und Pause geschrieben hatte. Im IO Fenster habe ich den I/O Port (PORTA) ausgewählt. Ich drückte F11 Taste für die schrittweise Ausführung. Nur DDRD wird mit dem erforderlichen Wert geschrieben, aber porta wird kein Wert zugewiesen und das Debuggen wird abgeschlossen. Warum PORTA ist nichts geschrieben.

Antwort

1

Wegen der Art und Weise, in der Integer-Division in C arbeitet, wird 10/100 zu 0 ausgewertet, sodass Sie PORTA tatsächlich 0 zuweisen. Wenn Sie sehen, dass der Wert von PORTA 0 ist, verhält sich Ihr Programm wie erwartet. Es ist schwer zu glauben, Ihre Aussage, dass "porta keinen Wert zugewiesen", ohne einen Screenshot oder ein kurzes Video zu sehen.

Sie sollten erwägen dies stattdessen schreiben:

PORTA = 255 * 10/100;