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.)