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 ;-)