Wie kann ich mir Variablen anzeigen lassen?

Gast #1951847
Lesenswert?
• ▲
▼
Hallo,
ich benutze AVR Studio4 und habe ein kleines C Programm geschrieben.
1
#include <avr/io.h>
2
#define Led_gelb_toggle PINB = (1 << PIN4);
3
//***********************************************
4
// don't expect this to make any sense :-)
5
//***********************************************
6
int main(void)
7
{
8
unsigned long int z = 12345678;
9
volatile unsigned char n;
10
n = sizeof(z);
11
DDRB = 16;  // PB4 als Output der  Led_gelb
12

13
  while(1)
14
  {
15
    z += 1234;
16
    if(z >= 16000)
17
    {
18
      z = 0;
19
      Led_gelb_toggle
20
    }
21
  }
22
}
23
//***********************************************
Ich mache:
Programm compilieren
und dann im Menüpunkt "Debug" im Simulator das Programm simuliert
starten.

Ist sehr schön, aber wie kann ich mir im Step-Betrieb den Wert der 
variablen z und n anzeigen lassen?
Gast #1951977
Lesenswert?
• ▲
▼
Vielen Dank an Todi (Gast) und Hannes H. (mui)

Hat mir sehr geholfen.
Warum bin ich da nicht selber drauf gekommen, bzw.
wo steht sowas geschrieben.
Ich wage gar nicht dran zu denken, was sich da noch alles verborgen 
hält, von dem ich überhaupt keine Ahnung habe...
#1952010
Lesenswert?
• ▲
▼
Mit PINn kannst du nur abfragen. Gesetzt wird der Pin mit "PORTn = xyz"

die Variablen musst Du in diesem Beispiel gar nicht global deklarieren. 
Nur wenn die in anderen Funktionen genutzt werden / sichtbar sein 
sollen.
1
#include <avr/io.h>
2
#define Led_gelb_toggle PORTB ^= (1 << PB4);  // XOR mit Bit 4
3

4
int main(void)
5
{
6
unsigned long int z = 12345678;
7

8
DDRB = (1<<PB4);  // PB4 als Output der  Led_gelb
9
                  // (1<<PB4) schiebt die "1" um "PB4"-Stellen nach links
10

11
  while(1)
12
  {
13
    z += 1234;
14
    if(z >= 16000)
15
    {
16
      z = 0;
17
      Led_gelb_toggle
18
    }
19
  }
20
}

1
void main(void) {
2
  DDRB= ~(1<<PB4);  // 0b11110111 nach DDRB schreiben (PB4 als Eingang)
3
  while (true) {
4
    if (PINB && (1<<PB4) { // vergleicht (AND) 0b....1... mit 0b00001000
5
      TOGGLE_LED;
6
    }
7
  }
8
}
Gast #1952044
Lesenswert?
• ▲
▼
Gregor B. schrieb:
> Mit PINn kannst du nur abfragen. Gesetzt wird der Pin mit "PORTn = xyz"

Nö, das mit
1
#define Led_gelb_toggle PINB = (1 << PIN4);
funktioniert wirklich beim ATtiny25. Ist äh war bis jetzt eben ;-)
ein Geheimtip   ;-)

Aber das soll auch nicht das Thema dieses Thread's werden, sondern wie 
man AVR's mit AVR-Studio4 besser simulieren kann...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.