ich habe folgenden in bascom code geschrieben: '---------------------- Config Portb = Output Config Porta = Input Do Portb = Porta Loop '---------------------- an port b befinden sich leds - die sich auch ansteuern lassen und leuchten! leider passiert nichts wenn ich die pins von portA einzeln gegen masse ziehe. also muß es wohl am PORTA liegen! was mache ich falsch! sorry bin ein anfänger! danke
Ich kenne bascom zwar nicht das alles was irgendwie wie BASIC klingt in mir Krämpfe verursacht, aber irgendwie wird es wohl so ähnlich aussehen: Do Portb = Pina Loop Reiner Wenn Du von PORTx liest, siehst Du nur was Du vorher mal in das Ausgangslatch geschrieben hast, nicht was Außen anliegt. Dafür gibt es das PINx Register. Reiner
Config Porta = Input Config Portb = Output Do Portb = Pina Loop End funktioniert nicht.....! grumml
Ne , ne so geht das nicht.... Wenn du zustände an porta einlesen und an portb ausgeben möchtest geht das folgendermaßen: If Pina.0 = 1 then set portb.0 else reset portb.0 end if Also liegt an port a Highpegel an, wird b.0 auch auf High gesetzt, andernfalls,ist pina.0 nicht high wird auch portb.0 auf Low gesetzt. Sven
wie kann ich das machen, dann ich z.b. alle zustände über nehmen kann oder zb wenn 0001 anliegt das gemacht wird und wenn 1010 anliegt was anderes gemacht wird! also praktisch programmausführung je nach dem was an pins 0-3 anliegt! weil wenn ich mit if arbiten soll dann wird das elendlang!
Portb = Pina müsste auf jeden Fall funktionieren. Ich vermute der Fehler liegt woanders, probier mal ob es in Assembler geht: http://www.mikrocontroller.net/sourcecode/tutorial/leds+buttons.asm
Hallo, also in assembler machst du so, in r16,pina out r16,portb dann geht das was an B anligt gleich an A wieder raus. Die Eingangszustände kannst du auf eine Sprungtabelle schicken, also du liest eine 0B00000001 vom Port nimmst die mal 2 (weil 16 Bit Adresse) und machst ICALL oder IJUMP auf Tabelle. Mike
Hi Mark! Momente mal. Du schreibst, Du ziehst die Eingänge an PortA nach Masse. Dazu brauchst Du ein Pull-Up (Widerstand an PortPins gegen +5V, etwa 10k bis 47k), entweder im AVR oder extern, sonst tut sich gar nix. Das interne Pull-Up machst Du über das PortA-Register, das Du high setzt, während das DDRA-Register auf Eingang steht. Ansonsten ist PortB=PinA schon richtig. In Assembler etwa so: ldi TEMP1,0x00 out DDRA,TEMP1 ;Port A => Eingang ldi TEMP1,0xFF out PORTA,TEMP1 ;Pull-Ups an ldi TEMP1,0xFF out DDRB,TEMP1 ;Port B => Ausgang ldi TEMP1,0x00 out PORTB,TEMP1 ;Ausgänge low main: in TEMP1,PINA out PORTB,TEMP1 rjmp main In BASIC prinzipiell nicht anders, aber ich weiß nicht, wie dort die Ports angesprochen werden, Vielleicht so: Config Portb = Output Config Porta = Input Porta = 0xFF 'Pull-Ups an Do Pinb = Porta 'Ausgabe Port A auf Pin B Loop Ohne Pull-Ups solltest Du die LEDs flackern sehen, wenn Du mit dem Finger an den unbeschalteten Eingang gehst. Die Eingänge sind dann sehr hochohmig und die Brummspannung reicht aus, um sie anzusteuern. Sven (aber ein anderer ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.