PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger startbits z.b 0b00001 usw...



devilstorm
23.08.2006, 22:43
bin noch recht neu im gebiet :-)

und hab deswegen ne kurze frage: was bedeutet das rot makierte? was hat das damit auf sich war ne programm vorlage, bzw wie schaltet man die zweite led an port B 1 ?

;Start, Power ON, Reset
main: ldi r16,lo8(RAMEND)
out SPL,r16
ldi r16,hi8(RAMEND)
out SPH,r16 ;init Stack
sbi DDRB,0
;------------------------------------------------------------------------
mainloop: wdr
ldi r16,0b00000001 ;LED ON
out PORTB,r16
rjmp mainloop

Mehto
23.08.2006, 23:00
Hallo,

mit dem Befehl ladest du zuerst ein Bitschema in ein Register und gibst es mit dem nächsten Befehl (Out) an den Ausgangsport aus.
Ein bit representiert dabei einen Port Pin.

Um die andere LED anzuschalten ladest du also einfach den Wert ob00000011 in das Register und gibst es dann an den Port aus.
Allerdings must du den Portpin dann auch als Ausgang definieren. das machst du bei dir mit dem befehl sbi DDRB, 1

Am besten du schaust dir mal das Tutorial auf http://www.mikrocotroller.net an.

Gruß,
Mehto

robocat
24.08.2006, 10:02
nur als ergänzung zum besseren verständnis,
ich wollte gestern, dass PB0 und PD5 geschalten sind:

LDI R24, 1 ; PB0 schalten (1stes bit von portb)
OUT PORTB, R24
LDI R24, 32 ; (PB5 schalten, 6tes bit, 32dezimal ist binär 100000)
OUT PORTD, R24
nun anschliessend sollen PD6 und PD7 geschalten sein:

LDI R24, 0 ; alle bits an portb wieder auf 0
OUT PORTB, R24
LDI R24, 192 ; 7tes und 8tes bit (192dez=128+64=binär 11000000)
OUT PORTD, R24

die ports müssen natürlich als ausgänge konfiguriert sein:

LDI R24, 255
OUT DDRB, R24
OUT DDRD, R24

gruesse, die katz

Rofo88
24.08.2006, 10:38
ldi r16,0b00000001 ;LED ON
out PORTB,r16
Wenn Du nur ein Bit setzen willst, kannste das auch direkt machen

sbi PortB,0

24.08.2006, 13:44
und alle 3 LED anzusteuern muss der code

mainloop: wdr
ldi r16,0b00000111 ;LED ON
out PORTB,r16
rjmp mainloop

lauten wenn ich das richtig verstanden habe?

danke im vorraus

Rofo88
24.08.2006, 13:51
Ja hast Du aber die anderen 2 Leds müssen auch noch als Ausgang definiert werden.


sbi DDRB,0 ;ersetzen duch

ldi r16,0b00000111
out DdrB,r16

MfG

24.08.2006, 16:00
ahaaa ;-)

wenn z.B

0b11111111 werden alle pins auf "an " gestellt oder?

0b0000001 pist aub port B pin 1
0b0000010 ist auf port B pin 2 usw...?

stimmt das ?

danke im vorraus

robocat
24.08.2006, 16:05
ja, genau so ist das.
dezimal wäre 0b11111111 = 255, dann sind alle pins an dem port gesetzt.

24.08.2006, 17:22
und port C oder D dann waäre das:

0C oder 0D 0000001 usw...?

Danke im vorraus

Rofo88
24.08.2006, 17:32
nein das 0b steht für Binäre Eingabe


ldi r16,0b11111111
out DdrC,r16 ;alle Pins an Port C als Ausgang
ldi r16,0b11111111
out PortC,r16 , alle Pins an PortC auf High

Analog gilt das für PortD


(ja das 2te ldi kannst weglassen da die Daten ja schon im Register stehen)

24.08.2006, 17:38
alles klar dann weiß ich bescheid ;-)

vielen dank an alle =D>


gruß stefan