Forum: Mikrocontroller und Digitale Elektronik Kurze Pause für ATTiny12 ?


von Dennis Reichert (Gast)


Lesenswert?

Hi,

ich habe das Problem, das ich es nicht hinbekomme ein Programm zu
schreiben das der Mikrocontroller (in meinem Fall der ATTiny12) eine
Pause von z.B 20 ms macht. Da ich ein Lauflicht realisieren möchte das
jeweils die LED's z.B alle 20 ms um jeweils eine weiter springen.

Könnte mir jemand vielleicht helfen ?

Für die Pausen benutzte ich sonst immer folgenden Code:

      clr r16
Zaehl:
      Dec r16
      BRNE Zaehl

doch dieser ist etwas zu unflexibel !

von ThomasB (Gast)


Lesenswert?

Hallo Dennis:
man kann Unterprogramm als Pausen progr.
z.b.

.nolist
.include "1200def.inc"
.list

        ser r17
  out ddrb,r17
  out portb,r17
start:  sbi portb,1
  rcall pause
  cbi portb,1
  rcall pause
  sbi portb,1
  rjmp start

pause:  ldi r16,5
loop:  dec r16
  brne loop
  ret

von ThomasB (Gast)


Lesenswert?

Und das ganze als Lauflicht:

.nolist
.include "1200def.inc"
.list
  ser  r16
  out  ddrb,r16
  out  portb,r16
;--------------------------------------
  ldi  r17,1
start:  rol  r17
  out  portb,r17
  rcall  pause
  rjmp  start
;--------------------------------------
pause:  ldi  r18,5
loop:  dec  r18
  brne  loop
  ret

von crazy horse (Gast)


Lesenswert?

wenn du den Timer0 sonst nicht brauchst, würde ich den nehmen.

von Gerhard Schmidt (Gast)


Lesenswert?

Wenn die Pause etwa länger sein soll: Zwei oder mehr Register abwärts
zählen! Zwei Zähler durchlaufen 65536 mal die innere Schleife.

; Äußere Schleife
  clr R0
loop1:
; Innere Schleife
  clr R1
loop2:
  dec R1
  brne loop2
  dec R0
  brne loop1

MfG
Gerd

von Dennis Reichert (Gast)


Lesenswert?

Thx @ all

ich werde eure Tipps mal ausprobieren !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.