tid på blinkande diod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, bara återkom om något är oklart...
Stene
Inlägg: 276
Blev medlem: 13 maj 2008, 19:21:52
Ort: Uppsala

Inlägg av Stene »

Nu är jag här med en dum fråga igen. jag sitter o försöker o förstå vad jag har gjort för fel i en kod. det är 4st dioder som ska rinna fram o tillbakas. det får jag att fungera perfekt men jag vill ha lite olika hastigheter på det. Att det går från höger till vänster i en fart och från vänster till höger i en annan. Jag har då angivit 2 st tider. det fungerar så att när jag har en tid på tid1 och en annan på tid2. då funkar det som jag vill, fort åt höger o sakta till vänster. Men om jag byter plats på tiderna så går den i samma hastighet höger till vänster, vänster till höger. Jag har markerat tiderna som xxxx i koden. Vad har jag gjort för fel. sen fins det säkert ett bättre sätt att skriva koden. Jag är en riktig nybörjare!!

STATUS equ 0x03
portc equ 0x07
var1 equ 0x20
var2 equ 0x30
var3 equ 0x25
var4 equ 0x35
trisc equ 0x87
RPO equ 0x05
tid1 equ xxxx
tid2 equ xxxx

org 0x00
goto init

Wait1 movlw tid1
movwf var2
loop decfsz var1,1
goto loop
decfsz var2,1
goto loop
return


Wait2 movlw tid2
movwf var3
loop2 decfsz var3,1
goto loop2
decfsz var4,1
goto loop2
return

init clrw
movwf portc
bsf STATUS,RPO
movwf trisc
bcf STATUS,RPO

main bsf portc,0
call Wait1
bcf portc,0
bsf portc,1
call Wait1
bcf portc,1
bsf portc,2
call Wait1
bcf portc,2
bsf portc,3
call Wait2
bcf portc,3
bsf portc,2
call Wait2
bcf portc,2
bsf portc,1
call Wait2
bcf portc,1
goto main

end
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Hej.
Återkom med hela koden. D.v.s #include av device filen och din CONFIG o.s.v.
Och lägg in den med code-taggarna så att det går att läsa.
*Sen* kan vi kolla...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En liten sak...

> det är 4st dioder som ska rinna fram o tillbakas.

Görs normalt med "rotate" instruktionerna. Kolla lite på dom.

För övrigt så framgår det inte ens vad det är för processor...
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Inlägg av Swech »

titta på dina waitloopar
de är inte skrivna på samma sätt ..titta noga :)

Sen kan man "återvinna" samma waitloopar eftersom
det bara är tiden tid1 och tid2 som skiljer

Kod: Markera allt

Wait1 
    movlw tid1 
    movwf var2 
loop 
    decfsz var1,1 
    goto loop 
    decfsz var2,1 
    goto loop 
    return 
om man istället gör så här

Kod: Markera allt

    movlw tid1 
    call  Wait1
.
.
.
.
.

Wait1   
    movwf var2 
loop 
    decfsz var1,1 
    goto loop 
    decfsz var2,1 
    goto loop 
    return 
så skickar du bara med tiden du vill vänta i W och använder
samma paus

Swech
Skriv svar