 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
djtech Član


Pridružen-a: Sob 18 Okt 2003 21:47 Prispevkov: 113 Aktiv.: 0.48 Kraj: Cerkvenjak
|
Objavljeno: Tor Okt 19, 2004 9:52 pm Naslov sporočila: Pavza |
|
|
Koda: |
CLRRAM
MOVLW 0XC
MOVWF FSR
BRISI
CLRF INDF
INCF FSR,F
MOVLW 0X50
SUBWF FSR,W
BTFSS STATUS,C
GOTO BRISI
RETURN
PAVZA
MOVLW .200
MOVWF T1
MOVLW .20
MOVWF T2
P1
DECFSZ T1,F
GOTO P1
MOVLW .200
MOVWF T1
DECFSZ T2,F
GOTO P1
RETURN
GLAVNI
CLRW
CALL CLRRAM
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0 ;BANK1
BCF TRISA,1 ;IZHOD ZA RELE
BCF TRISA,0
BCF TRISA,2
BCF TRISA,3
MOVLW B'00000011'
MOVWF OPTION_REG
BCF STATUS,RP0 ;BANK1
|
Ali mi lahko kdo razloži kako določim pavzo ? Kaj dela P1, GLAVNI ? Od koga je odvisna dolžina pavze (a se je ne da definirat v s) |
|
Nazaj na vrh |
|
 |
djtech Član


Pridružen-a: Sob 18 Okt 2003 21:47 Prispevkov: 113 Aktiv.: 0.48 Kraj: Cerkvenjak
|
Objavljeno: Tor Okt 19, 2004 9:58 pm Naslov sporočila: |
|
|
Hm. Ni mi uspelo programa lepo prilepit, zato ni pregleden, a mi kdo pove kako ga prilepim da je pod belo podlago, kot ste vaše gor prilepli ? |
|
Nazaj na vrh |
|
 |
surla Član

Pridružen-a: Ned 14 Dec 2003 15:22 Prispevkov: 722 Aktiv.: 3.05 Kraj: Ljubljana
|
Objavljeno: Tor Okt 19, 2004 10:07 pm Naslov sporočila: |
|
|
CLRRAM
MOVLW 0XC
MOVWF FSR
BRISI
CLRF INDF
INCF FSR,F
MOVLW 0X50
SUBWF FSR,W
BTFSS STATUS,C
GOTO BRISI
RETURN
PAVZA
MOVLW .200
MOVWF T1
MOVLW .20 ;Če tu napišeš MOVLW .200 boš čas podaljšal 10x
MOVWF T2
P1
DECFSZ T1,F
GOTO P1
MOVLW .200 ;tega lahko povečaš do 255 in zmanjšaš do 1
MOVWF T1
DECFSZ T2,F
GOTO P1
RETURN
GLAVNI
CLRW
CALL CLRRAM
CLRF PORTA
CLRF PORTB
BSF STATUS,RP0 ;BANK1
BCF TRISA,1 ;IZHOD ZA RELE
BCF TRISA,0
BCF TRISA,2
BCF TRISA,3
MOVLW B'00000011'
MOVWF OPTION_REG
BCF STATUS,RP0 ;BANK1
Torej P1 se vrti v zanki za čas pavze.
Glavni pa briše Watchdog timer in definira registre kaj pa še dela pa ne vem ker ni cel. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Okt 19, 2004 10:08 pm Naslov sporočila: |
|
|
"Pavza" je narejena na način, da se zadži tok programa za določen čas.
Koda: |
movlw . 100
movwf T1 ; v registru T1 je vrednost 100
decfsz T1,f ; decfsz odšteje od T1 1 rezultat shrane v T1
goto $-1 ;ko je vrednost v T1 0 te vrstice ne upošteva sicer skoči
....... ; vrstico nazaj
|
Instrukcja lahko traje 1 ali 2 ciklusa. Odvisno od instrukcije. Poglej datashet za mikrokontroler. Pri oscilatorju 4Mhz je en cycles 1 s _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Okt 19, 2004 10:26 pm Naslov sporočila: |
|
|
Naj dodam še tole. Vsem, ki bi se radi naučili programiranja PIC-a v assemblerju priporočam, da si snamejo datashet za željen mikrokotroler ter samo navodilo za MPASM. Najdete ga na microchipovi domači strani, na Filemanager pripel pa sem ga tudi v tem postu. navodilo je sicer v angleščini a je vsaj za moje pojme najboljša literatura. Poleg tega pa je zastonj. Na trgu se sicer najde kup knjig, ki pa so po mojem mnenju bolj ali manj posrečen prevod tega. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
djtech Član


