Time Delay tarp pertraukia

L

lit

Guest
Hello friends,
Aš mėginu padaryti labai paprasta programa, kurioje Aš šerti du signalai (iš esmės dažnis, kvadratinės bangų) AT89C51 uc įvertinti laiko skirtumą tarp jų (po vieną INT0 ir kiti dėl INT1), bet man nepavyko gauti teisingą vertę.I've tried visko, negali suprasti, kas klaidinga I'm making.I'm siuntimas mano programa (daroma Keil C51) kartu su.kas nors man padėti išsiaiškinti, mano klaida.

Ačiū draugams.

Kodas

INT laikmatis;

tuščia Int0 (void) Interrupt 0
(
TH0 = 0x00;
TL0 = 0x00;
TR0 = 1;
EX0 = 0;
EX1 = 1;

)

tuščia Int1 (tuščia) Interrupt 2
(

TR0 = 0;
EX1 = 0;

laikmatis = TH0 * 256 TL0;

TH0 = 0x00;
TL0 = 0x00;

)

void main () (P3 = 0x0C;

lcd_init ();EA = 1;
TMOD = (TMOD & 0xF0) | 0x01; / * Set T/C0 režimas * /
ET0 = 1; / * Enable Laikmatis 0 Pertraukimai * /
TR0 = 0;

IT0 = 1;
EX0 = 1;
IT1 = 1;
EX1 = 0;TH0 = 0x00;
TL0 = 0x00;

while (1)
(/ / laikmačio vertę LCD)

 
Ar galima u globalinis pertraukia bit?Taip pat pasirūpinti, kad didžiausias prioritetas nutraukti skiriamas tinkamiausias signalo abu.

 
Labas,

Manau ir tai padarė.Bet tik patikrinti, ar turite konvertuoti Decimālvērtībai į atitinkamas šešioliktainis reikšmė.

 
Išmatuoti laiko tarpo tarp EXT pertraukia turite nustatyti bitai IE1 (TCON.3) ir IE0 (TCON.1) ..
Šie bitai pasirinkti tarp lygio ir EDGE aptikimo ..Jūs turite EDGE aptikti, todėl juos nustatyti "1" ..

Linkėjimai,
IanP

 
Citata:

turite nustatyti bitai IE1 (TCON.3) ir IE0 (TCON.1) ..

Šie bitai pasirinkti tarp lygio ir EDGE aptikimo ..
 
Žinoma, jis turėtų būti IT0 ir IT1 ..Jie pasirinkite klasifikuojamų EDGE / žemo lygio ..

Linkėjimai,
IanP

 
litų rašė:LC laikmatis;

bit endtimer;
tuščia Int0 (void) Interrupt 0

(

TH0 = 0x00;

TL0 = 0x00;

TR0 = 1;

EX0 = 0;

EX1 = 1;

)tuščia Int1 (tuščia) Interrupt 2

(

TR0 = 0;

EX1 = 0;laikmatis = TH0 * 256 TL0;endtimer: = 1; matavimo apdailaTH0 = 0x00;

TL0 = 0x00;)void main () (P3 = 0x0C;lcd_init ();EA = 1;

TMOD = (TMOD & 0xF0) | 0x01; / * Set T/C0 režimas * /ET0 = 0; išjungimo laikmatis pertrauktiTR0 = 0;IT0 = 1;

IT1 = 1;

EX1 = 0;TH0 = 0x00;

TL0 = 0x00;endtimer = 0; vėliava matavimas apdailao (1)

(EX0 = 1; kad išorės intterupt 0
while (! endtimer) laukia laikmatis measuerent/ / laikmačio vertę LCDpabaigos laikmatis = 0; Kito matavimas
)
 

Welcome to EDABoard.com

Sponsor

Back
Top