Taster Programmier Anfänger Problem Atmega32

Gast #956346
Lesenswert?
• ▲
▼
Ich habe ein Problem mit der Programmierung einer Abfrage für einen 
Taster, der An PORTC1 angeschlossen mit 100kOhm Pulldown Widerstand 
angeschlossen ist. Desweiteren ist eine LED an PortB7 angeschlossen. 
Mein Controller ist ein atMega32.

Hier ist ein Assembler-Programm, welches den Bei gedrücktem Taster das 
LED leuchten lässt und bei nicht gedrücktem bleibt es aus.
1
.include "m32def.inc"
2
rjmp Anfang
3

4
Anfang:
5
      sbi   DDRB,7  ;Datenrichtungsbit
6
Schleife:
7
      sbic  pinc,1
8
      sbi   portb,7
9
      sbis  pinc,1
10
      cbi   portb,7
11
      rjmp  Schleife

Nun will ich das ganze in gcc realisieren. Dazu habe ich folgendes 
geschrieben:

#include   <avr/io.h>
#include  "main.h"
1
void main(void)
2
{
3
  DDRB |= (1<<PB7);
4
  while(1)
5
  {
6
    if (PINC & (1 << PC1))
7
    {
8
      PORTB |= (1<<PB7);
9
    }
10

11
    if (!(PINC & (1 << PC1)))
12
    {
13
      PORTB &= ~(1<<PB7);
14
    }
15
  }
16
}

Bei diesem Programm drücke ich den Taster, dann geht die LED an, aber 
aus geht sie leider nicht mehr, wenn ich den Taster loslasse. Meine 
Frage: Woran kann das liegen?
An der Hardware auf jeden fall nicht, denn bei dem Assembler Programm 
geht es ja.
Danke für Antworten. ( Ich bin ein Neuling.Bitte um Verständnis.)
#956824
Lesenswert?
• ▲
▼
Würde ich gerne, aber wie gesagt, imho müsste deiner auch gehen. Mein 
AVR Debugger denkt das auch...
Gut ich hätte es jetzt eher so gemacht:
1
void main(void)
2
{
3
  DDRB |= (1<<PB7);
4
  while(1)
5
  {
6
    if (PINC & (1 << PC1))    {
7
      PORTB |= (1<<PB7);
8
    }
9
    else {
10
      PORTB &= ~(1<<PB7);
11
    }
12
  }
13
}
Aber das dürfte eigentlich nichts ändern. Das mein Code geht freut mich 
natürlich, ob er letzen Endes auch effektiver ist (also von den 
resultierenden Assembler-Anweisungen weiß ich nicht, aber das ist in 
diesem Fall ja eh nicht so kritisch.

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.