PCINT Probleme bei Atmega48

Gast #1081933
Lesenswert?

Hallo habe folgendes Problem,
möchte mich gerne mit den PCINT versuchen und möchte einfach nur LEDs 
durch einen Interrupt an Pin8 an oder aus schalten. Aber irgendwie 
funktioniert es nicht. Wäre um hilfe sehr dankbar.

µC ist ein Atmega48

.include "m48def.inc"      ;Definitionsdatei laden

.def temp = r16
.def leds = r17

.cseg          ;Beginn eines Code-Segmentes
.org 0          ;Startadresse=0

.org PCINT1addr
        rjmp    interrupt       ; Interrupt Overflow Handler

main:
        ldi     temp, LOW(RAMEND)     ; Stackpointer initialisieren
        out     SPL, temp
        ldi     temp, HIGH(RAMEND)
        out     SPH, temp

  ldi  temp, (1<<PCIE1)
  sts  PCICR,temp
  ldi  temp, (1<<PCIF1)
  sts  PCIFR,temp
  ldi  temp, (1<<PCINT8)
  sts  PCMSK1, temp

  ldi  temp, 0x00        ; Port C Auf Eingang
  out  DDRC, temp
        ldi     temp, 0xFF            ; Port D auf Ausgang
        out     DDRD, temp
  out  PORTC, temp        ; Pull-Up Widerstände Port C einschalten

        ldi     leds, 0x00
  out  PORTD, leds

  sei

loop:  rjmp    loop

interrupt:                        ; Interrupt PCINT8 Overflow Handler

  com  leds          ;1er Komplement bilden von leds
  out  PORTD, leds
        reti

mfG

Sven
Gast #1081960
Lesenswert?

Hab aber noch eine frage, kann ich auslesen und vergleichen, welcher 
Taster grad gedrückt wurde? Wenn ich die Eingänge PCINT 8 - 11 als PCINT 
bestimme?

Vielleicht kennt ja einer dieses Reaktionsspiel, wo man farben sieht und 
die nachdrücken muss. Sowas in der Art möchten wir für nächstes jahr 
weihnachstmarkt bauen. dafür brauch ich nun 4 Taster, wo ich die 
reihenfolge vergleiche und wollte es auf diesem wege versuchen.

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