tid på blinkande diod
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
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
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
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
om man istället gör så här
så skickar du bara med tiden du vill vänta i W och använder
samma paus
Swech
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
Kod: Markera allt
movlw tid1
call Wait1
.
.
.
.
.
Wait1
movwf var2
loop
decfsz var1,1
goto loop
decfsz var2,1
goto loop
return
samma paus
Swech