PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum leuchtet die LED nicht ?



Bqube
21.12.2008, 17:44
hallo ich arbeite mit ASM und versuche auch was in Bascom aber warum leuchtet hier die Led net ??



$regfile = "m8def.dat"

$crystal = 4000000

$baud = 9600

Config Pinb.0 = Output

do
Portb.0 = 1
Waitms 100
Portb.0 = 0
Waitms 100
loop


was ist an diesem Programm falsch ich verwende einen atmega8
bitte um antwort MFG P.Gnauck

Bqube
21.12.2008, 19:54
Oder kann mir vielleicht einer sagen wie ich es am besten Programmieren sollte ?

for_ro
21.12.2008, 20:12
Hallo Bqube,
an deinen Zeilen sehe ich keinen Fehler.
Bist du sicher, dass deine Hardware richtig mitspielt.
Hast du das gleiche Programm mit ASM geschrieben und läuft es da?

Gruß

Rolf

magic33
21.12.2008, 20:20
das stimmt so nicht
versuch mal



config portb=output
do
waitms 100
toggle portb.0


loop

man kann den pin nicht configuriern nur den port
config portb.0=output

led alias portb.0

led =on '1
led =off '0

so sollte es auch gehen#

Neutro
21.12.2008, 20:20
Du musst nicht PINB.0 = output
sondern PORTB.0 = output schreiben.
Mit PIN definierst du einen Eingang z.B einen Taster, mit Port einen Ausgang.
(Schau dir doch mal das WIKI zum Einstieg in die Bascom Prog. an.)

MfG

Neutro

Neutro
21.12.2008, 20:22
Da war ich wohl eine sek. zu langsam.......

for_ro
21.12.2008, 21:17
@magic33, Neutro
habt ihr euch schon einmal die Help zum Thema Config Port angesehen?

Config Port

Action
Sets the port or a port pin to the right data direction.

Syntax
CONFIG PORTx = state
CONFIG PINx.y = state

Ist genau das, was er schreibt und was so auch super funktioniert.

Gruß

Rolf

Bqube
21.12.2008, 23:00
Hi,
Super danke ich hab es so geschrieben und es hat geklappt aber liegt das vielleicht an meinem Simulator das der Simulator erst so spät anfängt zu arbeiten also die Led's umschalten das macht er erst ab 1543.00 us ??
Hier ist der Code




$regfile = "m8def.dat"

$crystal = 4000000

$baud = 9600

Config Portb = Output

do
Portb.0 = 1
Waitms 0.1
Portb.0 = 0
Waitms 0.1
Loop



Aber noch eine Frage wie bekomme ich es hin das ich nur einzelne Ports vom B,C oder D als aus oder eingang einstelle ??
Mfg P.Gnauck

Gento
21.12.2008, 23:13
So z.B.


Config Pinc.0 = Output
Config Pinc.1 = Output
Config Pinc.2 = Output
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Output

Gento

for_ro
21.12.2008, 23:37
der Simulator erst so spät anfängt zu arbeiten also die Led's umschalten das macht er erst ab 1543.00 us ??
Davor initialisiert er das SRAM usw., das dauert seine Zeit.


Waitms 0.1
Das geht nicht, als Wartezeit sind nur ganze Zahlen im Word Bereich erlaubt. 100 µs bekommst du ungefähr so hin
Waitus 100

Wenn du die Direktive $sim in dein Programm aufnimmst, werden die Wartezeiten im Simulator unterdrückt. Die echten Zeiten kannst du sowieso nur unten in der Statuszeile sehen. Ich denke, von dort hast du auch deine 1543 µs.


Aber noch eine Frage wie bekomme ich es hin das ich nur einzelne Ports vom B,C oder D als aus oder eingang einstelle ??
Siehe dein eigenes Post ganz am Anfang.

Noch was: Du kannst übrigens auch direkt in die Datenrichtugsregister (DDR) schreiben. Einen Pin zum Ausgang machst du z.B. durch
DDRB.0 = 1
oder den ganzen Port durch
DDRB = &B0000_0001 (hier gehen auch die anderen Schreibweisen (dec, hex)

Gruß

Rolf