, hvor adgang til hurtige chip fra beskyttede tilstand., bidragyder: greg vigneault, {, md > hvad vil nogen her anbefaler som den bedste måde til dos, > beskyttede tilstand for at få de nuværende tidspunkt * uden * kanon, > og tilbage til virkelige tilstand, at en standard, dos?, , hvis din kode har lov til at tale til tidstro ur (rtc) chip, her ' nogle eksempel kode adgang til rtc direkte.de funktioner, arbejde udelukkende med 24 timer - klokkeslætsformat (hvis nødvendigt, internt af de rtc,, de oversætte mellem 12 /24 timer gange og binære /bcd formater)...), (*******************************************************************), program rclock; {kom /fastsat tid /dato direkte fra rtc chip}, (9. juni i 1994.greg vigneault}, type treg = 0. $d (interval for tiden /dato registrere adresse}, to23 = 0..23) (interval for timer), to59 = 0..59; (interval for minutter og sekunder), var år, mth, dag, dow, hr, min.: byte;, funktion rtcbusy: boolean, begynder (rtc tid /dato er opdateret?...}, havn [70]: = $; rtcbusy: = (havn [71 $) og 128) = 128, ende (rtcbusy}, funktion readreg (fo.: treg): byte; begynde {læste en rtc register.}, , hvis fo på [0 - 9] så gentage {-) indtil rtcbusy;, havn [70]: = fo; readreg: = havn [71 $], ende (readreg}, procedure writereg (fo: treg; data: byte); (skrive rtc reg...}, var vikar: byte; begynder, , hvis fo på [0 - 9] så begynde {tid /dato, reg?}, gentager {-) indtil rtcbusy;, havn [70]: = $b) temperatur: = havn [71 $]; havn [71 $]: = temperatur eller $80, ende (hvis}, havn [70]: = reg.; havn [71 $]: = data, , hvis fo på [0 - 9] så begynde, havn [70]: = $b; havn [71 $]: = temperatur og ikke 80 dollars. ende (hvis}, ende (writereg}, funktion bcd2bin (bcd: byte): byte; begynde {xlate bcd til binære...}, bcd2bin: = (bcd og $-) + (bcd shr 4) * 10), ende (bcd2bin}, funktion bin2bcd (bin: byte): byte; begynde {xlate binære til bcd.}, bin2bcd: = (bin mod 10) eller byte (bin div. 10) sømhaj shb 4), ende (bin2bcd};,,, procedure gettime (var - hr, min, sec: byte), var vikar: byte; begynder, sek: = readreg (0); og min: = readreg (2), hr: = readreg (4); temperatur: = den højtstående repræsentant; hr: = den højtstående repræsentant og ikke 80 dollars. hvis (readreg ($b) og 4) < > 4 så begynde {xlate bcd bin...}, sek: = bcd2bin (sec); min: = bcd2bin (min); hr. = bcd2bin (hr), ende (hvis}, hvis (readreg ($b) og 2) < > 2 - (rtc i 12 timer mode?...}, hvis (temperatur og 128) = 128 (p.m.?}, så begynde, hvis (t < 12), inc. (hr. 12), andet hvis hr = 12, så den højtstående repræsentant: = 0, ende (gettime}, procedure settime (hr. to23; min, sec: to59), var vikar: byte. begynder, temperatur: = byte (hr), hvis (readreg ($b) og 2) < > 2 - (rtc i 12 timer mode?...}, hvis (t > 12) dec (hr, 12) andre hvis hr = 0, så den højtstående repræsentant: = 12, hvis (readreg ($b) og 4) < > 4 så begynde {rtc vil bcd - format.}, hr: = bin2bcd (hr); min: = bin2bcd (min); jf.: = bin2bcd (sek), ende (hvis}, hvis ((readreg ($b) og 2) < > 2) og (vikar > 11. og så hr: = den højtstående repræsentant eller 80 dollars. writereg (0 sek.); writereg (2 min.); writereg (4 timer), ende (settime}, procedure getdate (var - år, mth dag: byte); der begyndes, dag: = readreg (7); mth: = readreg (8); år: = readreg (9), hvis (readreg ($b) og 4) < > 4 så begynde {xlate bcd til binay...}, dag: = bcd2bin (dag); mth: = bcd2bin (mth); år: = bcd2bin (yr), ; (hvis}, ende (getdate}, procedure setdate (år, mth dag: byte); begynder, hvis (readreg ($b) og 4) < > 4 så begynde {rtc vil bcd - format.}, dag: = bin2bcd (dag); mth: = bin2bcd (mth); år: = bin2bcd (yr), ende (hvis}, writereg (7); writereg (8, mth); writereg (9 år), ende (setdate}, begynder (rclock}, gettime (hr, min, sek.); getdate (år, mth, dag); writeln;, skrive (' dato og', mth, og' /', dag, og' /', år, og'.');, WriteLn ('Time is ',Hr,':',Min:2,':',Sec:2,'.');, Write ('(BTW, your RTC is in ');, IF (ReadReg($B) AND 2) <> 2 THEN Write ('12') ELSE Write ('24');, Write ('-hour mode using ');, IF (ReadReg($B) AND 4) <> 4 THEN Write('BCD') ELSE Write('binary');, WriteLn (' format.)');, END {RClock}.,
real - time chip i pmode
Previous:kryptografi
Next Page:vinduerne er lukkede