Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger startbits z.b 0b00001 usw...
devilstorm
23.08.2006, 23: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
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
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
ldi r16,0b00000001 ;LED ON
out PORTB,r16
Wenn Du nur ein Bit setzen willst, kannste das auch direkt machen
sbi PortB,0
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
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
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
ja, genau so ist das.
dezimal wäre 0b11111111 = 255, dann sind alle pins an dem port gesetzt.
und port C oder D dann waäre das:
0C oder 0D 0000001 usw...?
Danke im vorraus
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)
alles klar dann weiß ich bescheid ;-)
vielen dank an alle =D>
gruß stefan
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.