1 / 18

Časová slučka

Časová slučka. Na čo slúži časová slučka?.

portia
Download Presentation

Časová slučka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Časováslučka

  2. Na čo slúži časová slučka? Časová slučka slúži na vytvorenie takého miesta v programe, pri ktorom sa používateľovi javí, že mikropočítač nerobí nič. Program však v mikropočítači beží stále a preto nemôžme jednoducho zastaviť jeho beh, ale v určitom mieste program „zacyklíme“ na požadovaný čas.

  3. Vieme si presne zvoliť čas, počas ktorého sa bude vykonávať časová slučka? • Áno vieme. • Zo špecifikačného materiálu k procesoru od výrobcu je zrejmé, že jeden strojový cyklus (SC) trvá 12 hodinových cyklov. • Na skúšobnej doske máme pripojený k mikropočítaču 12MHz kryštál.

  4. Vieme si presne zvoliť čas, počas ktorého sa bude vykonávať časová slučka? • Jeden hodinový cyklus trvá 1 / 12 000 000 sekundy teda 1 SC (ktorý trvá 12 hodinových cyklov) trvá 12 * 1 / 12 000 000 = 1 / 1 000 000 = 1 s. • Väčšina inštrukcií trvá 1 SC teda 1s, niektoré trvajú 2 SC teda 2s a niektoré dokonca 4 SC = 4s. Z použitých inštrukcií teda môžeme ľahko vypočítať operáciami plus a krát dĺžku trvania časovej slučky.

  5. Krátka prestávka • Vypočítajte, ako dlho bude trvať program, zložený z 50 inštrukcií v dĺžke trvania 1 SC, 40 inštrukcií v dĺžke trvania 2 SC a 10 inštrukcií v dĺžke trvania 4 SC. Výsledok vyjadrite v milisekundách. Riešenie: (50 x 1s) + (40 x 2s) + (10 x 4s) = 50s+80s+40s = 170s = 0,17ms

  6. Ako asi vyzerá naprogramovaná časová slučka? • Program časovej slučky sa veľmi podobá cyklu v JSI – jazyku symbolických inštrukcií (hovoríme mu tiež ASSEMBLER, aj keď tento výraz nie je veľmi správny nakoľko tento názov patrí prekladaču). • Štruktúru cyklu si popíšeme na ďalšom slajde.

  7. Štruktúra cyklu v JSI • Nastavíme si počítadlo na takú hodnotu, koľko krát chceme, aby sa cyklus opakoval. Ako počítadlo využijeme jeden z registrov R0 – R7. • Určíme si návestie (ľubovoľné slovo), ktoré bude symbolizovať začiatok tela cyklu. • Samotné telo cyklu budú tvoriť inštrukcie, ktoré chceme opakovane vykonávať. • Na konci tela cyklu upravíme počítadlo (znížením jeho hodnoty o jednotku) a skočíme na začiatok tela cyklu ak sme ešte nespravili potrebný počet opakovaní ( po požadovanom počte opakovaní bude logicky v počítadle hodnota 0)

  8. Praktická ukážka cyklu v JSI • MOV R0,#255 (1s) • telo_cyklu: (0s) • RR A (1s)RR A (1s) NOP (1s) • DJNZ R0, telo_cyklu (2s) Jednotlivé poradové čísla krokov zodpovedajú jednotlivým častiam štruktúry z predchádzajúceho slajdu.

  9. Ako dlho bude takýto cyklus trvať? • Celý cyklus bude trvať 1 + (1+1+1+2)*255 = 1276s = 1,276 ms . • Problém je ale v tom, že celý cyklus trvá len tak krátko a my väčšinou potrebujeme aby trval aspoň takú dobu, aby sme boli schopní zachytiť zmenu na nejakom výstupe. • Ďalší problém je v tom že do registrov R0 – R7 môžeme vložiť max. hodnotu 255

  10. Ako to vyriešiť? • Múdri programátori a programátorky si preto lámali hlavy nad riešením tohto problému až si jeden z nich buchol po hlave a zvolal: „Mám to. Šak my možeme dac tote cykly do sebe a tak to budze najľepšejši.“ • A ako povedali tak aj spravili. Dali pár cyklov do seba a na svete bola časová slučka, ktorá nerobila nič, len sa sama cyklila niekoľko milisekúnd, sekúnd ba aj minút.

  11. Ako postupovali? • Naši programátori a programátorky postupovali asi takto: 1. napísali jeden najsamjednoduchší cyklus nasledovne a mali zdržanie 255*2s = 510s  0,5 ms

  12. Čo potom? 2. zobrali druhy cyklus a „obalili“ nim prvý cyklus, takže vlastne prvý cyklus bol telom toho druhého mali zdržanie 0,5ms (z prvého cyklu) * 255 = 127,5 ms a k tomu ešte prirátali 0,5 ms ktoré vznikli pri DJNZ R1,c2 z druhého cyklu čiže dokopy 128 ms = 0,128 s.

  13. Čo na to programátori? I povedali si, že by sa zišlo ešte aspoň toľko pozdržať beh programu aby z toho bola jedna sekunda. Zobrali ukrajinskú kalkulačku a opýtali sa jej: „Kalkulačka, kalkulačka povedz že nám koľko krát musíme vynásobiť 0,128 aby sme aspoň 1 dostali?“ A kalkulačka na nich vychrlila číslo 8. Tak zobrali to čo už spravili a rozhodli sa to ešte celé spraviť 8x a vyšlo im to, čo uvidíte na ďalšom slajde.

  14. To najlepšie nakoniec ...

  15. Odstránenie štvorcov • I pozrel sa jeden z nich na tie štvorce a povedal: „Hej chlapi šak odstráňme tote štvorce lebo dobré je to na pochopenie, ale vyzerá to veru veľmo škarede.“ A tak naši programátori odstránili tie divné štvorce a napísali všetky inštrukcie pod seba pekne a prehľadne. A takto vyzeral ich výsledný produkt: MOV R2,#8 c3: MOV R1,#255 c2: MOV R0,#255 c1: DJNZ R0,c1 DJNZ R1,c2 DJNZ R2,c3

  16. O Janovi a podprograme Povedali si, že to už vyzerá dobre, ale zrazu jeden vstal i riekol: „Kua chuapi ale šak to nemóžeme takto furt písať dookola totú slučku časovú. Šak to by sme sa enem dačo napísali aj by sme pamäte veľa použili. Tóž navrhujem aby sme z tého podprogram nejak spravili a potom na to zavolali, že: „Hej ty podprogram časovej slučky, poďže nám pomócť a postoj troška v programe!“, a on príde a postojí. Hlasujme chuapi ale všetci ZA lebo vám jednu pribijem ako že sa Jano volám.“ Takže chlapi hlasovali za, lebo Jano bol väzba a všetci sa ho báli. Už vtedy niektorí z nich mysleli do budúcnosti a tak nazvali inštrukciu volania podprogramu CALL a inštrukciu návratu z podprogramu nazvali RET.

  17. Čo bolo na podpivníku ... V tom Jano vstal a ukázal všetkým podpivník, aby sa len pozreli ako to bude vyzerať a tam bolo napísané toto: MOV P1,#01010101b ; tož akože LEDky na porte striedavo svietia CALL slucka ; tož akože slučku volám MOV P1,#00110011b ; tož akože LEDky na porte po dve svietia a dve nesvietia CALL slucka ; tož akože zasa slučku volám MOV P1,#00001111b ; tož akože polovica LEDiek svieti a druhá nie slucka: MOV R2,#8 c3: MOV R1,#255 c2: MOV R0,#255 c1: DJNZ R0,c1 DJNZ R1,c2 DJNZ R2,c3 RET

  18. Koniec A chlapi tlieskali a prišiel kráľ a ponúkal mu pol kráľovstva i svoju dcéru za ženu za to čo vymyslel, ale i preto lebo sa ho bál, lebo Jano, ako sme už písali, bol väzba.

More Related