delsos laiku !!!!!!!

E

ekspertas

Guest
naudojant 4MHZ kristalas

movlw d'13 '
movwf CounterB
movlw d'251 '
movwf CounterA
kilpa decfsz CounterA, 1
goto loop
decfsz CounterB 1
goto loop
atgal

atsakymas turėtų būti 10ms delay.but Ar kas nors gali paaiškinti man kaip yra delsos laikas buvo apskaičiuoti?

thxsss

 
Pirma, nustatoma kartą per mašinos ilgio ciklas.Tai vidaus instrukcija laikrodis.PIC, mašininį ciklą, yra lygus jūsų generatoriaus greitis padalinta iš 4.Taigi, jei turite 4MHz osciliatorius, savo vidaus IPS greitis 4MHz / 4 = 1MHz.Tai dažnumas.Laikotarpį arba ilgesnį laiką, kiekvieno mašininį ciklą, tada yra 1/1MHz = 1 mikrosekundę.

Kiekvienas ASM instrukcija 1 mašininį ciklą.GOTO, praleisti ir grįžti yra 2 mašinos ciklų kiekviena.For illustration, taip:

Kodas

movlw d'251 '; / / 1 ciklas

movwf CounterA / / 1 ciklas

kilpa decfsz CounterA, 1 / / 1 ciklo metu (2 ciklų, jei Pereiti 0)

goto loop; / / 2 ciklų
 
thxs už explaination!

jei i WAN naudoti p16F877 PWM generuoti 38KHZ nešlio dažnis, turėčiau laiko delsos laiko kiekvieno ciklo generavimo 38KHZ dažnis?

 
Naudojant vėlavimas nėra geras būdas plėtoti nuolatinį dažnio, nes vėluojama užimti visi perdirbėjo laikas, kai reikia daryti kitus dalykus.Paprasčiausias būdas sukurti 38KHz yra naudoti PWM modulis PIC ir nustatykite 50% duty cycle.

Čia yra mažai programa parašiau rašyti PWM vertės Kardžuvės Basic kompiliatoriaus už PIC18:

http://circuit-ed.com/uplds/pwm_writer.exe

Jūs pamatysite, kad iš šios programos 4MHz Oscillator (fosc), Timer2 Prescaler = 1, ir pr2 = 25 jums gali pasiekti 38.462 Hz dažnio .....labai arti tiksliai 38KHz.

Pilnas kodas modulis, kuris leidžia įvykti yra čia:

http://www.sfcompiler.co.uk/wiki/pmwiki.php?n=SwordfishUser.PWM2Naudoti PIC's PWM module grožis yra tai, kad dažnis yra pastovus, ne pertraukia arba vėlavimas yra būtinas, ir jis neturi įtakos gebėjimui atlikti kitas funkcijas kodas.

 
thxs dėl šaltinis
bet aš naudoju Asemblerio kalba, kad dizainas infraraudonųjų generuoti 38KHZ už transmiting, aš planuoju panaudoti PWM generuoti 38KHZ perduoti duomenis coz Mano naudojant infraraudonųjų spindulių imtuvą 38KHZ gauti duomenis.do u turite idėją?

 
Labas,
Tai visai paprasta galite naudoti Laikmatis pertraukia.Skelbimas po 6 minučių:Oooops,
Abrakadabra:
http://www.edaboard.com/viewtopic.php?t=149273

 
Pirminio kodo yra OK, kilpos investuotų, jei žiūrėti atidžiai ir trunka lygiai 10000 ciklų, įskaitant grąžinimo.Pirmą kartą per CounterA = 251, bet tada ritinius ...

Kodas

4 ciklai įkelti skaitikliai.

755 ciklų, pirmą kartą per.

9.240 ciklų per ateinančius 12 kartų (12 * 770).

-1 Ciklų paskutinį kartą praleisti paskutinis pradziu.

2 ciklų grįžti.10.000 visos
 
Szyfrowane rašė:

Pirminio kodo yra OK, kilpos investuotų, jei žiūrėti atidžiai ir trunka lygiai 10000 ciklų, įskaitant grąžinimo.
Pirmą kartą per CounterA = 251, bet tada ritinius ...Kodas

4 ciklai įkelti skaitikliai.

755 ciklų, pirmą kartą per.

9.240 ciklų per ateinančius 12 kartų (12 * 770).

-1 Ciklų paskutinį kartą praleisti paskutinis pradziu.

2 ciklų grįžti.10.000 visos
 
Szyfrowane rašė:

Pirminio kodo yra OK, kilpos investuotų, jei žiūrėti atidžiai ir trunka lygiai 10000 ciklų, įskaitant grąžinimo.
Pirmą kartą per CounterA = 251, bet tada ritinius ...Kodas

4 ciklai įkelti skaitikliai.

755 ciklų, pirmą kartą per.

9.240 ciklų per ateinančius 12 kartų (12 * 770).

-1 Ciklų paskutinį kartą praleisti paskutinis pradziu.

2 ciklų grįžti.10.000 visos
 
Ji mano, 4 ciklus, kad būtų įkeltas skaitikliai.

Pirmą kartą per savo kodą CounterA = 251, kilpa vartoti 3 ciklus, išskyrus tuos atvejus, kai CounterA = 0, jis trunka tik 2 plius 3 ciklų CounterB sumažėjo iki 12.

251 x 3 - 1 3 = 755

Dabar yra 12 išorinių linijų kairėje.CounterA = 0 ir CounterB = 12.

12 x (256 x 3 - 1 3) = 12 x 770 = 9240.

Paskutinį kartą per išorinio kontūro užtrunka tik 2 ciklai nėra 3.

9.240-1 = 9.239.

Galutinis atgal trunka 2 ciklų.

4 755 9239 2 = 10000.

 
Tai 7.5ms delsimas

Kodas

movlw d'10 '

movwf CounterB

movlw d'188 '

movwf CounterA

kilpa decfsz CounterA, 1

goto loop

decfsz CounterB 1

goto loop

retlw

 
Ji mano, 4 ciklus, kad būtų įkeltas skaitikliai.

Pirmą kartą per savo kodą CounterA = 188, kilpa vartoti 3 ciklus, išskyrus tuos atvejus, kai CounterA = 0, jis trunka tik 2 plius 3 ciklų CounterB sumažėjo iki 9.

188 x 3 - 1 3 = 566

Šiuo metu yra 9 išorinės vyriai kairėje.CounterA = 0 ir CounterB = 9.

9 x (256 x 3 - 1 3) = 9 x 770 = 6930.

Paskutinį kartą per išorinio kontūro užtrunka tik 2 ciklai nėra 3.

6.930-1 = 6.929.

Galutinis atgal trunka 2 ciklų.

4 566 6929 2 = 7501.

 
Szyfrowane rašė:

Ji mano, 4 ciklus, kad būtų įkeltas skaitikliai.Pirmą kartą per savo kodą CounterA = 188, kilpa vartoti 3 ciklus, išskyrus tuos atvejus, kai CounterA = 0, jis trunka tik 2 plius 3 ciklų CounterB sumažėjo iki 9.188 x 3 - 1 3 = 566Šiuo metu yra 9 išorinės vyriai kairėje.
CounterA = 0 ir CounterB = 9.9 x (256 x 3 - 1 3) = 9 x 770 = 6930.Paskutinį kartą per išorinio kontūro užtrunka tik 2 ciklai nėra 3.6.930-1 = 6.929.Galutinis atgal trunka 2 ciklų.4 566 6929 2 = 7501.
 

Welcome to EDABoard.com

Sponsor

Back
Top