AVR ATmega8: AND-Logik bei LED`s

Gast #1042426
Lesenswert?

Hallo zusammen

Bin bei meinen ersten Programmierversuchen bei einem ATmega8 und wollte 
nun mal folgenden Code testen:


.include "m8def.inc"

         ldi r16, 0xFF
         out DDRB, r16

         ldi r16, 0x00
         out DDRD, r16

loop:
         in r16, PIND
         andi r16, 0b11110000
         out PORTB, r16
         rjmp loop

Meine Erwartung: Wenn man den Switch 0-3 drueckt sollte kein LED 
leuchten, aber das machen sie doch, wieso?

Gruss:
Simon
Persönliche Seite #1042437
Lesenswert?

Simon wrote:
> Hallo zusammen
>
> Bin bei meinen ersten Programmierversuchen bei einem ATmega8 und wollte
> nun mal folgenden Code testen:
>
>
> .include "m8def.inc"
>
>          ldi r16, 0xFF
>          out DDRB, r16
>
>          ldi r16, 0x00
>          out DDRD, r16
>
> loop:
>          in r16, PIND
>          andi r16, 0b11110000
>          out PORTB, r16
>          rjmp loop
>
> Meine Erwartung: Wenn man den Switch 0-3 drueckt sollte kein LED
> leuchten, aber das machen sie doch, wieso?
>
> Gruss:
> Simon
Deine Erwartung versteh ich nicht... das UND hat doch nix mit den 
gedrückten Tasten zu tun...
Du wendest nur eine konstante Maske auf die Tastendrück an.
1
loop:
2
  in r16, PIND
3
  andi r16, 0b11110000
4
  brne an
5
   out PORTB, 0xFF
6
   rjmp loop
7
  an:
8
   out PORTB, 0x00
9
rjmp loop
Dann sollten die LEDs leuchten (oder ausgehen je nachdem wie sie 
beschaltet sind) wenn du ALLE Tasten gleichzeitig drückst.

Kommt jezt aber auch wieder drauf an wie die Tasten verschaltet sind 
etc... naja etwas Mher input über den AUfbau wären nicht schlecht ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren