pic timer0

Z

zahidkhan

Guest
Hei kaikki
mikä on menettely pic timer0 luoda 1 ms tai 1 sek keskeyttää.
osalta ...

 
Hei,

Sen erittäin helppo ...
Ensimmäinen ja tärkein importnat on, että te tiedätte, että keskeyttää annetun ajastimet tapahtuu vain silloin, kun he saavuttavat loppuun, eli 0xFFFF 1.
Joten antaa sanoo tämän käytät ulkoista OSC on 4MHz, ja kertaa dosnt on prescalar tai postscale asetettu.ja käytät OSC kuten ajastin.
Niin saat interup, sinun on ensin tiedettävä, miten nopeasti aika on incramet.tämä tapahtuu diving, että OSC on 4 (thats vähimmäistuontihintoja on PIC) ja sitten cahnge on aika domain:
f = OSC / 4 =
4000000 / 4 =
1000000 tai 1MHz
Siihen hetkeen, kun domain:
t = 1 / f = 1 / 1,
000000 = 0.000001 Sec = 1uSec
Joten ajastin on incrament joka 1uSec.Pääset 1mSec sinun tulee tehdä:
1mSec/1uSec = 1000 kello jaksoissa.
Nyt meidän täytyy ladata ajastin tämän asetukset, kuten aiemmin sanoin ajastin on interupr vain se tavoittaa lopussa, joten meidän on otettava loppuun ja vähennetään kellon jaksolla että välitän, eli:
TMR0 = 0xFFFF - (aika haluamme) = 0xFFFF - 0x03E8 (1000 vuonna Hex) = 0xFC17
Tämä on erittäin helppo tehdä PC laskin, että voit vaihtaa
Joulu on Hex.yhdellä painikkeella.
Niin vastaus on, 0xFC17.Kantavuus tämä arvo aina teidän ajastin ja sitten saat keskeyttää joka 1mSec.
Nyt voit pelata ympäri ja selvittää, mikä on max kerran voit saada.Ja i käytät valmiiksi scalare että alkuperäinen kello wile on divid entisestään.Katso piirustuksen tiedot arkin siitä lisätietoja.
.
( NO
points will be taken from you! And you will get 3 Points)Jos löysit vastaukseni hyödyllistä, klikkaa painiketta, jossa lukee
auttaneet minua.

(NO
pistettä otetaan teiltä! Ja saat 3 pistettä)Onnea.

 
MUTTA TMR0 mahtuu enintään 256 eli se on 8-bittinen ajastin.Isnt it?. Miten voimme kuorma sen 0xFC17.
kiitos

 
Olet oikeassa: TIMER0 on 8-bittinen ajastin ..

Tutustu tähän:
Quote:

Yksinkertainen ja nopea järjestelmä saada luotettavaa ajastin alkaen

yksi PIC valvojalle.

Tämä järjestelmä (PIC kokoonpanijalle lähde on) on yksinkertainen,

nopea tapa tuottaa säännöllisesti jaksojen kanssa PIC milloin tahansa kellon nopeus.

Great yhden sekunnin tapahtumien yksinkertainen kellot.
Voit käyttää mitä tahansa

kristall olet, 4,0 MHz, 12.137253 MHz, (kristallisia) ja kaikki

prescaler arvo, ja silti saada täydellinen yhden sekunnin ajoitus.

Se tuottaa luotettavaa alkaen millisekunteina useita sekunteja,

hyvin nopeasti koodin suorituksen.
 
Tässä on yhtälö laskea:

Period = (256 - TMR0) * (4/fosc) * (Prescaler)

Esimerkiksi, jos Period = 1 ms ja fosc = 4 MHz ja käyttämällä Prescaler 1:4

1ms = (256 - TMR0) (1us) (1)
TMR0 = 6 = 0x06

Tämä on thevalue sinun on kuorma ajastin 0 rekisteriin.Muista kytkeä ajastin ja selkeä ajastin keskeyttää lippu joka kerta sen jälkeen, kun ajastin keskeyttää tapahtuu.Varovaisia maailmanlaajuisen keskeyttää myös siksi, että kaikkia epäselviä keskeyttää lippu johtaisi toiseen keskeyttää.1 sekunnin ajan, valitse asianmukainen prescaler arvo, joka on sopiva.Muista * ajastin 0 on vain 8-bittinen.Jotta saataisiin tarkempi ajoitus, käytä 16-bittinen ajastin.

Kaikkea hyvää.

 
Hei,

zahidkhan wrote:

MUTTA TMR0 mahtuu enintään 256 eli se on 8-bittinen ajastin.
Isnt it?. Miten voimme kuorma sen 0xFC17.

kiitos
 
Thank U kaikki.Nyt en saa minun käsitteitä selväksi.mutta jonkin verran ongelmia koodi tuottaa kello. I am using Proton . Tässä koodi.

Laitteen 16F84A

XTAL = 4,0

Julistaa Lcd_DTPin PortB.4
Julistaa Lcd_ENPin Portb.3
Julistaa Lcd_RSPin Portb.2Symbol T0IF = INTCON.2 "TMR0 Overflow Interrupt Flag
Symbol T0IE = INTCON.5 "TMR0 Overflow Interrupt Enable
Symbol GIE = INTCON.7 "Global Interrupt Enable
Symbol PS0 = OPTION_REG.0 "Prescaler Hinta Valitse
Symbol PS1 = OPTION_REG.1 "Prescaler Hinta Valitse
Symbol PS2 = OPTION_REG.2 "Prescaler Hinta Valitse
Symbol PSA = OPTION_REG.3 "Prescaler Tehtävä
Symbol T0CS = OPTION_REG.5
DIM MS Word

DIM toinen BYTE
DIM minuutti BYTE
DIM HOUR AS BYTE

PS0 = 1
PS1 = 0
PS2 = 0
PSA = 0

T0CS = 0 "Kellonajan lähde sisäinen oskillaattori
T0IF = 0 "tyhjentää keskeyttää lippu
T0IE = 1 "mahdollistaa tmr0 keskeyttää
GIE = 1 "mahdollistaa Global katkaisevat

TMR0 = 6

Käytössä Interrupt goto InterruptServiceRoutine

Goto Main "aloittaa ohjelma, hyppää suoraan päävalikkoonPoista "poistaa katkaisevat
InterruptServiceRoutine:

T0IF = 0 "tyhjentää keskeyttää lippuTMR0 = 6

INC MS
JOS MS> = 999 THEN
MS = 0
INC TOISEEN
JOS TOISEEN> = 59 THEN
TOINEN = 0
INC PÖYTÄKIRJAMERKINTÄ
JOS PÖYTÄKIRJAMERKINTÄ> = 59 THEN
PÖYTÄKIRJAMERKINTÄ = 0
INC HOUR
Endif
Endif
Endif
Jatka "palata kun ensisijainen koodi oli käynnissä
"ennen keskeyttää
Ota sinä enanble interupts

Vastaava:

Tulosta on 1,1, DEC HOUR, "", DEC PÖYTÄKIRJAMERKINTÄ, "", DEC toisen, "", DEC MS
Goto Main

 

Welcome to EDABoard.com

Sponsor

Back
Top