mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90s1200 Interrupt extern


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
meiner einer möchte den AT90s1200 dazu bewegen, auf äußere Interrupts
(int0) zu reagieren, aber irgenwie will mir das nicht gelingen.
Habt ihr es schon mal geschafft, wenn ja wie?

Mein Programm sieht so aus, funzt aber nicht:
.NOLIST
.INCLUDE "E:\Eigene~1\Benutzer\Jens\Quellc~1\Def
INC\1200def.inc"
.LIST
.CSEG
.ORG 0000

RJMP START
RJMP ISERVE

START:
         ldi R16 , 0xFF        ; R16 = 255
         out Ddrb , R16       ; Port B Def. Ausgang
   ldi R16 , 0x00        ; R16 = 0
   out DdrD , R16       ; Port D Def. Eingang
   SEI          ; Interruptfreigabe
   ldi R16 , 0b01000000 ; Bit 7 setzen, vielleicht hilfts
   out GIMSK , R16      ; Kontrolregister setzen
   ldi R16 , 0b00000000 ;
   out MCUCR , R16      ; MCUCR Interruptart festlegen

Prog:
   RJMP Prog         ; Endlosschleife

ISERVE:
         ldi R16, 0xFF        ; R16 = 255
         Out Portb , R16      ; R16 nach B

         ldi R18 , 0x03       ; R18 = hex12
wait1:
         ldi R17 , 0xFF       ; R17 = 255

pa_loop: ldi R16 , 0b00000001 ; R16 Startwert setzen
   out tccr0 , R16      ; R16 nach tccr0
   in R16, tifr         ; tifr nach R16
   sbr R16, exp2(tov0)  ; exp2(tov0) mit R16 setzen
   out tifr, R16        ; R16 nach tifr
   clr R16              ; R16 löschen
   out tcnt0, R16       ; R16 nach tcnt0
cwait:   in R16 , tifr        ; tifr in R16 speichern
   sbrs R16 , tov0      ; Registerbi?
   rjmp cwait           ; springen nach wait
   dec R17              ; R17 - 1
   brne pa_loop         ; springe bei ungleich

         dec R18              ; R18 - 1
         brne wait1           ; wiederhole

         ldi R16, 0x00        ; R16 = 0
         out Portb , R16      ; R16 nach B

   RETI;
Ohne Interrupt macht das Programm übrigens was es soll, nur kann ich
nicht alles machen was ich will, weil ich halt immer am pollen bin ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.