Forum: Mikrocontroller und Digitale Elektronik geht nicht : (( Anfängerhilfe


von der Lehrling (Gast)


Lesenswert?

Hallo,

dieses kleine Programm soll nur einen Pin von H auf L setzen.Funzt
nicht .Was mache ich falsch ?

.CSEG
.ORG 0000

  rjmp main

main:

  ldi r16,low(ramend)    ;StackPointer auf Ramend
  out spl,r16
  ldi r16,0b00000010  ;PortB PB1 als Ausgang setzen
  out DDRB,r16    ;Richtungsregister setzen
  clr r16

loop:   sbi PORTB,1          ;High an Port B Pin1  ausgeben
  rcall wait    ;wartschleife aufrufen
  cbi PORTB,1    ;low an Port B
  rjmp loop    ;Schleife neu beginnen


wait:
          ldi  R17, $1F    ;0.001 s = 5000Khz
WGLOOP0:  ldi  R18, $55
WGLOOP1:  dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
          nop
          nop
    ret




Vielen Dank....

sagt der Lehrling

von Benedikt (Gast)


Lesenswert?

Was macht das Programm denn ?
PB1 ist abwechselnd für <1us High und dann für einige ms auf Low.

von Tobi (Gast)


Lesenswert?


von Carp (Gast)


Lesenswert?

Hi,

loop:
    sbi PORTB,1  ;High an Port B Pin1  ausgeben
    rcall wait   ;wartschleife aufrufen
    cbi PORTB,1  ;low an Port B
    rcall wait   ;warteschleife aufrufen
  rjmp loop    ;Schleife neu beginnen

Ich glaub Du willst das so haben.

Cya
Carp

von der Lehrling (Gast)


Lesenswert?

Danke,


Prima ....es geht. : ))


sagt der Lehrling

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.