Pridružen-a: Sob 18 Okt 2003 21:47 Prispevkov: 113 Aktiv.: 0.48 Kraj: Cerkvenjak
|
Objavljeno: Tor Okt 19, 2004 10:45 pm Naslov sporočila: |
|
|
Koliko pa moram dati v register T1 da bo čas enak 1sekunda ?
A je tako pravilno
PAVZA
movlw . 1000000
movwf T1
decfsz T1,f
goto $-1
return |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Okt 20, 2004 6:07 am Naslov sporočila: |
|
|
Ne, operiraš lahko le z 8 bitnimi številkami. Maksimalna vrednost je torej lahko 255 desetiško. Kot sem napisal zgoraj dolžina enega ukaznega ciklusa je odvisna od frekvence oscilatorja, ter od uporabljenih instrukcij. Program moraš zazankat tolikokrat, da pač dobiš eno sekuundo. Priporočam, da najprej preštudiraš zgoraj omenjeno literaturo. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
djtech Član


Pridružen-a: Sob 18 Okt 2003 21:47 Prispevkov: 113 Aktiv.: 0.48 Kraj: Cerkvenjak
|
Objavljeno: Sre Okt 20, 2004 9:39 am Naslov sporočila: |
|
|
OK bom  |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Čet Okt 28, 2004 8:57 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Okt 28, 2004 9:27 pm Naslov sporočila: |
|
|
Drži, pri oscilatorju 4Mhz _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
msmiha Član

Pridružen-a: Sob 26 Feb 2005 16:48 Prispevkov: 115 Aktiv.: 0.49 Kraj: Slovenske Konjice
|
Objavljeno: Ned Jul 30, 2006 12:31 pm Naslov sporočila: |
|
|
Mi lahko kdo razloži, kako je mogče, da je ta pavza dolga 1mS pri osilaciji PICa z frekvenco 4MHz, se pravi da en ukaz traja 1 S.
Koda: |
P1mS
movlw .2 ;1uS
movwf T1 ;1uS
movlw .74 ;1uS
movwf T2 ;1uS
Z2 ;4uS - trajanje procedure (P1mS)
decfsz T2,f ;1(2)uS
goto Z2 ;2uS 74*3=222
decfsz T1,f ;1(2)uS
goto Z2 ;2uS 2*5=10
return ;2uS
|
trajanje procedure Z2 = (74*3)+(2*5)=232
skupna pavza je vhod v pavzo+P1mS+Z2=2uS+4uS+232uS+2uS=242uS
Po mojih izračunih nikakor ne morem dobit 1mS, kje delam napako? _________________ Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem! |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Ned Jul 30, 2006 12:38 pm Naslov sporočila: |
|
|
Tvoje racunanje je napacno - tam na sredi ni 3 * 74, ker vrednosti T2 po zmanjsanju T1 in skoku nazaj gor do Z2 ne nastavis ponovno, zato se odsteva od 0 "navzdol" (rollover). Dekrement so zgodi v vsakem primeru in vrednost spet ni vec 0, zato se znaka nadaljuje.
BTW: obupno slaba izbira label v programu  |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Ned Jul 30, 2006 12:51 pm Naslov sporočila: |
|
|
Se manj napacen izracun:
do Z2 so 4 cikli
od Z2 je (3*73 + 2) + 3 + (3*255 + 2) + 2 + 2 = 995 ciklov
(v oklepaju je trajanje prvih dveh vrstic za Z2)
Hm, skupaj bi to bilo 999 ciklov namesto 998 ... zanimivo  |
|
Nazaj na vrh |
|
 |
msmiha Član

Pridružen-a: Sob 26 Feb 2005 16:48 Prispevkov: 115 Aktiv.: 0.49 Kraj: Slovenske Konjice
|
Objavljeno: Ned Jul 30, 2006 10:50 pm Naslov sporočila: |
|
|
Hvala za razlago sokrat. _________________ Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem! |
|
Nazaj na vrh |
|
 |
msmiha Član

Pridružen-a: Sob 26 Feb 2005 16:48 Prispevkov: 115 Aktiv.: 0.49 Kraj: Slovenske Konjice
|
Objavljeno: Tor Avg 01, 2006 7:59 pm Naslov sporočila: |
|
|
Sokrat mi lahko poveš še če sem pravilno izračunal 100mS pavzo?
Koda: |
P100mS
movlw .130 ;1uS
movwf T1 ;1uS
movlw .221 ;1uS
movwf T2 ;1uS
Z100mS ;4uS
decfsz T2,f
goto Z100mS
decfsz T1,f
goto Z100mS
return
;Z100mS = (3*220 + 2) + 3 + (3*129*255 + 2) + 2 + 2 = 99356
|
_________________ Edini način da odkrijemo meje mogočega je da, jih prestopimo in se znajdemo v nemogočem! |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|