Sida 1 av 1

Lite AVR Asm hjälp.

Postat: 11 november 2004, 00:21:33
av Jonaz
Det går lite trögt nu..

Jag vill att pinne Pd1 är hög om pb1 är hög, men jag får inte till det bara

Skulle det inte kunna vara nått enkelt som
IF PortD.1 = 1 Then Portb.1 = 1
Else goto loop


Förslag?

Postat: 11 november 2004, 01:57:01
av G4jm0r
Den kodsnutten du skrev är inte ASM utan snarare en blandning av C och Basic.
Kolla i microprocessorns datablad, där finns ganska användbar info.

Postat: 11 november 2004, 12:02:34
av erixon
Vad vill du göra ? över sätta koden snutten till asambler?

Eller funkar inte din kode i basic?

ps
PINx används för att läsa in från portx
PORTx används för att skriva till portx
DDRx använd för att sätta rikning på portx
ds

Postat: 11 november 2004, 16:41:27
av chille
pseudokod:

Kod: Markera allt

if portd1 == 1then
out portb, 1
endif

goto loop
assemblerkod

Kod: Markera allt

sbic PIND, 1
sbi PORTB, 1
rjmp loop
;sbic = Skip if Bit in IO register is Cleared
;sbi = Set Bit in IO register

Postat: 14 november 2004, 00:16:44
av Jonaz
Det är i BASCOM ,Basic?

Kod: Markera allt

  Dim A As Byte
Config Portb = Output
Config Portd = Input

Hit:
 Do
    If Portd.1 = 1 Then Goto Dit Else Goto Hit
Dit:
 Set Portb. 1

Loop

End
Tycker att det borde funka.
Vad är det för knas tro?

Postat: 14 november 2004, 00:32:57
av $tiff
går det att sätta en hel port som in- och utgång på det sättet i Bascom?

Postat: 14 november 2004, 02:26:16
av G4jm0r
Bascom är precis som fastAVR en basic compilator till avr processorer.

Postat: 14 november 2004, 11:37:13
av cykze
Jonaz skrev:Det är i BASCOM ,Basic?

Kod: Markera allt

  Dim A As Byte
Config Portb = Output
Config Portd = Input

Hit:
 Do
    If Portd.1 = 1 Then Goto Dit Else Goto Hit
Dit:
 Set Portb. 1

Loop

End
Tycker att det borde funka.
Vad är det för knas tro?
Ska det inte vara If PinD.1 = 1 ?

Och snälla använd inte Goto:s. Det är mycket, mycket sällan man verkligen behöver använda det och det anses som väldigt fult att använda sig av det. Tyvärr ser man ofta att Goto:s används i Basic-kod, medan man aldrig ser det i t ex C-kod. Fråga mig inte varför.

Är det inte så här du vill ha det, med reservation för eventuella syntaxfel?

Kod: Markera allt

Dim A As Byte
Config Portb = Output
Config Portd = Input

Do
    If Pind.1 = 1 Then Set Portb.1
Loop

End