<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7363611264359953492</id><updated>2011-09-23T04:04:45.174-07:00</updated><category term='5. Interupsi'/><category term='3. Pengelamatan'/><category term='8. Bahasa Assembly'/><category term='7. Port Serial'/><category term='10. Menyalakan LED di P2'/><category term='2. Organisasi memori'/><category term='11. Menyalakan LED di P2 Geser ke Kiri'/><category term='1. Kata Pengantar'/><category term='6. Timer Counter'/><category term='4. Set Intruksi'/><category term='9. Perangkat Lunak'/><title type='text'>BELAJAR - MIKROKONTROLER</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-3829412875920006844</id><published>2010-08-09T20:53:00.001-07:00</published><updated>2010-08-09T20:53:16.608-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='11. Menyalakan LED di P2 Geser ke Kiri'/><title type='text'>Menyalakan LED di P2 Geser ke Kiri</title><content type='html'>$mod51&lt;br /&gt; org 0h&lt;br /&gt; mov A,#01111111b &lt;br /&gt;mulai: mov P2,A&lt;br /&gt; call delay&lt;br /&gt; RR A&lt;br /&gt; sjmp mulai&lt;br /&gt;delay: mov r0,#5&lt;br /&gt;del1: mov r1,#200&lt;br /&gt;del2: mov r2,#100&lt;br /&gt; djnz r2,$&lt;br /&gt; djnz r1,del2&lt;br /&gt; djnz r0,del1&lt;br /&gt; ret&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-3829412875920006844?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/3829412875920006844/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/08/menyalakan-led-di-p2-geser-ke-kiri.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3829412875920006844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3829412875920006844'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/08/menyalakan-led-di-p2-geser-ke-kiri.html' title='Menyalakan LED di P2 Geser ke Kiri'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-5638915943420561891</id><published>2010-08-09T20:49:00.000-07:00</published><updated>2010-08-09T20:51:09.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='10. Menyalakan LED di P2'/><title type='text'>Menyalakan LED di P2</title><content type='html'>$mod51&lt;br /&gt;org 0h&lt;br /&gt;start:  mov P2,#11111110b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#11111101b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#11111011b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#11110111b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#11101111b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#11011111b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#10111111b&lt;br /&gt;call delay&lt;br /&gt;mov P2,#01111111b&lt;br /&gt;call delay&lt;br /&gt;sjmp start&lt;br /&gt;&lt;br /&gt;delay: mov r0,#5&lt;br /&gt;del1: mov r1,#200&lt;br /&gt;del2: mov r2,#100&lt;br /&gt;djnz r2,$&lt;br /&gt;djnz r1,del2&lt;br /&gt;djnz r0,del1&lt;br /&gt;ret&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-5638915943420561891?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/5638915943420561891/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/08/menyalakan-led-di-p2.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/5638915943420561891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/5638915943420561891'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/08/menyalakan-led-di-p2.html' title='Menyalakan LED di P2'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-4790037247442776673</id><published>2010-06-11T11:05:00.000-07:00</published><updated>2010-06-11T11:05:19.622-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='4. Set Intruksi'/><title type='text'>Set Instruksi</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.3. Set Instruksi&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Program pengendali mikrokontroler disusun  dari kumpulan            instruksi, instruksi tersebut setara dengan kalimat perintah  bahasa            manusia yang hanya terdiri atas predikat dan objek. Dengan  demikian            tahap pertama pembuatan program pengendali mikrokontroler  dimulai dengan            pengenalan dan pemahaman predikat (kata kerja) dan objek apa  saja yang            dimiliki mikrokontroler. &lt;/div&gt;&lt;div align="justify"&gt;Objek dalam pemrograman mikrokontroler adalah  data            yang tersimpan di dalam memori, register dan input/output.  Sedangkan            ‘kata kerja’ yang dikenal pun secara umum dikelompokkan            menjadi perintah untuk perpindahan data, arithmetik, operasi  logika,            pengaturan alur program dan beberapa hal khusus. Kombinasi  dari ‘kata            kerja’ dan objek itulah yang membentuk perintah pengatur kerja             mikrokontroler.&lt;br /&gt;Intruksi MOV A,$7F merupakan contoh sebuah intruksi dasar yang  sangat            spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan            peng-copy-an data, merupakan predikat dalam kalimat perintah  ini. Sedangkan            objeknya adalah data yang di-copy-kan, dalam hal ini adalah  data yang            ada di dalam memori nomor $7F di-copy-kan ke Akumulator A.&lt;br /&gt;Penyebutan data dalam MCS51&lt;br /&gt;Data bisa berada diberbagai tempat yang berlainan, dengan  demikian dikenal            beberapa cara untuk menyebut data (dalam bahasa Inggris sering  disebut            sebagai ‘Addressing Mode’), antara lain sebagai berikut.&lt;br /&gt;1. Penyebutan data konstan (immediate addressing mode): MOV  A,#$20.            Data konstan merupakan data yang berada di dalam instruksi.  Contoh instruksi            ini mempunyai makna data konstan $20 (sebagai data konstan  ditandai            dengan ‘#’) di-copy-kan ke Akumulator A. Yang perlu  benar-benar            diperhatikan dalam perintah ini adalah bilangan $20 merupakan  bagian            dari instruksi.&lt;br /&gt;2. Pnyebutan data secara langsung (direct addressing mode),  cara ini            dipakai untuk menunjuk data yang berada di dalam memori dengan  cara            menyebut nomor memori tempat data tersebut berada : MOV A,$30.  Contoh            instruksi ini mempunyai makna data yang berada di dalam memori  nomor            $30 di-copy-kan ke Akumulator. Sekilas intruksi ini sama  dengan instruksi            data konstan di atas, perbedaannya instruksi di atas memakai  tanda ‘#’            yang menandai $20 adalah data konstan, sedangkan dalam  instruksi ini            karena tidak ada tanda ‘#’ maka $30 adalah nomor dari memori.&lt;br /&gt;3. Penyebutan data secara tidak langsung (indirect addressing  mode),            cara ini dipakai untuk menunjuk data yang berada di dalam  memori, kalau            memori penyimpan data ini letaknya berubah-rubah sehingga  nomor memori            tidak disebut secara langsung tapi di-‘titip’-kan ke register            lain : MOV A,@R0.&lt;br /&gt;4. Dalam instruksi ini register serba guna R0 dipakai untuk  mencatat            nomor memori, sehingga instruksi ini mempunyai makna memori  yang nomornya            tercatat dalam R0 isinya di-copy-kan ke Akumulator A. &lt;br /&gt;5. Tanda ‘@’ dipakai untuk menandai nomor memori disimpan            di dalam R0. &lt;br /&gt;6. Bandingkan dengan instruksi penyebutan nomor memori secara  langsung            di atas, dalam instruksi ini nomor memori terlebih dulu  disimpan di            R0 dan R0 berperan menunjuk memori mana yang dipakai, sehingga  kalau            nilai R0 berubah memori yang ditunjuk juga akan berubah pula. &lt;br /&gt;7. Dalam instruksi ini register serba guna R0 berfungsi dengan  register            penampung alamat (indirect address register), selain R0  register serba            guna R1 juga bisa dipakai sebagai register penampung alamat.&lt;br /&gt;8. Penyebutan data dalam register (register addressing mode):  MOV A,R5.            Instruksi ini mempunyai makna data dalam register serba guna  R5 di-copy-kan            ke Akumulator A. Instruksi ini membuat register serba guna R0  sampai            R7 sebagai tempat penyimpan data yang sangat praktis yang  kerjanya sangat            cepat.&lt;br /&gt;9. Data yang dimaksud dalam bahasan di atas semuanya berada di  dalam            memori data (termasuk register serba guna letaknya juga di  dalam memori            data). Dalam penulisan program, sering-sering diperlukan tabel  baku            yang disimpan bersama dengan program tersebut. Tabel semacam  ini sesungguhnya            merupakan data yang berada di dalam memori program! &lt;br /&gt;10. Untuk keperluan ini, MCS51 mempunyai cara penyebutan data  dalam            memori program yang dilakukan secara indirect (code indirect  addressing            mode) : MOVC A,@A+DPTR. &lt;br /&gt;Perhatikan dalam instruksi ini MOV digantikan dengan MOVC,  tambahan            huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini  dipakai            di memori program. (MOV tanpa huruf C artinya instruksi  dipakai di memori            data). &lt;br /&gt;Tanda ‘@’ dipakai untuk menandai A+DPTR dipakai untuk  menyatakan            nomor memori yang isinya di-copy-kan ke Akumulator A, dalam  hal ini            nilai yang tersimpan dalam DPTR (Data Pointer Register - 2  byte) ditambah            dengan nilai yang tersimpan dalam Akumulator A (1 byte)  dipakai untuk            menunjuk nomor memori program.&lt;/div&gt;&lt;div align="justify"&gt;Secara keseluruhan AT8951 mempunyai sebanyak  255 macam            instruksi, yang dibentuk dengan mengkombinasikan ‘kata kerja’            dan objek. “Kata kerja’ tersebut secara kelompok dibahas            sebagai berikut :&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.3.1 Instruksi copy data&lt;/b&gt;&lt;br /&gt;Kode dasar untuk kelompok ini adalah MOV, singkatan dari MOVE  yang artinya            memindahkan, meskipun demikian lebih tepat dikatakan perintah  ini mempunyai            makna peng-copy-an data. Hal ini bisa dijelaskan berikut :  setelah instruksi            MOV A,R7 dikerjakan, Akumulator A dan register serba guna R7  berisikan            data yang sama, yang asalnya tersimpan di dalam R7.&lt;br /&gt;Perintah MOV dibedakan sesuai dengan jenis memori AT89Cx051.  Perintah            ini pada memori data dituliskan menjadi MOV, misalkan :&lt;/div&gt;&lt;div align="justify"&gt;MOV A,$20&lt;br /&gt;MOV A,@R1&lt;br /&gt;MOV A,P1&lt;br /&gt;MOV P3,A&lt;/div&gt;&lt;div align="justify"&gt;Untuk pemakaian pada memori program, perintah  ini dituliskan            menjadi MOVC, hanya ada 2 jenis instruksi yang memakai MOVC,  yakni:&lt;/div&gt;&lt;div align="justify"&gt;MOVC A,@A+DPTR ; DPTR sebagai register  indirect&lt;br /&gt;MOVC A,@A+PC ; PC sebagai register indirect&lt;/div&gt;&lt;div align="justify"&gt;Selain itu, masih dikenal pula perintah MOVX,  yakni            perintah yang dipakai untuk memori data eksternal (X  singkatakan dari            External). Perintah ini hanya dimiliki oleh anggota keluarga  MCS51 yang            mempunyai memori data eksternal, misalnya AT89C51 dan lain  sebagainya,            dan jelas tidak dikenal oleh kelompok AT89Cx051 yang tidam  punya memori            data eksternal. Hanya ada 6 macam instruksi yang memakai MOVX,  instruksi-instruksi            tersebut adalah:&lt;/div&gt;&lt;div align="justify"&gt;MOVX A,@DPTR&lt;br /&gt;MOVX A,@R0&lt;br /&gt;MOVX A,@R1&lt;br /&gt;MOVX @DPTR,A&lt;br /&gt;MOVX @R0,A&lt;br /&gt;MOVX @R1,A&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td rowspan="2" width="16%"&gt;&lt;div align="center"&gt;&lt;b&gt;Mnemonic&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td rowspan="2" width="20%"&gt;&lt;div align="center"&gt;&lt;b&gt;Operation&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;b&gt;Addressing Mode&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="19%"&gt;&lt;div align="center"&gt;&lt;b&gt;Exect.&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td width="8%"&gt;&lt;div align="center"&gt;&lt;b&gt;Dir&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="10%"&gt;&lt;div align="center"&gt;&lt;b&gt;Ind&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="12%"&gt;&lt;div align="center"&gt;&lt;b&gt;Reg&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="15%"&gt;&lt;div align="center"&gt;&lt;b&gt;Imm&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Timer uS&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Mov A,&lt;src&gt;&lt;/src&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=&lt;src&gt;&lt;/src&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Mov &lt;dest&gt;,A&lt;/dest&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;&lt;dest&gt;=A&lt;/dest&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Mov &lt;dest&gt;, &lt;src&gt;&lt;/src&gt;&lt;/dest&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;&lt;dest&gt;=&lt;src&gt;&lt;/src&gt;&lt;/dest&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Mov DPTR,#data16&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;DPTR=16 bit immediate const&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Accumulator Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Push &lt;src&gt;&lt;/src&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Inc SP&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Pop &lt;src&gt;&lt;/src&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Dec SP&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Data Pointer Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Xch A,&lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Acc and &lt;byte&gt; exchange data&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Accumulator Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Xchd A,@Ri&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Acc and @Ri exchange low nibbles&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;b&gt;1.3.2 Instruksi Aritmatika&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Perintah ADD dan ADDC&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Isi Akumulator A ditambah dengan bilangan 1  byte, hasil            penjumlahan akan ditampung kembali dalam Akumulator. Dalam  operasi ini            bit Carry (C flag dalam PSW – Program Status Word) berfungsi  sebagai            penampung limpahan hasil penjumlahan. Jika hasil penjumlahan  tersebut            melimpah (nilainya lebih besar dari 255) bit Carry akan  bernilai ‘1’,            kalau tidak bit Carry bernilai ‘0’. ADDC sama dengan ADD,            hanya saja dalam ADDC nilai bit Carry dalam proses sebelumnya  ikut dijumlahkan            bersama.&lt;br /&gt;Bilangan 1 byte yang ditambahkan ke Akumulator, bisa berasal  dari bilangan            konstan, dari register serba guna, dari memori data yang nomor  memorinya            disebut secara langsung maupun tidak langsung, seperti  terlihat dalam            contoh berikut :&lt;/div&gt;&lt;div align="justify"&gt;ADD A,R0 ; register serba guna&lt;br /&gt;ADD A,#$23 ; bilangan konstan&lt;br /&gt;ADD A,@R0 ; no memori tak langsung&lt;br /&gt;ADD A,P1 ; no memori langsung (port 1)&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Perintah SUBB&lt;/b&gt;&lt;br /&gt;Isi Akumulator A dikurangi dengan bilangan 1 byte berikut  dengan nilai            bit Carry, hasil pengurangan akan ditampung kembali dalam  Akumulator.            Dalam operasi ini bit Carry juga berfungsi sebagai penampung  limpahan            hasil pengurangan. Jika hasil pengurangan tersebut melimpah  (nilainya            kurang dari 0) bit Carry akan bernilai ‘1’, kalau tidak            bit Carry bernilai ‘0’. &lt;br /&gt;&lt;br /&gt;SUBB A,R0 ; A = A - R0 - C&lt;br /&gt;SUBB A,#$23 ; A = A - $23&lt;br /&gt;SUBB A,@R1&lt;br /&gt;SUBB A,P0&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Perintah DA&lt;/b&gt;&lt;br /&gt;Perintah DA (Decimal Adjust) dipakai setelah perintah ADD;  ADDC atau            SUBB, dipakai untuk merubah nilai biner 8 bit yang tersimpan  dalam Akumulator            menjadi 2 buah bilangan desimal yang masing-masing terdiri  dari nilai            biner 4 bit. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Perintah MUL AB&lt;/b&gt;&lt;br /&gt;Bilangan biner 8 bit dalam Akumulator A dikalikan dengan  bilangan biner            8 bit dalam register B. Hasil perkalian berupa bilangan biner  16 bit,            8 bit bilangan biner yang bobotnya lebih besar ditampung di  register            B, sedangkan 8 bit lainnya yang bobotnya lebih kecil ditampung  di Akumulator            A.&lt;br /&gt;Bit OV dalam PSW (Program Status Word) dipakai untuk menandai  nilai            hasil perkalian yang ada dalam register B. Bit OV akan  bernilai ‘0’            jika register B bernilai $00, kalau tidak bit OV bernilai ‘1’.&lt;/div&gt;&lt;div align="justify"&gt;MOV A,#10&lt;br /&gt;MOV B,#20&lt;br /&gt;MUL AB&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Perintah DIV AB&lt;/b&gt;&lt;br /&gt;Bilangan biner 8 bit dalam Akumulator A dibagi dengan bilangan  biner            8 bit dalam register B. Hasil pembagian berupa bilangan biner 8  bit            ditampung di Akumulator, sedangkan sisa pembagian berupa  bilangan biner            8 bit ditampung di register B. &lt;br /&gt;Bit OV dalam PSW (Program Status Word) dipakai untuk menandai  nilai            sebelum pembagian yang ada dalam register B. Bit OV akan  bernilai ‘1’            jika register B asalnya bernilai $00.&lt;/div&gt;&lt;div align="justify"&gt;Table 1.3. Instruksi Aritmatika&lt;/div&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td rowspan="2" width="16%"&gt;&lt;div align="center"&gt;&lt;b&gt;Mnemonic&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td rowspan="2" width="20%"&gt;&lt;div align="center"&gt;&lt;b&gt;Operation&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;b&gt;Addressing Mode&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="19%"&gt;&lt;div align="center"&gt;&lt;b&gt;Exect.&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td width="8%"&gt;&lt;div align="center"&gt;&lt;b&gt;Dir&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="10%"&gt;&lt;div align="center"&gt;&lt;b&gt;Ind&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="12%"&gt;&lt;div align="center"&gt;&lt;b&gt;Reg&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="15%"&gt;&lt;div align="center"&gt;&lt;b&gt;Imm&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Timer uS&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Add A,&lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=A+&lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Addc A,&lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=A+&lt;byte&gt;+C&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Subb A,&lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=A-&lt;byte&gt;-C&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Inc A&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=A+1&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Accumulator Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Inc &lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;&lt;byt&gt;=&lt;byt&gt;+1&lt;/byt&gt;&lt;/byt&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Inc DPTR&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;DPTR=DPTR+1&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Data Pointer Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Dec A&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;A=A-1&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Accumulator Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Dec &lt;byte&gt;&lt;/byte&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;&lt;byt&gt;=&lt;byt&gt;-1&lt;/byt&gt;&lt;/byt&gt;&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;V&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Mul AB&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;B:A=BxA&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;Accumulator  and                  B Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td height="26"&gt;&lt;span style="font-size: x-small;"&gt;Div AB&lt;/span&gt;&lt;/td&gt;             &lt;td&gt;A=Int[A/B]&lt;br /&gt;B=Mod[A/B] &lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;Accumulator and B only&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;4&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;DA A&lt;/td&gt;             &lt;td&gt;&lt;span style="font-size: x-small;"&gt;Dec Adjust&lt;/span&gt;&lt;/td&gt;             &lt;td colspan="4"&gt;&lt;div align="center"&gt;&lt;span style="font-size: small;"&gt;Accumulator Only&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;1.3.3 Instruksi Logika&lt;br /&gt;&lt;br /&gt;Kelompok perintah ini dipakai untuk melakukan operasi logika mikrokontroler MCS51, operasi logika yang bisa dilakukan adalah operasi AND (kode operasi ANL), operasi OR (kode operasi ORL) dan operasi Exclusive-OR (kode operasi XRL).&lt;br /&gt;Data yang dipakai dalam operasi ini bisa berupa data yang berada dalam Akumulator atau data yang berada dalam memori-data, hal ini sedikit berlainan dengan operasi aritmatik yang harus melihatkan Akumulator secara aktip.&lt;br /&gt;Hasil operasi ditampung di sumber data yang pertama.&lt;br /&gt;&lt;br /&gt;1. Operasi logika AND banyak dipakai untuk me-‘0’-kan beberapa bit tertentu dari sebuah bilangan biner 8 bit, caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang di-ANL-kan bilangan asal. Bit yang ingin di-‘0’-kan diwakili dengan ‘0’ pada data konstan, sedangkan bit lainnya diberi nilai ‘1’, misalnya. Instruksi ANL P1,#%01111110 akan mengakibatkan bit 0 dan bit 7 dari Port 1 (P1) bernilai ‘0’ sedangkan bit-bit lainnya tetap tidak berubah nilai.&lt;br /&gt;&lt;br /&gt;2. Operasi logika OR banyak dipakai untuk me-‘1’-kan beberapa bit tertentu dari sebuah bilangan biner 8 bit, caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang di-ORL-kan bilangan asal. Bit yang ingin di-‘1’-kan diwakili dengan ‘1’ pada data konstan, sedangkan bit lainnya diberi nilai ‘0’, misalnya :Instruksi ORL A,#%01111110 akan mengakibatkan bit 1 sampai dengan bit 6 dari Akumulator bernilai ‘1’ sedangkan bit-bit lainnya tetap tidak berubah nilai.&lt;br /&gt;3. Operasi logika Exclusive-OR banyak dipakai untuk membalik nilai (complement) beberapa bit tertentu dari sebuah bilangan biner 8 bit, caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang di-XRL-kan bilangan asal. Bit yang ingin dibalik-nilai diwakili dengan ‘1’ pada data konstan, sedangkan bit lainnya diberi nilai ‘0’, misalnya: Instruksi XRL A,#%01111110 akan mengakibatkan bit 1 sampai dengan bit 6 dari Akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah nilai.&lt;br /&gt;Mnemonic&lt;br /&gt;&lt;br /&gt;Operation&lt;br /&gt;&lt;br /&gt;Addressing Mode&lt;br /&gt;&lt;br /&gt;Exect.&lt;br /&gt;Dir&lt;br /&gt;&lt;br /&gt;Ind&lt;br /&gt;&lt;br /&gt;Reg&lt;br /&gt;&lt;br /&gt;Imm&lt;br /&gt;&lt;br /&gt;Timer uS&lt;br /&gt;Anl A,&lt;byte&gt;  A=A and &lt;byte&gt;  &lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Anl &lt;byte&gt;,A  &lt;byte&gt;=&lt;byte&gt;anl A  &lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Anl &lt;byte&gt;,#data  &lt;byte&gt;=&lt;byte&gt;and #data  &lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Orl A,&lt;byte&gt;  A=A or &lt;byte&gt;  &lt;br /&gt;Accumulator Only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Orl &lt;byte&gt;,A  &lt;byt&gt;=&lt;byt&gt;orl A  &lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Orl &lt;byte&gt;,#data  &lt;byte&gt;=&lt;byte&gt; or #data  &lt;br /&gt;Data Pointer Only&lt;br /&gt;&lt;br /&gt;2&lt;br /&gt;Xrl A,&lt;byte&gt;  A=A xor&lt;byte&gt;  &lt;br /&gt;Accumulator Only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Xrl&lt;byte&gt;,A  &lt;byt&gt;=&lt;byt&gt;xor A  &lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;V&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;Xrl &lt;byte&gt;,#data  &lt;byte&gt;=&lt;byte&gt;xor #data  &lt;br /&gt;Accumulator and B Only&lt;br /&gt;&lt;br /&gt;4&lt;br /&gt;CLR A  &lt;br /&gt;&lt;br /&gt;A=00h&lt;br /&gt;&lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;CPL A  A= not A  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;RL A  Rotate A left 1 bit  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;RLC A  Rotate A left trough Carry  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;RR A  Rotate A right 1 bit  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;RRC  Rotate A right trough carry  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;SWAP A  Swap nibbles in A  &lt;br /&gt;Accumulator only&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;Operasi logika pada umumnya mencakup empat hal, yaitu operasi AND, operasi OR, operasi EX-OR dan operasi NOT. MCS51 hanya bisa melaksanakan tiga jenis operasi logika yang ada, yakni intruksi ANL (AND Logical) untuk operasi AND instruksi ORL (OR Logical) untuk operasi OR, CPL (Complement bit) untuk operasi NOT.&lt;br /&gt;Bit Carry pada PSW diperlakukan sebagai ‘akumulator bit’, dengan demikian operasi AND dan operasi OR dilakukan antara bit yang tersimpan pada bit Carry dengan salah satu dari 256 bit data yang dibahas di atas. Contoh dari instruksi-instruksi ini adalah :&lt;br /&gt;&lt;br /&gt;ANL C,P1.1&lt;br /&gt;ANL C,/P1.2&lt;br /&gt;&lt;br /&gt;Instruksi ANL C,P1.1 meng-AND-kan nilai pada bit Carry dengan nilai Port 1 bit 1 (P1.1), dan hasil operasi tersebut ditampung pada bit Carry. Instruksi ANL C,/P1.1 persis sama dengan instruksi sebelumnya, hanya saja sebelum di-AND-kan, nilai P1.1 dibalik (complemented) lebih dulu, jika nilai P1.1=‘0’ maka yang di-AND-kan dengan bit Carry adalah ‘1’, demikian pula sebaliknya. Hal serupa berlaku pada instruksi ORL.&lt;br /&gt;Instruksi CPL dipakai untuk membalik (complement) nilai semua 256 bit data yang dibahas di atas. Misalnya :&lt;br /&gt;CPL C&lt;br /&gt;CPL P1.0&lt;br /&gt;&lt;br /&gt;CPL C akan membalik nilai biner dalam bit Carry (jangan lupa bit Carry merupakan salah satu bit yang ada dalam 256 bit yang dibahas di atas, yakni bit nomor $E7 atau PSW.7).&lt;br /&gt;&lt;br /&gt;1.3.4 Instruksi Lompatan&lt;br /&gt;&lt;br /&gt;Pada dasarnya program dijalankan intruksi demi instruksi, artinya selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya, untuk keperluan ini mikrokontroler dilengkapi dengan Program Counter yang mengatur pengambilan intruksi secara berurutan. Meskipun demikian, program yang kerjanya hanya berurutan saja tidaklah banyak artinya, untuk keperluan ini mikrokontroler dilengkapi dengan instruksi-instruksi untuk mengatur alur program.&lt;br /&gt;&lt;br /&gt;Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMP (setara dengan statemen GOTO dalam Pascal), instruksi-instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE dalam Pascal), instruksi-instruksi JUMP bersyarat (conditional Jump, setara dengan statemen IF .. THEN dalam Pascal). Di samping itu ada pula instruksi PUSH dan POP yang bisa memengaruhi alur program.&lt;br /&gt;Karena Program Counter adalah satu-satunya register dalam mikrokontroler yang mengatur alur program, maka kelompok instruksi pengatur program yang dibicarakan di atas, semuanya merubah nilai Program Counter, sehingga pada saat kelompok instruksi ini dijalankan, nilai Program Counter akan tidak akan runtun dari nilai instruksi sebelumnya.&lt;br /&gt;Selain karena instruksi-instruksi di atas, nilai Program Counter bisa pula berubah karena pengaruh perangkat keras, yaitu saat mikrokontroler di-reset atau menerima sinyal interupsi dari perangkat input/output. Hal ini akan dibicarakan secara detail dibagian lagi.&lt;br /&gt;&lt;br /&gt;Mikrokontroler menjalankan intruksi demi instruksi, selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya, hal ini dilakukan dengan cara nilai Program Counter bertambah sebanyak jumlah byte yang membentuk instruksi yang sedang dijalankan, dengan demikian pada saat instruksi bersangkutan dijalankan Program Counter selalu menyimpan nomor memori-program yang menyimpan instruksi berikutnya.&lt;br /&gt;Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai Program Counter yang runtun sesuai dengan alur program diganti dengan nomor memori-program baru yang dikehendaki programer.&lt;br /&gt;Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP (Long Jump), instruksi AJMP (Absolute Jump) dan instruksi SJMP (Short Jump). Kerja dari ketiga instruksi ini persis sama, yakni memberi nilai baru pada Program Counter, kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi (jika MCS51 bekerja pada frekuensi 12 MHz, maka instruksi ini dijalankan dalam waktu 2 mikro-detik), yang berbeda dalam jumlah byte pembentuk instruksinya, instruksi LJMP dibentuk dengan 3 byte, sedangkan instuksi AJMP dan SJMP cukup 2 byte.&lt;br /&gt;&lt;br /&gt;Instruksi LJMP&lt;br /&gt;Kode untuk instruksi LJMP adalah $02, nomor memori-program baru yang dituju dinyatakan dengan bilangan biner 16 bit, dengan demikian instruksi ini bisa menjangkau semua memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk umum 02 aa aa, aa yang pertama adalah nomor memori-program bit 8 sampai dengan bit 15, sedangkan aa yang kedua adalah nomor memori-program bit 0 sampai dengan bit 7.&lt;br /&gt;Pemakaian instruksi LJMP bisa dipelajari dari potongan program berikut :&lt;br /&gt;&lt;br /&gt;LJMP TugasBaru&lt;br /&gt;…&lt;br /&gt;ORG $2000&lt;br /&gt;TugasBaru:&lt;br /&gt;MOV A,P3.1&lt;br /&gt;&lt;br /&gt;Dalam potongan program di atas, ORG adalah perintah pada assembler agar berikutnya assembler bekerja pada memori-program nomor yang disebut di belakang ORG (dalam hal ini minta assembler berikutnya bekerja pada memori-program nomor $2000). TugasBaru disebut sebagai LABEL, yakni sarana assembler untuk menandai/ menamai nomor memori-program. Dengan demikian, dalam potongan program di atas, memori-program nomor $2000 diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru bernilai $2000. (Catatan : LABEL ditulis minimal satu huruf lebih kiri dari instruksi, artinya LABEL ditulis setelah menekan tombol Enter, tapi instruksi ditulis setelah menekan tombol Enter, kemudian diikuti dengan 1 tombol spasi atau tombol TAB).&lt;br /&gt;Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan LJMP $2000 yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal).&lt;br /&gt;&lt;br /&gt;Instruksi AJMP&lt;br /&gt;Nomor memori-program baru yang dituju dinyatakan dengan bilangan biner 11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte. Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang digabung dengan nomor memori-program bit nomor 8 sampai dengan bit nomor 10, byte kedua dipakai untuk menyatakan nomor memori-program bit nomor 0 sampai dengan bit nomor 7.&lt;br /&gt;Berikut ini adalah potongan program untuk menjelaskan pemakaian instruksi AJMP:&lt;br /&gt;&lt;br /&gt;ORG $800&lt;br /&gt;AJMP DaerahIni&lt;br /&gt;AJMP DaerahLain&lt;br /&gt;ORG $900&lt;br /&gt;DaerahIni:&lt;br /&gt;. . .&lt;br /&gt;ORG $1000&lt;br /&gt;DaerahLain:&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;Potongan program di atas dimulai di memori-program nomor $800, dengan demikian instruksi AJMP DaerahIni bisa dipakai, karena nomor-memori $800 (tempat instruksi AJMP DaerahIni) dan LABEL DaerahIni yang terletak di dalam satu daerah memori-progam 2 KiloByte yang sama dengan. (Dikatakan terletak di dalam satu daerah memori-program 2 KiloByte yang sama, karena bit nomor 11 sampai dengan bit nomor 15 dari nomor memorinya sama).&lt;br /&gt;Tapi AJMP DaerahLain akan di-salah-kan oleh Assembler, karena DaerahLain yang terletak di memori-program nomor $1000 terletak di daerah memori-program 2 KiloByte yang lain.&lt;br /&gt;Karena instruksi AJMP hanya terdiri dari 2 byte, sedangkan instruksi LJMP 3 byte, maka memakai instruksi AJMP lebih hemat memori-program dibanding dengan LJMP. Hanya saja karena jangkauan instrusksi AJMP hanya 2 KiloByte, pemakaiannya harus hati-hati.&lt;br /&gt;Memori-program IC mikrokontroler AT89C1051 dan AT89C2051 masing-masing hanya 1 KiloByte dan 2 KiloByte, dengan demikian program untuk kedua mikrokontroler di atas tidak perlu memakai instruksi LJMP, karena program yang ditulis tidak mungkin menjangkau lebih dari 2 KiloByte memori-program.&lt;br /&gt;&lt;br /&gt;Instruksi SJMP&lt;br /&gt;Nomor memori-program dalam instruksi ini tidak dinyatakan dengan nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan.&lt;br /&gt;Pergeseran relatip tersebut dinyatakan dengan 1 byte bilangan 2’s complement, yang bisa dipakai untuk menyakatakan nilai antara –128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksi-instruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya.&lt;br /&gt;Meskipun jangkauan instruksi SJMP hanya –128 sampai +127, tapi instruksi ini tidak dibatasi dengan pengertian daerah memori-program 2 KiloByte yang membatasi instruksi AJMP.&lt;br /&gt;&lt;br /&gt;ORG $0F80&lt;br /&gt;SJMP DaerahLain&lt;br /&gt;. . .&lt;br /&gt;ORG $1000&lt;br /&gt;DaerahLain:&lt;br /&gt;&lt;br /&gt;Dalam potongan program di atas, memori-program $0F80 tidak terletak dalam daerah memori-program 2 KiloByte yang sama dengan $1000, tapi instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte.&lt;br /&gt;&lt;br /&gt;Instruksi sub-rutin&lt;br /&gt;Instruksi-instruksi untuk membuat dan memakai sub-rutin/modul program, selain melibatkan Program Counter, melibatkan pula Stack yang diatur oleh Register Stack Pointer.&lt;br /&gt;Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin, artinya mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, selesai mengerjakan sub-rutin mikrokontroler kembali ke alur program utama.&lt;br /&gt;Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin. Program sub-rutin di-’panggil’ dengan instruksi ACALL atau LCALL.&lt;br /&gt;Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada saat menerima instruksi ACALL atau LCALL, sebelum mikrokontroler pergi mengerjakan sub-rutin, nilai Program Counter saat itu disimpan dulu ke dalam Stack (Stack adalah sebagian kecil dari memori-data yang dipakai untuk menyimpan nilai Program Counter secara otomatis, kerja dari Stack dikendalikan oleh Register Stack Poiner).&lt;br /&gt;Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam sub-rutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup dari sub-rutin. Saat menerima instruksi RET, nilai asal Program Counter sebelum mengerjakan sub-rutin yang disimpan di dalam Stack, dikembalikan ke Program Counter sehingga mikrokontroler bisa meneruskan pekerjaan di alur program utama.&lt;br /&gt;Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi AJMP yang sudah dibahas di atas. Sedangkan instruksi LCALL setara dengan instruksi LCALL, yang bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte. (Tapi tidak ada instrusk SCALL yang setara dengan instruksi SJMP).&lt;br /&gt;Program untuk AT89C1051 dan AT89C2051 tidak perlu memakai instruksi LCALL.&lt;br /&gt;Instruksi RET dipakai untuk mengakhiri program sub-rutin, di samping itu masih ada pula instruksi RETI, yakni instruksi yang dipakai untuk mengakhiri Program Layanan Interupsi (Interrupt Service Routine), yaitu semacam program sub-rutin yang dijalankan mikrokontroler pada saat mikrokontroler menerima sinyal permintaan interupsi.&lt;br /&gt;Catatan : Saat mikrokontroler menerima sinyal permintaaan interupsi, mikrokontroler akan melakukan satu hal yang setara dengan intruksi LCALL untuk menjalankan Program Layanan Interupsi dari sinyal interupsi bersangkutan. Di samping itu, mikrokontroler juga me-‘mati’-kan sementara mekanisme layanan interupsi, sehingga permintaan interupsi berikutnya tidak dilayani. Saat menerima instruksi RETI, makanisme layanan interusi kembali diaktipkan dan mikrokontroler melaksanakan hal yang setara dengan instruksi RET.&lt;br /&gt;&lt;br /&gt;Instruksi Lompatan Bersyarat&lt;br /&gt;Instruksi Jump bersyarat merupakan instruksi inti bagi mikrokontroler, tanpa kelompok instruksi ini program yang ditulis tidak banyak berarti. Instruksi-instruksi ini selain melibatkan Program Counter, melibatkan pula kondisi-kondisi tertentu yang biasanya dicatat dalam bit-bit tertentu yang dihimpun dalam Register tertentu.&lt;br /&gt;Khusus untuk keluarga mikrokontroler MCS51 yang mempunyai kemampuan menangani operasi dalam level bit, instruksi jump bersyarat dalam MCS51 dikaitkan pula dengan kemampuan operasi bit MCS51.&lt;br /&gt;Nomor memori-program baru yang harus dituju tidak dinyatakan dengan nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan. Cara ini dipakai pula untuk instruksi SJMP.&lt;br /&gt;&lt;br /&gt;Instruksi JZ / JNZ&lt;br /&gt;Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if not Zero) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A.&lt;br /&gt;&lt;br /&gt;MOV A,#0&lt;br /&gt;JNZ BukanNol&lt;br /&gt;JZ Nol&lt;br /&gt;. . .&lt;br /&gt;BukanNol:&lt;br /&gt;. . .&lt;br /&gt;Nol :&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;Dalam contoh program di atas, MOV A,#0 membuat A bernilai nol, hal ini mengakibatkan instruksi JNZ BukanNol tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A&amp;lt;&amp;gt;0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangankan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.&lt;br /&gt;&lt;br /&gt;Instruksi JC / JNC&lt;br /&gt;Instruksi JC (Jump on Carry) dan instruksi JNC (Jump on no Carry) adalah instruksi jump bersyarat yang memantau nilai bit Carry di dalam Program Status Word (PSW).&lt;br /&gt;Bit Carry merupakan bit yang banyak sekali dipakai untuk keperluan operasi bit, untuk menghemat pemakaian memori-program disediakan 2 instruksi yang khusus untuk memeriksa keadaan bit Carry, yakni JC dan JNC. Karena bit akan diperiksa sudah pasti, yakni bit Carry, maka instruksi ini cukup dibentuk dengan 2 byte saja, dengan demikian bisa lebih menghemat memori program.&lt;br /&gt;&lt;br /&gt;JC Periksa&lt;br /&gt;JB PSW.7,Periksa&lt;br /&gt;&lt;br /&gt;Hasil kerja kedua instruksi di atas sama, yakni MCS51 akan JUMP ke Periksa jika ternyata bit Carry bernilai ‘1’ (ingat bit Carry sama dengan PSW bit 7). Meskipun sama tapi instruksi JC Periksa lebih pendek dari instruksi JB PSW.7,Periksa, instruksi pertama dibentuk dengan 2 byte dan instruksi yang kedua 3 byte.&lt;br /&gt;Instruksi JBC sama dengan instruksi JB, hanya saja jika ternyata bit yang diperiksa memang benar bernilai ‘1’, selain MCS51 akan JUMP ke instruksi lain yang dikehendaki MCS51 akan me-nol-kan bit yang baru saja diperiksa&lt;br /&gt;&lt;br /&gt;Instruksi JB / JNB / JBC&lt;br /&gt;Instruksi JB (Jump on Bit Set), instruksi JNB (Jump on not Bit Set) dan instruksi JBC (Jump on Bit Set Then Clear Bit) merupakan instruksi Jump bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.&lt;br /&gt;Pengujian Nilai Boolean dilakukan dengan instruksi JUMP bersyarat, ada 5 instruksi yang dipakai untuk keperluan ini, yakni instruksi JB (JUMP if bit set), JNB (JUMP if bit Not Set), JC (JUMP if Carry Bit set), JNC (JUMP if Carry Bit Not Set) dan JBC (JUMP if Bit Set and Clear Bit).&lt;br /&gt;Dalam instruksi JB dan JNB, salah satu dari 256 bit yang ada akan diperiksa, jika keadaannya (false atau true) memenuhi syarat, maka MCS51 akan menjalankan instruksi yang tersimpan di memori-program yang dimaksud. Alamat memori-program dinyatakan dengan bilangan relatip terhadap nilai Program Counter saat itu, dan cukup dinyatakan dengan angka 1 byte. Dengan demikian instruksi ini terdisi dari 3 byte, byte pertama adalah kode operasinya ($29 untuk JB dan $30 untuk JNB), byte kedua untuk menyatakan nomor bit yang harus diuji, dan byte ketiga adalah bilangan relatip untuk instruksi tujuan.&lt;br /&gt;Contoh pemakaian instruksi JB dan JNB sebagai berikut :&lt;br /&gt;&lt;br /&gt;JB P1.1,$&lt;br /&gt;JNB P1.1,$&lt;br /&gt;&lt;br /&gt;Instruksi-instruksi di atas memantau kedaan kaki IC MCS51 Port 1 bit 1. Instruksi pertama memantau P1.1, jika P1.1 bernilai ‘1’ maka MCS51 akan mengulang instruksi ini, (tanda $ mempunyai arti jika syarat terpenuhi kerjakan lagi instruksi bersangkutan). Instruksi berikutnya melakukan hal sebaliknya, yakni selama P1.1 bernilai ‘0’ maka MCS51 akan tertahan pada instruksi ini.&lt;br /&gt;&lt;br /&gt;Instruksi proses dan test&lt;br /&gt;Instruksi-instruksi Jump bersyarat yang dibahas di atas, memantau kondisi yang sudah terjadi yang dicatat MCS51. Ada dua instruksi yang melakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harus Jump. Kedua instruksi yang dimaksud adalah instruksi DJNZ dan instruksi CJNE.&lt;br /&gt;&lt;br /&gt;Instruksi DJNZ&lt;br /&gt;Instruksi DJNZ (Decrement and Jump if not Zero), merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0..R7) atau memori-data, dan Jump jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol.&lt;br /&gt;Contoh berikut merupakan potongan program untuk membentuk waktu tunda secara sederhana :&lt;br /&gt;MOV R0,#$23&lt;br /&gt;DJNZ R0,$&lt;br /&gt;&lt;br /&gt;Instruksi MOV R0,#$23 memberi nilai $23 pada R0, selanjutnya setiap kali instruksi DJNZ R0,$ dikerjakan, MCS51 akan mengurangi nilai R0 dengan ‘1’, jika R0 belum menjadi nol maka MCS51 akan mengulang instruksi tersebut (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertunda, waktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0.&lt;br /&gt;&lt;br /&gt;Instruksi CJNE&lt;br /&gt;Instruksi CJNE (Compare and Jump if Not Equal) membandingkan dua nilai yang disebut dan MCS akan Jump kalau kedua nilai tersebut tidak sama!&lt;br /&gt;&lt;br /&gt;MOV A,P1&lt;br /&gt;CJNE A,#$0A,TidakSama&lt;br /&gt;...&lt;br /&gt;SJMP EXIT&lt;br /&gt;;&lt;br /&gt;TidakSama:&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Instruksi MOV A,P1 membaca nilai input dari Port 1, instruksi CJNE A,#$0A,Tidaksama memeriksa apakah nilai Port 1 yang sudah disimpan di A sama dengan $0A, jika tidak maka Jump ke TidakSama&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byt&gt;&lt;/byt&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byt&gt;&lt;/byt&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;/byte&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-4790037247442776673?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/4790037247442776673/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/set-instruksi.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/4790037247442776673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/4790037247442776673'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/set-instruksi.html' title='Set Instruksi'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-6389415992348784863</id><published>2010-06-11T10:35:00.001-07:00</published><updated>2010-06-11T10:51:17.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='9. Perangkat Lunak'/><title type='text'>Perangkat Lunak</title><content type='html'>1.8. Perangkat Lunak&lt;br /&gt;&lt;br /&gt;1.8.1 Compiler MIDE Studio&lt;br /&gt;&lt;br /&gt;M-IDE Studio adalah salah satu cara yang digunakan untuk menjalankan kompilasi untuk divais MCS-51. M-IDE Studio mempunyai beberapa fitur yang dapat digunakan untuk edit, compil, dan debug file.&lt;br /&gt;The M-IDE Studio juga dapat digunakan untuk menulis program dalam bahasa C. Dengan menggunakan software ini, maka kita dapat melihat error pada report file LST.&lt;br /&gt;&lt;br /&gt;Gambar 1.19. M-IDE Studio&lt;br /&gt;&lt;br /&gt;Bila anda perhatikan pada menu toolbar dan menu pilihan, tampak terlihat disable. Hal ini karena file belum dibuat. Untuk membuat sebuah file, lakukan langkah-langkah berikut:&lt;br /&gt;&lt;br /&gt;1. Membuat File Baru&lt;br /&gt;Untuk membuat file baru, klik pada menu File atau short cut seperti yang ditunjukkan pada gambar, sehingga akan tampak halaman kosong.&lt;br /&gt;&lt;br /&gt;Figure 1.20. File baru dengan halaman kosong&lt;br /&gt;&lt;br /&gt;2. Menulis sebuah program&lt;br /&gt;Tulis program assembly pada halaman kosong, dan lakukan penyimpanan file. Bila file telah tersimpan maka akan tampak teks instruksi yang berwarna-warni. Sebagaimana yang ditunjukan pada gambar 3.&lt;br /&gt;&lt;br /&gt;Gambar 1.21 Menu penyimpanan file&lt;br /&gt;&lt;br /&gt;3. Kompilasi&lt;br /&gt;Agar file dengan ekstensi ASM tersebut dapat diloadkan ke mikrokontroller, maka perlu dilakukan kompilasi dari file ASM ke HEX.&lt;br /&gt;&lt;br /&gt;Gambar 1.22 Kompilasi file&lt;br /&gt;&lt;br /&gt;4. Debug&lt;br /&gt;&lt;br /&gt;Gambar 1.23 Debug file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.8.2. Microcontroller Software ISP PROG V1.4,&lt;br /&gt;&lt;br /&gt;Sangat disayangkan sekali, bahwa keberadaan LPT pada sebuah computer, terutama pada notebook, sudah sangat jarang terlihat, padahal keinginan untuk belajar mikrokontroller sudah tidak bisa ditahan lagi, sehingga kebutuhan sebuah programmer sangat mutlak sangat diperlukan. Pembuatan programmer dengan menggunakan port serial dapat digunakan sebagai alternative untuk melakukan pemrograman ke mikrokontroller, dan keberadaan port serial ini dapat tergantikan dengan menggunakan konverter USB to RS232, apabila di pc atau notebook anda tidak tersedia port serial RS232. Dengan harga yang sangat terjangkau. Berikut merupakan skamatik dari sebuah website yang sangat berguna sekali, 8052.com&lt;br /&gt;&lt;br /&gt;Pada gambar tersebut tampak hanya diperlukan tiga buah kabel yang menghubungkan dari port serial RS232 ke rangkaian programmer. IC AT89c2051 dapat digantikan dengan AT89s2051, ic tersebut merupakan saudara dari 89s51 dengan pin dan ROM yang lebih sedikit, tetapi dengna kemampuan yang tidak kalah hebat. IC ini sesungguhny hanya berfungsi sebagai konverter dari data serial menjadi data parallel, sehingga dapat digunakan untuk melakukan pemrograman secara ISP ke rangkaian target.&lt;br /&gt;&lt;br /&gt;1. Buat rangkaian programmer ISP serial sesuai dengan gambar berikut&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-6389415992348784863?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/6389415992348784863/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/perangkat-lunak.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6389415992348784863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6389415992348784863'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/perangkat-lunak.html' title='Perangkat Lunak'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-6849895526768082885</id><published>2010-06-11T10:34:00.001-07:00</published><updated>2010-06-11T10:52:05.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='8. Bahasa Assembly'/><title type='text'>Bahasa Assembly</title><content type='html'>1.7. Bahasa Asembly&lt;br /&gt;&lt;br /&gt;Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus pembacaan instruksi yang tersimpan di dalam memori. Mikrokontroler menentukan alamat dari memori program yang akan dibaca, dan melakukan proses baca data di memori. Data yang dibaca diinterprestasikan sebagai instruksi. Alamat instruksi disimpan oleh mikrokontroler di register, yang dikenal sebagai program counter. Instruksi ini misalnya program aritmatika yang melibatkan 2 register. Sarana yang ada dalam program assembly sangat minim, tidak seperti dalam bahasa pemrograman tingkat atas (high level language programming) semuanya sudah siap pakai. Penulis program assembly harus menentukan segalanya, menentukan letak program yang ditulisnya dalam memori-program, membuat data konstan dan tablel konstan dalam memori-program, membuat variabel yang dipakai kerja dalam memori-data dan lain sebagainya.&lt;br /&gt;&lt;br /&gt;1.7.1 Program sumber assembly&lt;br /&gt;Program-sumber assembly (assembly source program) merupakan kumpulan dari baris-baris perintah yang ditulis dengan program penyunting-teks (text editor) sederhana, misalnya program EDIT.COM dalam DOS, atau program NOTEPAD dalam Windows atau MIDE-51. Kumpulan baris-printah tersebut biasanya disimpan ke dalam file dengan nama ekstensi *.ASM dan lain sebagainya, tergantung pada program Assembler yang akan dipakai untuk mengolah program-sumber assembly tersebut.&lt;br /&gt;Setiap baris-perintah merupakan sebuah perintah yang utuh, artinya sebuah perintah tidak mungkin dipecah menjadi lebih dari satu baris. Satu baris perintah bisa terdiri atas 4 bagian, bagian pertama dikenali sebagai label atau sering juga disebut sebagai symbol, bagian kedua dikenali sebagai kode operasi, bagian ketiga adalah operand dan bagian terakhir adalah komentar.&lt;br /&gt;Antara bagian-bagian tersebut dipisahkan dengan sebuah spasi atau tabulator.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bagian label&lt;br /&gt;Label dipakai untuk memberi nama pada sebuah baris-perintah, agar bisa mudah menyebitnya dalam penulisan program. Label bisa ditulis apa saja asalkan diawali dengan huruf, biasa panjangnya tidak lebih dari 16 huruf. Huruf-huruf berikutnya boleh merupakan angka atau tanda titik dan tanda garis bawah. Kalau sebuah baris-perintah tidak memiliki bagian label, maka bagian ini boleh tidak ditulis namun spasi atau tabulator sebagai pemisah antara label dan bagian berikutnya mutlak tetap harus ditulis.&lt;br /&gt;Dalam sebuah program sumber bisa terdapat banyak sekali label, tapi tidak boleh ada label yang kembar.&lt;br /&gt;Sering sebuah baris-perintah hanya terdiri dari bagian label saja, baris demikian itu memang tidak bisa dikatakan sebagai baris-perintah yang sesungguhnya, tapi hanya sekedar memberi nama pada baris bersangkutan.&lt;br /&gt;Bagian label sering disebut juga sebagai bagian symbol, hal ini terjadi kalau label tersebut tidak dipakai untuk menandai bagian program, melainkan dipakai untuk menandai bagian data.&lt;br /&gt;&lt;br /&gt;Bagian kode operasi&lt;br /&gt;Kode operasi (operation code atau sering disingkat sebagai OpCode) merupakan bagian perintah yang harus dikerjakan. Dalam hal ini dikenal dua macam kode operasi, yang pertama adalah kode-operasi untuk mengatur kerja mikroprosesor / mikrokontroler. Jenis kedua dipakai untuk mengatur kerja program assembler, sering dinamakan sebagai assembler directive.&lt;br /&gt;Kode-operasi ditulis dalam bentuk mnemonic, yakni bentuk singkatan-singkatan yang relatip mudah diingat, misalnya adalah MOV, ACALL, RET dan lain sebagainya. Kode-operasi ini ditentukan oleh pabrik pembuat mikroprosesor/mikrokontroler, dengan demikian setiap prosesor mempunyai kode-operasi yang berlainan.&lt;br /&gt;Kode-operasi berbentuk mnemonic tidak dikenal mikroprosesor/mikrokontroler, agar program yang ditulis dengan kode mnemonic bisa dipakai untuk mengendalikan prosesor, program semacam itu diterjemahkan menjadi program yang dibentuk dari kode-operasi kode-biner, yang dikenali oleh mikroprosesor/mikrokontroler.&lt;br /&gt;Tugas penerjemahan tersebut dilakukan oleh program yang dinamakan sebagai Program Assembler.&lt;br /&gt;Di luar kode-operasi yang ditentukan pabrik pembuat mikroprosesor/mikrokontroler, ada pula kode-operasi untuk mengatur kerja dari program assembler, misalnya dipakai untuk menentukan letak program dalam memori (ORG), dipakai untuk membentuk variabel (DS), membentuk tabel dan data konstan (DB, DW) dan lain sebagainya.&lt;br /&gt;&lt;br /&gt;Bagian operand&lt;br /&gt;Operand merupakan pelengkap bagian kode operasi, namun tidak semua kode operasi memerlukan operand, dengan demikian bisa terjadi sebuah baris perintah hanya terdiri dari kode operasi tanpa operand. Sebaliknya ada pula kode operasi yang perlu lebih dari satu operand, dalam hal ini antara operand satu dengan yang lain dipisahkan dengan tanda koma.&lt;br /&gt;Bentuk operand sangat bervariasi, bisa berupa kode-kode yang dipakai untuk menyatakan Register dalam prosesor, bisa berupa nomor-memori (alamat memori) yang dinyatakan dengan bilangan atau pun nama label, bisa berupa data yang siap di-operasi-kan. Semuanya disesuaikan dengan keperluan dari kode-operasi.&lt;br /&gt;Untuk membedakan operand yang berupa nomor-memori atau operand yang berupa data yang siap di-operasi-kan, dipakai tanda-tanda khusus atau cara penulisan yang berlainan.&lt;br /&gt;Di samping itu operand bisa berupa persamaan matematis sederhana atau persamaan Boolean, dalam hal semacam ini program Assembler akan menghitung nilai dari persamaan-persamaan dalam operand, selanjutnya merubah hasil perhitungan tersebut ke kode biner yang dimengerti oleh prosesor. Jadi perhitungan di dalam operand dilakukan oleh program assembler bukan oleh prosesor!&lt;br /&gt;&lt;br /&gt;Bagian komentar&lt;br /&gt;Bagian komentar merupakan catatan-catatan penulis program, bagian ini meskipun tidak mutlak diperlukan tapi sangat membantu masalah dokumentasi. Membaca komentar-komentar pada setiap baris-perintah, dengan mudah bisa dimengerti maksud tujuan baris bersangkutan, hal ini sangat membantu orang lain yang membaca program.&lt;br /&gt;Pemisah bagian komentar dengan bagian sebelumnya adalah tanda spasi atau tabulator, meskipun demikian huruf pertama dari komentar sering-sering berupa tanda titik-koma, merupakan tanda pemisah khusus untuk komentar.&lt;br /&gt;Untuk keperluan dokumentasi yang intensip, sering-sering sebuah baris yang merupakan komentar saja, dalam hal ini huruf pertama dari baris bersangkutan adalah tanda titik-koma.&lt;br /&gt;AT89S51 memiliki sekumpulan instruksi yang sangat lengkap. Instruksi MOV untuk byte dikelompokkan sesuai dengan mode pengalamatan (addressing modes). Mode pengalamatan menjelaskan bagaimana operand dioperasikan. Berikut penjelasan dari berbagai mode pengalamatan. Bentuk program assembly yang umum ialah sebagai berikut :&lt;br /&gt;Label/Simbol&lt;br /&gt;&lt;br /&gt;Opcode&lt;br /&gt;&lt;br /&gt;Operand&lt;br /&gt;&lt;br /&gt;Komentar&lt;br /&gt;Org  0H   &lt;br /&gt;&lt;br /&gt;Start:&lt;br /&gt;&lt;br /&gt;Kiri:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Delay:&lt;br /&gt;Del1:&lt;br /&gt;Del2:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mov&lt;br /&gt;Mov&lt;br /&gt;Mov&lt;br /&gt;Call&lt;br /&gt;RL&lt;br /&gt;DEC&lt;br /&gt;CJNE&lt;br /&gt;Sjmp&lt;br /&gt;mov&lt;br /&gt;mov&lt;br /&gt;djnz&lt;br /&gt;djnz&lt;br /&gt;ret&lt;br /&gt;end&lt;br /&gt;A, #11111110b&lt;br /&gt;R0, #7&lt;br /&gt;P0, A&lt;br /&gt;Delay&lt;br /&gt;A&lt;br /&gt;R0&lt;br /&gt;R0, #0, Kiri&lt;br /&gt;Start&lt;br /&gt;R1, #255&lt;br /&gt;R2, #255&lt;br /&gt;R2, del2&lt;br /&gt;R1, del1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;; Isi Akumulator&lt;br /&gt;; Isi R0 dengan 7&lt;br /&gt;; Copy A ke P0&lt;br /&gt;; Panggil Delay&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Isi memori ialah bilangan heksadesimal yang dikenal oleh mikrokontroler kita, yang merupakan representasi dari bahasa assembly yang telah kita buat. Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.&lt;br /&gt;&lt;br /&gt;CJNE R5,#22H, aksi ;dibutuhkan 3 buah operand&lt;br /&gt;MOVX @DPTR, A ;dibutuhkan 2 buah operand&lt;br /&gt;RL A ;1 buah operand&lt;br /&gt;NOP ; tidak memerlukan operand&lt;br /&gt;&lt;br /&gt;Program yang telah selesai kita buat dapat disimpan dengan ekstension .asm. Lalu kita dapat membuat program objek dengan ekstension HEX dengan menggunakan compiler MIDE-51, yang dijelaskan sebagai berikut: &lt;br /&gt;&lt;br /&gt;1.7.2 Assembly Listing&lt;br /&gt;&lt;br /&gt;Program-sumber assembly di atas, setelah selesai ditulis diserahkan ke program Assembler untuk diterjemahkan. Setiap prosesor mempunyai program assembler tersendiri, bahkan satu macam prosesor bisa memiliki beberapa macam program Assembler buatan pabrik perangkat lunak yang berlainan.&lt;br /&gt;Hasil utama pengolahan program Assembler adalah program-obyek. Program-obyek ini bisa berupa sebuah file tersendiri, berisikan kode-kode yang siap dikirimkan ke memori-program mikroprosesor/mikrokontroler, tapi ada juga program-obyek yang disisipkan pada program-sumber assembly seperti terlihat dalam Assembly Listing di Gambar 2.&lt;br /&gt;Bagian kanan Gambar 2 merupakan program-sumber Assembly karya asli penulis program, setelah diterjemahkan oleh program Assembler kode-kode yang dihasilkan berikut dengan nomor-nomor memori tempat penyimpanan kode-kode tadi, disisipkan pada bagian kiri setiap baris perintah, sehingga bentuk program ini tidak lagi dikatakan sebagai program-sumber assembly tapi dikatakan sebagai Assembly Listing.&lt;br /&gt;Membaca Assembly Listing bisa memberikan gambaran yang lebih jelas bagi program yang ditulis, bagi pemula Assembly Listing memberi pengertian yang lebih mendalam tentang isi memori-program, sehingga bisa lebih dibayangkan bagaimana kerja dari sebuah program.&lt;br /&gt;&lt;br /&gt;Line  Addr   Code                Source&lt;br /&gt;&lt;br /&gt;1:                                        Org 0H&lt;br /&gt;2:     0000   74 FE      Start:    Mov A,#11111110b&lt;br /&gt;3:     0002   78 07                   Mov R0,#7&lt;br /&gt;4:     0004   F5 80       Kiri:      Mov P0,A&lt;br /&gt;5:     0006   12 00 1C              Call Delay&lt;br /&gt;6:     0009   23                        RL A&lt;br /&gt;7:     000A  18                        DEC  R0&lt;br /&gt;8:     000B  B8 00 F6              CJNE R0,#0,Kiri&lt;br /&gt;9:     000E  78 07                   Mov R0,#7&lt;br /&gt;10:   0010   F5 80        Kanan: Mov P0,A&lt;br /&gt;11:   0012   12 00 1C               Call Delay&lt;br /&gt;12:   0015   03                        RR A&lt;br /&gt;13:   0016   18                        DEC R0&lt;br /&gt;14:   0017   B8 00 F6              CJNE R0,#0,Kanan&lt;br /&gt;15:   001A   80 E4                  Sjmp Start&lt;br /&gt;16: ;&lt;br /&gt;17:   001C 79 FF       Delay:   mov R1,#255&lt;br /&gt;18:   001E 7A FF      Del1:     mov R2,#255&lt;br /&gt;19:   0020 DA FE      Del2:     djnz R2,del2&lt;br /&gt;20:   0022 D9 FA                   djnz R1,del1&lt;br /&gt;21:   0024 22                         ret&lt;br /&gt;22:                                        end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-6849895526768082885?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/6849895526768082885/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/bahasa-assembly.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6849895526768082885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6849895526768082885'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/bahasa-assembly.html' title='Bahasa Assembly'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-1779196366038169532</id><published>2010-06-11T10:29:00.000-07:00</published><updated>2010-06-11T10:49:51.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='7. Port Serial'/><title type='text'>Port Serial</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.6. Port Serial&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Umumnya orang selalu menganggap port seri  pada MCS51            adalah UART yang bekerja secara asinkron, jarang yang  menyadari port            seri tersebut bisa pula bekerja secara sinkron, pada hal  sebagai port            seri yang bekerja secara sinkron merupakan sarana yang baik  sekali untuk            menambah input/output bagi mikrokontroler.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="319" src="http://www.mytutorialcafe.com/image/serial4.gif" width="329" /&gt;          &lt;/div&gt;&lt;div align="center"&gt;Gambar 1.17. Komunikasi serial dengan komputer&lt;/div&gt;&lt;div align="left"&gt;&lt;script type="text/javascript"&gt;&lt;!--ch_client = "online2006";ch_type = "mpu";ch_width = 468;ch_height = 180;ch_non_contextual = 1;ch_vertical ="simple";ch_default_category = "93767";var ch_queries = new Array( );var ch_selected=Math.floor((Math.random()*ch_queries.length));if ( ch_selected &lt; ch_queries.length ) {ch_query = ch_queries[ch_selected];}//--&gt;&lt;/script&gt;           &lt;script src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;iframe allowtransparency="true" frameborder="0" height="0" hspace="0" id="ch_ad145" marginheight="0" marginwidth="0" name="ch_ad145" scrolling="no" src="about:blank" style="display: none;" vspace="0" width="0"&gt;&lt;/iframe&gt;           &amp;nbsp;         &lt;br /&gt;&lt;div align="justify"&gt;Dikenal 2 macam cara transmisi data secara  seri. Kedua            cara tersebut dibedakan oleh sinyal denyut (clock) yang  dipakai untuk            men-‘dorong’ data seri, kalau clock dikirim bersama dengan            data seri, cara tersebut dikatakan sebagai transmisi data seri  secara            sinkron. Sedangkan dalam transmisi data seri secara asinkron,  clock            tidak dikirim bersama data seri, rangkaian penerima data harus  membangkitkan            sendiri clock pendorong data seri.&lt;br /&gt;Port seri MCS51 bisa dipakai dalam 4 mode kerja yang berbeda.  Dari 4            mode tersebut, 1 mode diantaranya bekerja secara sinkron dan 3  lainnya            bekerja secara asinkron. Secara ringkas ke-empat mode kerja  tersebut            bisa dibedakan sebagai berikut:&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Mode 0 &lt;/b&gt;&lt;br /&gt;Mode ini bekerja secara sinkron, data seri dikirim dan  diterima melalui            kaki P3.0 (RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan  clock            pendorong data seri yang dibangkitkan MCS51. &lt;br /&gt;Data dikirim/diterima 8 bit sekali gus, dimulai dari bit yang  bobotnya            paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya  paling besar            (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12  frekuensi            osilator kristal.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Mode 1&lt;/b&gt;&lt;br /&gt;Mode ini dan mode-mode berikutnya bekerja secara asinkron,  data dikirim            melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD). &lt;br /&gt;Pada Mode 1 data dikirim/diterima 10 bit sekali gus, diawali  dengan            1 bit start, disusul dengan 8 bit data yang dimulai dari bit  yang bobotnya            paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada MCS51  yang berfungsi            sebagai penerima bit stop ditampung pada RB8 dalam register  SCON. Kecepatan            pengiriman data (baud rate) bisa diatur sesuai dengan  keperluan. &lt;br /&gt;Mode inilah yang umum dikenal sebagai UART (Universal  Asynchronous Receiver/Transmitter).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mode 2&lt;/b&gt;&lt;br /&gt;Data dikirim/diterima 11 bit sekali gus, diawali dengan 1 bit  start,            disusul 8 bit data yang dimulai dari bit yang bobotnya paling  kecil            (bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut,  diakhiri dengan            1 bit stop. &lt;br /&gt;Pada MCS51 yang berfungsi sebagai pengirim, bit 9 tersebut  berasal dari            bit TB8 dalam register SCON. Pada MCS52 yang berfungsi sebagai  penerima,            bit 9 ditampung pada bit RB8 dalam register SCON, sedangkan  bit stop            diabaikan tidak ditampung. Kecepatan pengiriman data (baud  rate) bisa            dipilih antara 1/32 atau 1/64 frekuensi osilator kristal.&lt;br /&gt;Mode 3 Mode ini sama dengan Mode 2, hanya saja kecepatan  pengiriman            data (baud rate) bisa diatur sesuai dengan keperluan, seperti  halnya            Mode 1.&lt;/div&gt;&lt;div align="justify"&gt;Pada mode asinkron (Mode 1, Mode 2 dan Mode  3), port            seri MCS51 bekerja secara full duplex, artinya pada saat yang  sama port            seri ini bisa mengirim data sekali gus menerima data.&lt;br /&gt;Register SBUF merupakan register penghubung port seri. Dalam  ke-empat            mode di atas, semua instruksi yang mengakibatkan perubahan isi  SBUF            akan mengakibatkan port seri mengirimkan data keluar dari  MCS51. Agar            port seri bisa menerima data, bit REN dalam register SCON  harus bernilai            ‘1’. Pada mode 0, proses penerimaan data dimulai dengan            instruksi CLR RI, sedangkan dalam mode lainnya proses  penerimaan data            diawali oleh bit start yang bernilai ‘0’. Data yang diterima            port seri dari luar MCS51, diambil dengan instruksi MOV  A,SBUF. &lt;br /&gt;Mengambil data dari SBUF dan menyimpan data ke SBUF  sesungguhnya bekerja            pada dua register yang berlainan, meskipun nama registernya  sama-sama            SBUF.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.6.1 Register-register Port Seri  MCS51&lt;/b&gt;&lt;br /&gt;MCS51 dilengkapi dengan 2 register dan beberapa bit tambahan  untuk keperluan            pemakai port seri.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="88" src="http://www.mytutorialcafe.com/image/gambar151.gif" width="478" /&gt;&lt;/div&gt;&lt;div align="justify"&gt;SBUF merupakan SFR (Special Function  Register) yang            terletak pada memori-data internal dengan nomor $99. SBUF  mempunyai            kegunaan ganda, data yang disimpan pada SBUF akan dikirim  keluar MCS51            lewat port seri, sedangkan data dari luar MCS51 yang diterima  port seri            diambil dari SBUF pula. Jadi meskipun hanya menempati satu  nomor memori-data            internal (nomor $99), sesungguhnya SBUF terdiri dari 2  register yang            berbeda.&lt;/div&gt;&lt;img height="180" src="http://www.mytutorialcafe.com/image/gambar152.gif" width="474" /&gt;&lt;br /&gt;&lt;div align="justify"&gt;SCON merupakan SFR (Special Function  Register) yang            terletak pada memori-data internal dengan nomor $98, merupakan  register            utama untuk mengatur kerja port seri MCS51. Setelah reset  semua bit            dalam SCON bernilai ‘0’.&lt;br /&gt;1. Bit SM0 dan bit SM1 (bit 7 dan bit 6 pada register SMOD)  dipakai            untuk menentukan mode kerja port seri. Setelah reset kedua bit  ini bernilai            ‘0’&lt;br /&gt;2. Bit REN (bit 4) dipakai untuk mengaktipkan kemampuan port  seri menerima            data. Pada mode 0 kaki RxD (kaki P3.0) dipakai untuk mengirim  data seri            (REN=’0’) dan juga untuk menerima data seri (REN=’1’).            Sifat ini terbawa pula pada saat port seri bekerja pada mode  1, 2 dan            3, meskipun pada mode-mode tersebut kaki RxD hanya dipakai  untuk mengirim            data, agar kaki RxD bisa dipakai untuk menerima data terlebih  dulu harus            dibuat REN=’1’. Setelah reset bit REN bernilai ‘0’.&lt;br /&gt;3. Pada mode kerja 2 dan mode kerja 3, port seri bekerja  dengan 9 bit            data, SBUF yang kapasitasnya 8 bit tidak cukup untuk keperluan  ini.            Bit ke-sembilan yang akan dikirim terlebih dulu diletakkan di  TB8 (bit            3), sedangkan bit RB8 (bit 2) merupakan bit yang dipakai untuk  menampung            bit ke-sembilan yang diterima port seri.&lt;br /&gt;4. Pada mode kerja 1, RB8 dipakai untuk menampung bit stop  yang diterima,            dengan demikian apa bila RB8 bernilai ‘1’ maka data diterima            dengan benar, sebaliknya apa bila RB8=’0’ berarti terjadi            kesalahan kerangka (framing error). &lt;br /&gt;Kalau bit SM2 (bit 5) bernilai ‘1’, jika terjadi kesalahan            kerangka, RI tidak akan menjadi ‘1’ meskipun SBUF sudah            berisi data dari port seri.&lt;br /&gt;Bit ke 9 ini bisa dipakai sebagai bit pariti, hanya saja bit  pariti            yang dikirim harus ditentukan sendiri dengan program dan  diletakkan            pada TB8, dan bit pariti yang diterima pada RB8 dipakai untuk  menentukan            integritas data secara program pula. Tidak seperti dalam UART  standard,            semuanya itu dikerjakan oleh perangkat keras dalam IC UART.&lt;br /&gt;5. Bit TI (bit 1) merupakan petanda yang setara dengan petanda  TDRE            (Transmitter Data Register Empty) yang umum dijumpai pada UART  standard.            Setelah port seri selesai mengirim data yang disimpan ke-dalam  SBUF,            bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus            di-nol-kan dengan program agar bisa dipakai untuk memantau  keadaan SBUF            dalam pengiriman data berikutnya. &lt;br /&gt;Sub-rutin SerialOut berikut dipakai untuk mengirim data seri,  bisa dipakai            untuk semua mode port seri. Baris 02 menunggu TI menjadi ‘1’,            dimaksud untuk memastikan pengiriman data sebelumnya sudah  selesai.            Data yang akan dikirim sebelumnya sudah disimpan di A, pada  baris 03            data tersebut dikirim melalui port seri dengan cara  meletakannya di            SBUF. Agar TI bisa dipakai untuk memantau keadaan SBUF pada  pengiriman            data berikutnya, pada baris 04 TI di-nol-kan.&lt;/div&gt;&lt;div align="justify"&gt;01: SerialOut:&lt;br /&gt;02: JNB TI,$ ; tunggu data sebelumnya selesai dikirim&lt;br /&gt;03: MOV SBUF,A ; kirim data baru&lt;br /&gt;04: CLR TI ; petanda ada pengiriman baru&lt;br /&gt;05: RET&lt;/div&gt;&lt;div align="justify"&gt;6. Bit RI (bit 0) merupakan petanda yang  setara dengan            petanda RDRF (Receiver Data Register Full) yang umum dijumpai  pada UART            standard. Setelah SBUF menerima data dari port seri, bit RI  akan bernilai            ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program             agar bisa dipakai untuk memantau keadaan SBUF dalam penerimaan  data            berikutnya. &lt;br /&gt;Sub-rutin SerialIn berikut dipakai untuk menerima data seri,  bisa dipakai            untuk semua mode port seri. Baris 02 menunggu RI menjadi ‘1’,            dimaksud untuk memastikan sudah ada data baru yang diterima  pada SBUF.            Pada baris 03 data pada SBUF diambil ke A. Agar RI bisa  dipakai untuk            memantau keadaan SBUF pada pengiriman data berikutnya, pada  baris 04            RI di-nol-kan.&lt;/div&gt;&lt;div align="justify"&gt;01: SerialIn:&lt;br /&gt;02: JNB RI,$ ; tunggu SBUF berisi data baru&lt;br /&gt;03: MOV A,SBUF ; ambil data&lt;br /&gt;04: CLR RI ; pentanda data sudah diambil&lt;br /&gt;05: RET&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img height="88" src="http://www.mytutorialcafe.com/image/gambar118.gif" width="483" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mode 0 port serial&lt;br /&gt;&lt;br /&gt;UART merupakan standard yang dipakai untuk komunikasi data seri dengan komputer, komunikasi data seri dengan modem dan lain sebagainya.&lt;br /&gt;Komunikasi data seri secara sinkron seperti mode 0, merupakan komunikasi data seri yang banyak dipakai untuk menghubungkan IC-IC digital dalam sebuah sistem, misalnya pada IC Serial EEPROM, cara ini belakangan menjadi makin populer karena rangkaiannya sederhana dan tidak makan tempat.&lt;br /&gt;Dalam dunia digital, dikenal 3 macam teknik transmisi data seri secara sinkron untuk keperluan di atas, yang paling terkenal adalah teknik ciptaan Philips yang dinamakan sebagai I2C (Inter IC Communication), Motorola mengenalkan teknik yang dinamakan sebagai SPI (Serial Peripheral Interface) dan National Semiconductor menciptakan MicroWire.&lt;br /&gt;Transmisi data seri yang dipakai pada mode 0, tidak sepadan dengan 3 teknik yang disebut di atas, tapi dengan perancangan yang cermat mode 0 ini bisa dihubungkan ke SPI, sehingga bisa dipakai untuk menghubungkan MCS51 dengan mikrokontroler Motorola MC68HC11.&lt;br /&gt;Sinyal data seri sinkron yang ada pada kaki P3.0 dan P3.1, sesungguhnya murni merupakan sinyal yang biasa dipakai untuk mengendalikan shift-register, dengan demikian dengan menghubungkan shift register ke port seri, bisa menambah port input maupun port output dengan mudah.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Baud Rate&lt;br /&gt;Baud rate pada mode 0 adalah tertentu: pada mode 0, Baud Rate = 1/12 x Frekuensi Osilator. Baud rate pada mode 2 bergantung pada nilai bit SMOD pada SFR PCON. Jika SMOD = 0, baud rate adalah 1/64 frekuensi osilator. Jika SMOD=1, baud rate adalah 1/32 frekuensi osilator. Penentuan baud rate mode 2 adalah sebagai berikut:&lt;br /&gt;&lt;br /&gt;Sedangkan baud rate pada mode 1 dan 3 ditentukan oleh nilai laju overflow dari Timer 1.&lt;br /&gt;&lt;br /&gt;Menggunakan Timer 1 untuk membangkitkan Baud Rate&lt;br /&gt;Ketika timer 1 digunakan untuk membangkitkan clock baud rate, baud rate pada mode 1 dan 3 adalah ditentukan oleh laju overflow timer 1 dan nilai dari SMOD. Penentuan baud rate untuk mode 1 dan 3 adalah sebagai berikut:&lt;br /&gt;&lt;br /&gt;Interupsi timer 1 harus disable pada aplikasi ini. Pada kebanyakan aplikasi, timer ini dioperasikan sebagai timer, dengan mode auto reload mode 2. Pada kasus ini baud rate diberikan dengan rumus sebagai berikut:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-1779196366038169532?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/1779196366038169532/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/port-serial.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1779196366038169532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1779196366038169532'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/port-serial.html' title='Port Serial'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-4592699867914589015</id><published>2010-06-11T10:26:00.000-07:00</published><updated>2010-06-11T10:49:16.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='6. Timer Counter'/><title type='text'>Timer Counter</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.5 Timer Counter&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Timer dan Counter merupakan sarana input yang  kurang            dapat perhatian pemakai mikrokontroler, dengan sarana input  ini mikrokontroler            dengan mudah bisa dipakai untuk mengukur lebar pulsa,  membangkitkan            pulsa dengan lebar yang pasti, dipakai dalam pengendalian  tegangan secara            PWM (Pulse Width Modulation) dan sangat diperlukan untuk  aplikasi remote            control dengan infra merah.&lt;br /&gt;Pada dasarnya sarana input yang satu ini merupakan seperangkat  pencacah            biner (binary counter) yang terhubung langsung ke saluran-data  mikrokontroler,            sehingga mikrokontroler bisa membaca kedudukan pancacah, bila  diperlukan            mikrokontroler dapat pula merubah kedudukan pencacah tersebut.  &lt;br /&gt;Seperti layaknya pencacah biner, bilamana sinyal denyut  (clock) yang            diumpankan sudah melebihi kapasitas pencacah, maka pada bagian  akhir            untaian pencacah akan timbul sinyal limpahan, sinyal ini  merupakan suatu            hal yang penting sekali dalam pemakaian pencacah. Terjadinya  limpahan            pencacah ini dicatat dalam sebuah flip-flop tersendiri.&lt;br /&gt;Di samping itu, sinyal denyut yang diumpankan ke pencacah  harus pula            bisa dikendalikan dengan mudah. Hal-hal yang dibicarakan di  atas diringkas            dalam Gambar 1.&lt;br /&gt;MCS-51 mempunyai dua buah register timer/ counter 16 bit,  yaitu Timer            0 dan Timer 1. Keduanya dapat dikonfigurasikan untuk  beroperasi sebagai            timer atau counter, seperti yang terlihat pada gambar di  bawah. &lt;/div&gt;&lt;div align="center"&gt;&lt;img height="179" src="http://www.mytutorialcafe.com/image/gambar19.gif" width="365" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.9. Konsep dasar Timer/Counter sebagai  sarana            input&lt;/div&gt;&lt;div align="justify"&gt;Sinyal denyut yang diumpankan ke pencacah  bisa dibedakan            menjadi 2 macam, yang pertama yalah sinyal denyut dengan  frekuensi tetap            yang sudah diketahui besarnya dan yang kedua adalah sinyal  denyut dengan            frekuensi tidak tetap. &lt;br /&gt;Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah  diketahui            besarnya, dikatakan pencacah tersebut bekerja sebagai timer,  karena            kedudukan pencacah tersebut setara dengan waktu yang bisa  ditentukan            dengan pasti.&lt;br /&gt;Jika sebuah pencacah bekerja dengan frekuensi yang tidak  tetap, dikatakan            pencacah tersebut bekerja sebagai counter, kedudukan pencacah  tersebut            hanyalah menyatakan banyaknya pulsa yang sudah diterima  pencacah.&lt;br /&gt;Untaian pencacah biner yang dipakai, bisa merupakan pencacah  biner menaik            (count up binary counter) atau pencacah biner menurun (count  down binary            counter).&lt;/div&gt;&lt;div align="justify"&gt;&lt;script type="text/javascript"&gt;&lt;!--ch_client = "online2006";ch_type = "mpu";ch_width = 468;ch_height = 180;ch_non_contextual = 1;ch_vertical ="simple";ch_default_category = "93767";var ch_queries = new Array( );var ch_selected=Math.floor((Math.random()*ch_queries.length));if ( ch_selected &lt; ch_queries.length ) {ch_query = ch_queries[ch_selected];}//--&gt;&lt;/script&gt; &lt;script src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;iframe allowtransparency="true" frameborder="0" height="0" hspace="0" id="ch_ad875" marginheight="0" marginwidth="0" name="ch_ad875" scrolling="no" src="about:blank" style="display: none;" vspace="0" width="0"&gt;&lt;/iframe&gt; &amp;nbsp;         &lt;br /&gt;&lt;div align="justify"&gt;&lt;b&gt;1.5.1 Fasilitas Timer/Counter &lt;/b&gt;&lt;br /&gt;Keluarga mikrokontroler MCS51, misalnya AT89C51 dan AT89Cx051,  dilengkapi            dengan dua perangkat Timer/Counter, masing-masing dinamakan  sebagai            Timer 0 dan Timer 1. Sedangkan untuk jenis yang lebih besar,  misalnya            AT89C52, mempunyai tambahan satu perangkat Timer/Counter lagi  yang dinamakan            sebagai Timer 2.&lt;br /&gt;Perangkat Timer/Counter tersebut merupakan perangkat keras  yang menjadi            satu dalam chip mikrokontroler MCS51, bagi pemakai  mikrokontroler MCS51            perangkat tersebut dikenal sebagai SFR (Special Function  Register) yang            berkedudukan sebagai memori-data internal.&lt;br /&gt;Pencacah biner untuk Timer 0 dibentuk dengan register TL0  (Timer 0 Low            Byte, memori-data internal nomor $6A) dan register TH0 (Timer 0  High            Byte, memori-data internal nomor $6C).&lt;br /&gt;Pencacah biner untuk Timer 1 dibentuk dengan register TL1  (Timer 1 Low            Byte, memori-data internal nomor $6B) dan register TH1 (Timer 1  High            Byte, memori-data internal nomor $6D).&lt;br /&gt;Pencacah biner pembentuk Timer/Counter MCS51 merupakan  pencacah biner            menaik (count up binary counter) yang mencacah dari $0000  sampai $FFFF,            saat kedudukan pencacah berubah dari $FFFF kembali ke $0000  akan timbul            sinyal limpahan.&lt;br /&gt;Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan  yang            dipakai bersama oleh Timer 0 dan Timer 1. Register tambahan  tersebut            adalah register TCON (Timer Control Register, memori-data  internal nomor            $88, bisa dialamat secara bit) dan register TMOD (Timer Mode  Register,            memori-data internal nomor $89).&lt;br /&gt;Pencacah biner Timer 0 dan 1&lt;br /&gt;TL0, TH0, TL1 dan TH1 merupakan SFR (Special Function  Register) yang            dipakai untuk membentuk pencacah biner perangkat Timer 0 dan  Timer 1.            Kapasitas keempat register tersebut masing-masing 8 bit, bisa  disusun            menjadi 4 macam Mode pencacah biner seperti terlihat dalam  Gambar 2a            sampai Gambar 2d.&lt;br /&gt;Pada Mode 0, Mode 1 dan Mode 2 Timer 0 dan Timer 1  masing-masing bekerja            sendiri, artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan  Timer 1            bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan  keperluan.            &lt;br /&gt;Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk  menyusun            sistem timer yang tidak bisa di-kombinasi lain.&lt;br /&gt;Susunan TL0, TH0, TL1 dan TH1 pada masing-masing mode adalah  sebagai            berikut:&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Mode 0 – Pencacah Biner 13 bit&lt;/b&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="62" src="http://www.mytutorialcafe.com/image/gambar110.gif" width="431" /&gt;          &lt;/div&gt;&lt;div align="center"&gt;Gambar 1.10 Mode 0 - Pencacah Biner 13 Bit&lt;/div&gt;&lt;div align="justify"&gt;Pencacah biner dibentuk dengan TLx (maksudnya  bisa            TL0 atau TL1) sebagai pencacah biner 5 bit (meskipun kapasitas  sesungguhnya            8 bit), limpahan dari pencacah biner 5 bit ini dihubungkan ke  THx (maksudnya            bisa TH0 atau TH1) membentuk sebuah untaian pencacah biner 13  bit, limpahan            dari pencacah 13 bit ini ditampung di flip-flop TFx (maksudnya  bisa            TF0 atau TF1) yang berada di dalam register TCON. &lt;br /&gt;Mode ini meneruskan sarana Timer yang ada pada mikrokontroler  MCS48            (mikrokontroler pendahulu MCS51), dengan maksud rancangan alat  yang            dibuat dengan MCS48 bisa dengan mudah diadaptasikan ke MCS51.  Mode ini            tidak banyak dipakai lagi.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Mode 1 – Pencacah Biner 16 bit&lt;/b&gt;&lt;/div&gt;&lt;img height="62" src="http://www.mytutorialcafe.com/image/gambar111.gif" width="431" /&gt;&lt;br /&gt;&lt;div align="center"&gt;Gambar 1.11 Mode 1 - Pencacah Biner 16 Bit&lt;/div&gt;&lt;div align="justify"&gt;Mode ini sama dengan Mode 0, hanya saja  register TLx            dipakai sepenuhnya sebagai pencacah biner 8 bit, sehingga  kapasitas            pencacah biner yang tersbentuk adalah 16 bit. Seiring dengan  sinyal            denyut, kedudukan pencacah biner 16 bit ini akan bergerak dari  $0000            (biner 0000 0000 0000 0000), $0001, $0002 … sampai $FFFF  (biner            1111 1111 1111 1111), kemudian melimpah kembali menjadi $0000.&lt;/div&gt;&lt;b&gt;Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang&lt;/b&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img height="125" src="http://www.mytutorialcafe.com/image/gambar112.gif" width="408" /&gt;          &lt;/div&gt;&lt;div align="center"&gt;&lt;b&gt;Gambar 1.12 Mode 2 - Pencacah Biner 8  Bit dengan            Isi Ulang&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;TLx dipakai sebagai pencacah biner 8 bit,  sedangkan            THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx,  setiap            kali kedudukan TLx melimpah (berubah dari $FF menjadi $00).  Dengan cara            ini bisa didapatkan sinyal limpahan yang frekuensinya  ditentukan oleh            nilai yang disimpan dalam TH0. &lt;/div&gt;&lt;b&gt;Mode 3 – Gabungan Pencacah Biner 16 bit dan 8 Bit&lt;/b&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img height="138" src="http://www.mytutorialcafe.com/image/gambar113.gif" width="356" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.13 Mode 3 – Gabungan Pencacah Biner  16            Bit dan 8 Bit&lt;/div&gt;&lt;div align="justify"&gt;Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai  untuk membentuk            3 untaian pencacah, yang pertama adalah untaian pencacah biner  16 bit            tanpa fasiltas pemantau sinyal limpahan yang dibentuk dengan  TL1 dan            TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner  8 bit            dengan TF0 sebagai sarana pemantau limpahan. Pencacah biner  ketiga adalah            TH0 yang dipakai sebagai pencacah biner 8 bit dengan TF1  sebagai sarana            pemantau limpahan.&lt;br /&gt;Register Pengatur Timer&lt;br /&gt;Register TMOD dan register TCON merupakan register pembantu  untuk mengatur            kerja Timer 0 dan Timer 1, kedua register ini dipakai bersama  oleh Timer            0 dan Timer 1.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="106" src="http://www.mytutorialcafe.com/image/gambar114.gif" width="479" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.14 Denah susunan bit dalam register  TMOD&lt;/div&gt;&lt;div align="justify"&gt;Register TMOD dibagi menjadi 2 bagian secara  simitris,            bit 0 sampai 3 register TMOD (TMOD bit 0 .. TMOD bit 3)  dipakai untuk            mengatur Timer 0, bit 4 sampai 7 register TMODE (TMOD bit 4 ..  TMOD            bit 7) dipakai untuk mengatur Timer 1, pemakaiannya sebagai  berikut            :&lt;br /&gt;1. Bit M0/M1 dipakai untuk menentukan Mode Timer seperti yang  terlihat            dalam Tabel di Gambar 3a.&lt;br /&gt;2. Bit C/T* dipakai untuk mengatur sumber sinyal denyut yang  diumpankan            ke pencacah biner. Jika C/T*=0 sinyal denyut diperoleh dari  osilator            kristal yang frekuensinya sudah dibagi 12, sedangkan jika  C/T*=1 maka            sinyal denyut diperoleh dari kaki T0 (untuk Timer 0) atau kaki  T1 (untuk            Timer 1).&lt;br /&gt;3. Bit GATE merupakan bit pengatur saluran sinyal denyut. Bila  bit GATE=0            saluran sinyal denyut hanya diatur oleh bit TRx (maksudnya  adalah TR0            atau TR1 pada register TCON). Bila bit GATE=1 kaki INT0 (untuk  Timer            0) atau kaki INT1 (untuk Timer 1) dipakai juga untuk mengatur  saluran            sinyal denyut (lihat Gambar 4).&lt;/div&gt;&lt;img height="111" src="http://www.mytutorialcafe.com/image/gambar115.gif" width="480" /&gt;&lt;br /&gt;&lt;div align="center"&gt;Gambar 1.15 Denah susunan bit dalam register  TCON&lt;/div&gt;&lt;div align="justify"&gt;Register TCON dibagi menjadi 2 bagian, 4 bit  pertama            (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai  untuk            keperluan mengatur kaki INT0 dan INT1, ke-empat bit ini  dibahas dibagian            lain.&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;MSB&lt;/div&gt;&lt;/td&gt;             &lt;td colspan="6"&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;LSB&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TF1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TR1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TF0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TR0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IE1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IT1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IE0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IT0&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td width="14%"&gt;&lt;div align="center"&gt;BIT&lt;/div&gt;&lt;/td&gt;             &lt;td width="16%"&gt;&lt;div align="center"&gt;SYMBOL&lt;/div&gt;&lt;/td&gt;             &lt;td width="70%"&gt;&lt;div align="center"&gt;FUNCTION&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.7&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TF1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Timer 1 overflow flag. Set by  hardware on                  Timer/Counter overflow. Cleared by hardware when  processor vector                  to interrupt routine, or clearing the bit in software.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.6&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TR1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Timer 1 Run control bit . Set/  cleared by                  software to turn Timer/ Counter on/off&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.5&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TF0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Timer 0 overflow flag. Set by  hardware on                  Timer/Counter overflow. Cleared by hardware when  processor vector                  to interrupt routine, or clearing the bit in software.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.4&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;TR0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Timer 1 Run control bit . Set/  cleared by                  software to turn Timer/ Counter on/off&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.3&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IE1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Interrupt 1 Edge flag. Set by  hardware when                  external interrupt edge detected. Cleared when interrupt  processed.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.2&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IT1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Interrupt 1 type control bit. Set/  cleared                  by software to specefy falling edge/ low level trigerred  external                  interupts&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IE0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Interrupt 0 Edge flag. Set by  hardware when                  external interrupt edge detected. Cleared when interrupt  processed.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TCON.0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;IT0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;Interrupt 0 type control bit. Set/ cleared by software  to specefy                falling edge/ low level trigerred external interupts&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;Sisa 4 bit dari register TCON (bit 4..bit 7)  dibagi            menjadi 2 bagian secara simitris yang dipakai untuk mengatur  Timer0/Timer            1, sebagai berikut:&lt;br /&gt;1. Bit TFx (maksudnya adalah TF0 atau TF1) merupakan bit  penampung limpahan            (lihat Gambar 2), TFx akan menjadi ‘1’ setiap kali pencacah            biner yang terhubung padanya melimpah (kedudukan pencacah  berubah dari            $FFFF kembali menjadi $0000). Bit TFx di-nol-kan dengan  istruksi CLR            TF0 atau CLR TF1. Jika sarana interupsi dari Timer 0/Timer 1  dipakai,            TRx di-nol-kan saat MCS51 menjalankan rutin layanan interupsi  (ISR –            Interupt Service Routine).&lt;br /&gt;2. Bit TRx (maksudnya adalah TR0 atau TR1) merupakan bit  pengatur saluran            sinyal denyut, bila bit ini =0 sinyal denyut tidak disalurkan  ke pencacah            biner sehingga pencacah berhenti mencacah. Bila bit GATE pada  register            TMOD =1, maka saluran sinyal denyut ini diatur bersama oleh  TRx dan            sinyal pada kaki INT0/INT1 (lihat Gambar 4).&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;b&gt;1.5.2 Mengatur Timer&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Gambar 4 merupakan bagan susunan rangkaian  yang bisa            terjadi pada Timer 1 secara lengkap, digambarkan pula  hubungan-hubungan            semua register pembentuk dan pengatur Timer 1. Gambar ini  berlaku pula            untuk Timer 0.&lt;br /&gt;Dalam pemakaian sesungguhnya, rangkaian yang dipakai hanya  sebagian            dari rangkaian lengkap tersebut, sesuai dengan keperluan  sistem yang            dibangun. Rangkaian yang dikehendaki dibentuk dengan mengatur  register            TMODE, sedangkan kerja dari Timer dikendalikan lewat register  TCON.&lt;/div&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;img height="310" src="http://www.mytutorialcafe.com/image/timer1.gif" width="461" /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.16. Diagram blok timer/ counter&lt;/div&gt;&lt;div align="left"&gt;&lt;script type="text/javascript"&gt;&lt;!--ch_client = "online2006";ch_type = "mpu";ch_width = 468;ch_height = 180;ch_non_contextual = 1;ch_vertical ="simple";ch_default_category = "96394";var ch_queries = new Array( );var ch_selected=Math.floor((Math.random()*ch_queries.length));if ( ch_selected &lt; ch_queries.length ) {ch_query = ch_queries[ch_selected];}//--&gt;&lt;/script&gt; &lt;script src="http://scripts.chitika.net/eminimalls/amm.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;&lt;iframe allowtransparency="true" frameborder="0" height="0" hspace="0" id="ch_ad803" marginheight="0" marginwidth="0" name="ch_ad803" scrolling="no" src="about:blank" style="display: none;" vspace="0" width="0"&gt;&lt;/iframe&gt;&amp;nbsp;         &lt;br /&gt;&lt;div align="justify"&gt;Setelah MCS51 di-reset register TMOD bernilai  $00,            hal ini berarti :&lt;/div&gt;&lt;div align="justify"&gt;1. bit C/T* =’0’, menurut Gambar 4 keadaan            ini membuat saklar S1 ke posisi atas, sumber sinyal denyut  berasal dari            osilator kristal yang frekuensinya sudah dibagi 12, pencacah  biner yang            dibentuk dengan TL1 dan TH1 berfungsi sebagai timer. Jika  sistem yang            dirancang memang menghendaki Timer 1 bekerja sebagai timer  maka bit            C/T* tidak perlu diatur lagi. &lt;br /&gt;Tapi jika sistem yang dirancang menghendaki agar Timer 1  bekerja sebagai            counter untuk menghitung pulsa yang masuk lewat kakai T1  (P3.5), maka            posisi saklar S1 harus dikebawahkan dengan membuat bit C/T*  menjadi            ‘1’.&lt;br /&gt;2. bit GATE=’0’, hal ini membuat output gerbang OR selalu            ‘1’ tidak dipengaruhi keadaan ‘0’ atau ‘1’            pada kaki INT1 (P3.3). Dalam keadaan semacam ini, saklar S2  hanya dikendalikan            lewat bit TR1 dalam register TCON. Jika TR1=’1’ saklar S2            tertutup sehingga sinyal denyut dari S1 disalurkan ke sistem  pencacah            biner, aliran sinyal denyut akan dihentikan jika TR=’0’.            &lt;br /&gt;Sebaliknya jika bit GATE=’1’, output gerbang OR akan mengikuti             keadaan kaki INT1, saat INT1=’0’ apa pun keadaan bit TR1            output gerbang AND selalu =’0’ dan saklar S1 selalu terbuka,            agar saklar S1 bisa tertutup kaki INT1 dan bit TR1 harus =’1’            secara bersamaan.Jika sistem yang dirancang menghendaki kerja  dari timer/counter            dikendalikan dari sinyal yang berasal dari luar chip, maka bit  GATE            harus dibuat menjadi ‘1’&lt;br /&gt;3. bit M1 dan M0=’0’, berarti TL1 dan TH1 disusun menjadi            pencacah biner 13 bit (Mode 0), jika dikehendaki Timer 1  bekerja pada            mode 1 seperti terlihat dalam Gambar 4, maka bit M1 harus  dibuat menjadi            ‘0’ dan bit M0 menjadi ‘1’.&lt;br /&gt;Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan  mengendalikan            Timer seperti terlihat dalam contoh-contoh berikut :&lt;br /&gt;Setelah reset TMOD bernilai $00, berarti Timer 1 bekerja  sebagai pencacah            biner 13 bit, sumber sinyal denyut dari osilator kristal atau  Timer            1 bekerja sebagai ‘timer’, bit GATE =’0’ berarti            kaki INT1 tidak berpengaruh pada rangkaian sehingga Timer 1  hanya dikendalikan            dari bit TR1.&lt;br /&gt;Dalam pemakaian biasanya dipakai pencacah biner 16 bit, untuk  keperluan            itu instruksi yang diperlukan untuk mengatur TMOD adalah :&lt;/div&gt;&lt;div align="justify"&gt;MOV TMOD,#010000&lt;/div&gt;&lt;div align="justify"&gt;Catatan dalam instruksi di atas tanda ‘#’            menyatakan bagian di belakangnya adalah bilangan konstan yang  akan diisikan            ke TMOD, ‘%’ merupakan awalan yang menandakan bahwa bilangan            di belakangnya adalah bilangan biner. Penulisan dengan  bilangan biner            semacam ini, memudahkan untuk mengenali dengan cepat bit-bit  apa saja            yang diisikan ke TMOD.&lt;br /&gt;Bilangan biner 010000 diisikan ke TMOD, berakibat bit 7  TMOD (bit            GATE) bernilai ‘0’, bit 6 (bit C/T*) bernilai ‘0’,            bit 5 dan 4 (bit M1 dan M0) bernilai ‘01’, ke-empat bit            ini dipakai untuk mengatur Timer 1, sehingga Timer 1 bekerja  sebagai            timer dengan pencacah biner 16 bit yang dikendalikan hanya  dengan TR1.&lt;br /&gt;Jika dikehendaki pencacah biner dipakai sebagai counter untuk  mencacah            jumlah pulsa yang masuk lewat kaki T1 (P3.5), instruksinya  menjadi :&lt;/div&gt;&lt;div align="justify"&gt;MOV TMOD,#%01010000&lt;/div&gt;&lt;div align="justify"&gt;Perbedaannya dengan instruksi di atas adalah  dalam            instruksi ini bit 6 (bit C/T*) bernilai ‘1’. Selanjutnya            jika diinginkan sinyal dari perangkat keras di luar chip MCS51  bisa            ikut mengendalikan Timer 1, instruksi pengatur Timer 1 akan  menjadi            :&lt;/div&gt;&lt;div align="justify"&gt;MOV TMOD,#%11010000&lt;/div&gt;&lt;div align="justify"&gt;Dalam hal ini bit 7 (bit GATE) bernilai ‘1’.&lt;br /&gt;Setelah mengatur konfigurasi Timer 0 seperti di atas, pencacah  biner            belum mulai mencacah sebelum diperintah dengan instruksi :&lt;br /&gt;SETB TR1&lt;br /&gt;Perlu diingatkan jika bit GATE = ‘1’, selama kaki INT1  bernilai            ‘0’ pencacah biner belum akan mencacah. Untuk menghentikan            proses pencacahan, dipakai instruksi&lt;br /&gt;CLR TR1&lt;br /&gt;Di atas hanya dibahas Timer 1 saja, tata canya untuk Timer 0  persis            sama. Yang perlu diperhatikan adalah register TMOD dipakai  untuk mengatur            Timer 0 dan juga Timer 1, sedangkan TMOD tidak bisa dialamati  secara            bit (non bit addressable) sehingga jika jika kedua Timer  dipakai, pengisian            bit-bit dalam register TMOD harus dipikirkan sekali gus untuk  Timer            0 dan Timer 1.&lt;br /&gt;Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses  pencacahan,            terletak di dalam register TCON (memori-data internal nomor  $88) yang            bisa dialamati secara bit (bit addressable). Sehingga TR0 dan  TR1 bisa            diatur secara terpisah (dengan perintah SETB atau CLR), tidak  seperti            mengatur TMOD yang harus dilakukan secara bersamaan.&lt;br /&gt;Demikian pula bit penampung limpahan pencacah biner TF0 dan  TF1, juga            terletak dalam register TCON yang masing-masing bisa  di-monitor sendiri.&lt;/div&gt;&lt;div align="justify"&gt;Sebagimana ditunjukkan pada gambar 1.11  mikrokontroller            dapat beraksi sebagai timer atau counter, sesuai dengan  kebutuhan. Perhatikan            pada saklar sebelah kiri dan kanan pada diagram blok tersebut.  Mikrokontroller            akan berfungsi sebagai timer ketika saklar diposisikan ke atas  dan sebaliknya            akan berfungsi sebagai counter bila saklar diposisikan ke  bawah, dengan            mengontrol bit C/T pada register TMOD. Posisi saklar sebelah  kanan,            bergantung pada bit GATE (register TMOD), TR1 ( register TCON0  dan INT1.&lt;/div&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-4592699867914589015?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/4592699867914589015/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/timer-counter.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/4592699867914589015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/4592699867914589015'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/timer-counter.html' title='Timer Counter'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-8417453287079892466</id><published>2010-06-11T10:24:00.000-07:00</published><updated>2010-06-11T10:48:43.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='5. Interupsi'/><title type='text'>Interupsi</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.4. Interupsi&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;8051 mempunyai 5 buah sumber interupsi. Dua  buah interupsi            eksternal, dua buah interupsi timer dan sebuah interupsi port  serial.&lt;br /&gt;Meskipun memerlukan pengertian yang lebih mendalam,  pengetahuan mengenai            interupsi sangat membantu mengatasi masalah pemrograman  mikroprosesor/mikrokontroler            dalam hal menangani banyak peralatan input/output. Pengetahuan  mengenai            interupsi tidak cukup hanya dibahas secara teori saja,  diperlukan contoh            program yang konkrit untuk memahami.&lt;br /&gt;Saat kaki RESET pada IC mikroprosesor/mikrokontroler menerima  sinyal            reset (pada MCS51 sinyal tersebut berupa sinyal ‘1’ sesaat,            pada prosesor lain umumnya merupakan sinyal ‘0’ sesaat),            Program Counter diisi dengan sebuah nilai. Nilai tersebut  dinamakan            sebagai vektor reset (reset vector), merupakan nomor awal  memori-program            yang menampung program yang harus dijalankan. &lt;br /&gt;Pembahasan di atas memberi gambaran bahwa proses reset  merupakan peristiwa            perangkat keras (sinyal reset diumpankan ke kaki Reset) yang  dipakai            untuk mengatur kerja dari perangkat lunak, yakni menentukan  aliran program            prosesor (mengisi Program Counter dengan vektor reset).&lt;br /&gt;Program yang dijalankan dengan cara reset, merupakan program  utama bagi            prosesor.&lt;/div&gt;&lt;div align="justify"&gt;Peristiwa perangkat keras yang dipakai untuk  mengatur            kerja dari perangkat lunak, tidak hanya terjadi pada proses  reset, tapi            terjadi pula dalam proses interupsi. &lt;br /&gt;Dalam proses interupsi, terjadinya sesuatu pada perangkat  keras tertentu            dicatat dalam flip-flop khusus, flip-flop tersebut sering  disebut sebagai            ‘petanda’ (flag), catatan dalam petanda tersebut diatur            sedemikian rupa sehingga bisa merupakan sinyal permintaan  interupsi            pada prosesor. Jika permintaan interupsi ini dilayani  prosesor, Program            Counter akan diisi dengan sebuah nilai. Nilai tersebut  dinamakan sebagai            vektor interupsi (interrupt vector), yang merupakan nomor awal  memori-program            yang menampung program yang dipakai untuk melayani permintaan  interupsi            tersebut.&lt;br /&gt;Program yang dijalankan dengan cara interupsi, dinamakan  sebagai program            layanan interupsi (ISR - Interrupt Service Routine). Saat  prosesor menjalankan            ISR, pekerjaan yang sedang dikerjakan pada program utama  sementara ditinggalkan,            selesai menjalankan ISR prosesor kembali menjalankan program  utama,            seperti yang digambarkan dalam Gambar 1.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="122" src="http://www.mytutorialcafe.com/image/interupsi18.gif" width="460" /&gt;          &lt;/div&gt;&lt;div align="center"&gt;&lt;b&gt;Gambar 1.8 Bagan kerja prosesor  melayani interupsi&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Sebuah prosesor bisa mempunyai beberapa  perangkat keras            yang merupakan sumber sinyal permintaan interupsi,  masing-masing sumber            interupsi dilayani dengan ISR berlainan, dengan demikian  prosesor mempunyai            beberapa vektor interupsi untuk memilih ISR mana yang dipakai  melayani            permintaan interupsi dari berbagai sumber. Kadang kala sebuah  vektor            interupsi dipakai oleh lebih dari satu sumber interupsi yang  sejenis,            dalam hal semacam ini ISR bersangkutan harus menentukan  sendiri sumber            interupsi mana yang harus dilayani saat itu.&lt;br /&gt;Jika pada saat yang sama terjadi lebih dari satu permintaan  interupsi,            prosesor akan melayani permintaan interupsi tersebut menurut  perioritas            yang sudah ditentukan, selesai melayani permintaan interupsi  perioritas            yang lebih tinggi, prosesor melayani permintaan interupsi  berikutnya,            baru setelah itu kembali mengerjakan program utama.&lt;br /&gt;Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi  permintaan interupsi            lain, jika permintaan interupsi yang datang belakangan ini  mempunyai            perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal  dulu,            prosesor melayani permintaan yang perioritas lebih tinggi,  selesai melayani            interupsi perioritas tinggi prosesor meneruskan ISR semula,  baru setelah            itu kembali mengerjakan program utama. Hal ini dikatakan  sebagai interupsi            bertingkat (nested interrupt), tapi tidak semua prosesor  mempunyai kemampuan            melayani interupsi secara ini.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.4.1. Sumber interupsi MCS51&lt;/b&gt;&lt;br /&gt;Seperti terlihat dalam Gambar 2, AT89C51 mempunyai 6 sumber  interupsi,            yakni Interupsi External (External Interrupt) yang berasal  dari kaki            INT0 dan INT1, Interupsi Timer (Timer Interrupt) yang berasal  dari Timer            0 maupun Timer 1, Interupsi Port Seri (Serial Port Interrupt)  yang berasal            dari bagian penerima dan bagian pengirim Port Seri.&lt;br /&gt;Di samping itu AT89C52 mempunyai 2 sumber interupsi lain,  yakni Interupsi            Timer 2 bersumber dari Timer 2 yang memang tidak ada pada  AT89C51.&lt;/div&gt;&lt;div align="justify"&gt;Bit IE0 (atau bit IE1) dalam TCON merupakan  petanda            (flag) yang menandakan adanya permintaan Interupsi Eksternal.  Ada 2            keadaan yang bisa meng-aktip-kan petanda ini, yang pertama  karena level            tegangan ‘0’ pada kaki INT0 (atau INT1), yang kedua karena            terjadi transisi sinyal ‘1’ menjadi ‘0’ pada            kaki INT0 (atau INT1). Pilihan bentuk sinyal ini ditentukan  lewat bit            IT0 (atau bit IT1) yang terdapat dalam register TCON. &lt;br /&gt;1. Kalau bit IT0 (atau IT1) =’0’ maka bit IE0 (atau IE1)            dalam TCON menjadi ‘1’ saat kaki INT0=’0’. &lt;br /&gt;2. Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1)            dalam TCON menjadi ‘1’ saat terjadi transisi sinyal ‘1’            menjadi ‘0’ pada kaki INT0.&lt;br /&gt;Menjelang prosesor menjalankan ISR dari Interupsi Eksternal,  bit IE0            (atau bit IE1) dikembalikan menjadi ‘0’, menandakan permintaan             Interupsi Eksternal sudah dilayani. Namun jika permintaan  Interupsi            Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0            (atau IT1), dan level tegangan pada kaki tersebut saat itu  masih =’0’            maka bit IE0 (atau bit IE1) akan segera menjadi ‘1’ lagi!          &lt;/div&gt;&lt;div align="justify"&gt;Bit TF0 (atau bit TF1) dalam TCON merupakan  petanda            (flag) yang menandakan adanya permintaan Interupsi Timer, bit  TF0 (atau            bit TF1) menjadi ‘1’ pada saat terjadi limpahan pada pencacah            biner Timer 0 (atau Timer 1).&lt;br /&gt;Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit  TF0 (atau            bit TF1) dikembalikan menjadi ‘0’, menandakan permintaan            Interupsi Timer sudah dilayani.&lt;/div&gt;&lt;div align="justify"&gt;Interupsi port seri terjadi karena dua hal,  yang pertama            terjadi setelah port seri selesai mengirim data 1 byte,  permintaan interupsi            semacam ini ditandai dengan petanda (flag) TI=’1’. Yang            kedua terjadi saat port seri telah menerima data 1 byte secara  lengkap,            permintaan interupsi semacam ini ditandai dengan petanda  (flag) RI=’1’.&lt;br /&gt;Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang            prosesor menjalankan ISR dari Interupsi port seri, karena  petanda tersebut            masih diperlukan ISR untuk menentukan sumber interupsi berasal  dari            TI atau RI. Agar port seri bisa dipakai kembali setelah  mengirim atau            menerima data, petanda-petanda tadi harus di-nol-kan lewat  program.&lt;/div&gt;&lt;div align="justify"&gt;Petanda permintaan interupsi (IE0, TF0, IE1,  TF1, RI            dan TI) semuanya bisa di-nol-kan atau di-satu-kan lewat  instruksi, pengaruhnya            sama persis kalau perubahan itu dilakukan oleh perangkat  keras. Artinya            permintaan interupsi bisa diajukan lewat pemrograman, misalnya  permintaan            interupsi eksternal IT0 bisa diajukan dengan instruksi SETB  IE0.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.4.2 Mengaktifkan Interupsi&lt;/b&gt;&lt;br /&gt;Semua sumber permintaan interupsi yang di bahas di atas,  masing-masing            bisa di-aktip-kan atau di-nonaktip-kan secara tersendiri lewat  bit-bit            yang ada dalam register IE (Interrupt Enable Register).&lt;br /&gt;Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan  INT1, bit            ET0 dan ET1 untuk mengatur interupsi timer 0 dan timer 1, bit  ES untuk            mengatur interupsi port seri, seperti yang digambarkan dalam  Gambar            2. Di samping itu ada pula bit EA yang bisa dipakai untuk  mengatur semua            sumber interupsi sekali gus.&lt;br /&gt;Setelah reset, semua bit dalam register IE bernilai ‘0’,            artinya sistem interupsi dalam keadaan non-aktip. Untuk  mengaktipkan            salah satu sistem interupsi, bit pengatur interupsi  bersangkutan diaktipkan            dan juga EA yang mengatur semua sumber interupsi. Misalnya  instruksi            yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah  SETB            EX0 disusul dengan SETB EA.&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;MSB&lt;/div&gt;&lt;/td&gt;             &lt;td colspan="6"&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;LSB&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;EA&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;ES&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;ET1&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;EX1&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;ET0&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;EX0&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td width="11%"&gt;&lt;div align="center"&gt;&lt;b&gt;BIT&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="18%"&gt;&lt;div align="center"&gt;&lt;b&gt;SYMBOL&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="71%"&gt;&lt;div align="center"&gt;&lt;b&gt;FUNCTION&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.7&lt;/td&gt;             &lt;td&gt;EA&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Disables all interrupts. If EA=0,  no interrupt                  will be acknowledged. If EA=1, each interrupt source is  individually                  enabled or disabled by setting or clearing its enable  bit.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.6&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.5&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.4&lt;/td&gt;             &lt;td&gt;ES&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables the Serial Port  interrupt.                  If ES=0, the Serial Port interrupt is disabled.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.3&lt;/td&gt;             &lt;td&gt;ET1&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables the Timer 1  Overflow                  interrupt. If ET1=0, the Timer 1 interrupt is disabled.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.2&lt;/td&gt;             &lt;td&gt;EX1&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables External  Interrupt 1.                  If EX1=0, External interrupt 1 is disabled.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.1&lt;/td&gt;             &lt;td&gt;ET0&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables the Timer 0  Overflow                  interrupt. If ET0=0, the Timer 0 interrupt is disabled.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;IE.0&lt;/td&gt;             &lt;td&gt;EX0&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables External  interrupt 0.                  If EX0=0, External interrupt 0 is disabled.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;1.4.3 Vektor Interupsi&lt;/b&gt;&lt;br /&gt;&lt;div align="justify"&gt;Saat MCS51 menanggapi permintaan interupsi,  Program            Counter diisi dengan sebuah nilai yang dinamakan sebagai  vektor interupsi,            yang merupakan nomor awal dari memori-program yang menampung  ISR untuk            melayani permintaan interupsi tersebut. Vektor interupsi itu  dipakai            untuk melaksanakan inststuksi LCALL yang diaktipkan secara  perangkat            keras.&lt;br /&gt;Vektor interupsi untuk interupsi eksternal INT0 adalah $0003,  untuk            interupsi timer 0 adalah $000B, untuk interupsi ekternal INT1  adalah            $0013, untuk interupsi timer 1 adalah $001B dan untuk  interupsi port            seri adalah $0023.&lt;br /&gt;Jarak vektor interupsi satu dengan lainnya sebesar 8, atau  hanya tersedia            8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek  saja, tidak            lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis  pada memori-program            yang disediakan untuknya. ISR yang lebih panjang dari 8 byte  ditulis            ditempat lain, tapi pada memori-program yang ditunjuk oleh  vektor interupsi            diisikan instruksi JUMP ke arah ISR bersangkutan&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Source&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Vector Address&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IE0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0003H&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TF0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;000BH&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IE1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0013H&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;TF1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;001BH&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;RI + TI&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0023H&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;&lt;b&gt;1.4.4 Tingkatan Perioritas&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Masing-masing sumber interupsi bisa  ditempatkan pada            dua tingkatan perioritas yang berbeda. Pengaturan tingkatan  perioritas            isi dilakukan dengan bit-bit yang ada dalam register IP  (Interrupt Priority).&lt;br /&gt;Bit PX0 dan PX1 untuk mengatur tingkatan perioritas interupsi  eksternal            INT0 dan INT1, bit PT0 dan PT1 untuk mengatur interupsi timer 0  dan            timer 1, bit PS untuk mengatur interupsi port seri, seperti  yang digambarkan            dalam Gambar 2.&lt;br /&gt;Setelah reset, semua bit dalam register IP bernilai ‘0’,            artinya semua sumber interupsi ditempatkan pada tingkatan  tanpa perioritas.            Masing-masing sumber interupsi bisa ditempatkan pada tingkatan  perioritas            utama dengan cara men-‘satu’-kan bit pengaturnya. Misalnya            interupsi timer 0 bisa ditempatkan pada tingkatan perioritas  utama dengan            instruksi SETB PT1.&lt;br /&gt;Sebuah ISR untuk interupsi tanpa perioritas bisa diinterupsi  oleh sumber            interupsi yang berada dalam tingkatan perioritas utama. Tapi  interupsi            yang berada pada tingkatan perioritas yang sama, tidak dapat  saling            meng-interupsi.&lt;br /&gt;Jika 2 permintaan interupsi terjadi pada saat yang bersamaan,  sedangkan            kedua interupsi tersebut terletak pada tingkatan perioritas  yang berlainan,            maka interupsi yang berada pada tingkatan perioritas utama  akan dilayani            terlebih dulu, setelah itu baru melayani interupsi pada  tingkatan tanpa            perioritas.&lt;br /&gt;Jika kedua permintaan tersebut bertempat pada tingkatan  perioritas yang            sama, perioritas akan ditentukan dengan urutan sebagai berikut  : interupsi            eksternal INT0, interupsi timer 0, interupsi ekternal INT1,  interupsi            timer 1 dan terakhir adalah interupsi port seri.&lt;br /&gt;Bagan Lengkap Sistem Interupsi MCS51&lt;br /&gt;Meskipun sistem interupsi MCS51 termasuk sederhana  dibandingkan dengan            sistem interupsi MC68HC11 buatan Motorola, tapi karena  menyangkut 5            sumber interupsi yang masing-masing harus diatur secara  tersendiri,            tidak mudah untuk mengingat semua masalah tersebut, terutama  pada saat            membuat program sering dirasakan sangat merepotkan  membolak-balik buku            untuk mengatur masing-masing sumber interupsi tersebut.&lt;br /&gt;Gambar 2 menggambarkan sistem interupsi MCS51 selangkapnya,  berikut            dengan masing-masing bit dalam register-register SFR (Special  Function            Register) yang dipakai untuk mengatur masing-masing sumber  interupsi.            &lt;br /&gt;Saklar yang digambarkan dalam Gambar 2 mewakili bit dalam  register yang            harus diatur untuk mengendalikan sumber interupsi, kotak  bergambar bendera            kecil merupakan flag (petanda) dalam register yang mencatat  adanya permintaan            interupsi dari masing-masing sumber interupsi. Kedudukan  saklar dalam            gambar tersebut menggambarkan kedudukan awal setelah MCS51  di-reset.&lt;br /&gt;Gambar ini sangat membantu saat penulisan program menyangkut  interupsi            MCS51.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Interrupt Priority Register ( IP )&lt;/b&gt;&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;MSB&lt;/td&gt;             &lt;td colspan="6"&gt;&lt;/td&gt;             &lt;td&gt;LSB&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;PS&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;PT1&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;PX1&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;PT0&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;PX0&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td width="12%"&gt;&lt;div align="center"&gt;&lt;b&gt;BIT&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="16%"&gt;&lt;div align="center"&gt;&lt;b&gt;SYMBOL&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="72%"&gt;&lt;div align="center"&gt;&lt;b&gt;FUNCTION&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.7&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;-&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.6&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;-&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.5&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;-&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;-&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.4&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;PS&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Defines the Serial Port interrupt  priority                  level. PS=1 programs it to the higher priority level.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.3&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;PT1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Defines the Timer 1 interrupt  priority level.                  PT1=1 programs it to the higher priority level.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.2&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;PX1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Defines the External Interrupt 1  priority                  level. PX1=1 programs it to the higher priority level.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;PT0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Enables or disables the Timer 0  interrupt                  priority level. PT0=1 programs it to the higher priority  level.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;IP.0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;PX0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Defines the External Interrupt 0  priority                  level. PX0=1 programs it to the higher priority level.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-8417453287079892466?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/8417453287079892466/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/interupsi.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/8417453287079892466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/8417453287079892466'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/interupsi.html' title='Interupsi'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-6282764441970677331</id><published>2010-06-11T10:13:00.000-07:00</published><updated>2010-06-11T10:46:45.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3. Pengelamatan'/><title type='text'>Pengelamatan</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.2. Pengalamatan&lt;/b&gt;&lt;br /&gt;Mode pengalamatan, mengacu bagaimana anda mengalamati suatu  lokasi memori            tertentu Mode pengalamatan pada set instruksi 8051 adalah  ditunjukkan            sebagai berikut&lt;/div&gt;&lt;div align="justify"&gt;Immediate Addressing MOV A,#20h &lt;br /&gt;Direct Addressing MOV A,30h &lt;br /&gt;Indirect Addressing MOV A,@R0 &lt;br /&gt;External Direct MOVX A,@DPTR &lt;br /&gt;Code Indirect MOVC A,@A+DPTR &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.2.1 Immediate Addressing &lt;/b&gt;&lt;br /&gt;Immediate addressing dinamakan seperti ini, karena nilai yang  akan disimpan            didalam memori, secara langsung berada dalam kode.&lt;/div&gt;&lt;pre align="justify"&gt;org 0h&lt;br /&gt;start:MOV A,#20h; put constant 20 into Acc&lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Start:MOV 70h,#0h; put constant 0 into RAM 70h&lt;br /&gt;      MOV 71h,#1h; &lt;br /&gt;      MOV 72h,#2h; &lt;br /&gt;      end&lt;br /&gt;;&lt;br /&gt;      Org 0h&lt;br /&gt;Start:MOV DPTR,#1234h;put constant 1234 into DPTR&lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Start:MOV PSW,#0; Select register bank 0&lt;br /&gt;      MOV R0,#0; put 0 into register 0&lt;br /&gt;      MOV R1,#1; put 1 into register 1&lt;br /&gt;      MOV R2,#2; put 2 into register 2&lt;br /&gt;      MOV R3,#3; put 3 into register 3&lt;br /&gt;      MOV R4,#4; put 4 into register 4&lt;br /&gt;      MOV R5,#5; put 5 into register 5&lt;br /&gt;      MOV R6,#6; put 6 into register 6&lt;br /&gt;      MOV R7,#7; put 7 into register 7&lt;br /&gt;      end&lt;br /&gt;      ;&lt;/pre&gt;&lt;pre align="justify"&gt;org 0h&lt;br /&gt;Start:MOV PSW,#8; Select register bank 1&lt;br /&gt;      MOV R0,#0; put 0 into register 0&lt;br /&gt;      MOV R1,#1; put 1 into register 1&lt;br /&gt;      MOV R2,#2; put 2 into register 2&lt;br /&gt;      MOV R3,#3; put 3 into register 3&lt;br /&gt;      MOV R4,#4; put 4 into register 4&lt;br /&gt;      MOV R5,#5; put 5 into register 5&lt;br /&gt;      MOV R6,#6; put 6 into register 6&lt;br /&gt;      MOV R7,#7; put 7 into register 7&lt;br /&gt;      end&lt;/pre&gt;&lt;div align="justify"&gt;Immediate addressing adalah pengalamatan  yang sangat            cepat karena nilai yang akan diloadkan berada didalam  instruksi tersebut.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.2.2. Direct Addressing &lt;/b&gt;&lt;br /&gt;Disebut direct addressing karena nilai yang akan disimpan  didalam memori,            diperoleh secara langsung dari memori yang lain.&lt;/div&gt;&lt;pre align="justify"&gt;org 0h&lt;br /&gt;Start:MOV A,30h; &lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Start:Mov 70h,#1;put constant 1 into RAM 70h&lt;br /&gt;      Mov A, 70h;copy RAM 70 content into Acc&lt;br /&gt;      Mov A,#0 ;put constant 0 into Acc &lt;br /&gt;      Mov 90h,A ;copy Acc content into RAM 90h&lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Inbyte equ 70h&lt;br /&gt;Port1 equ 90h&lt;br /&gt;      Org 0h&lt;br /&gt;Start:Mov Inbyte,#3;put constant 3 into RAM 70h&lt;br /&gt;      Mov A,Inbyte ;copy RAM 70h content into Acc&lt;br /&gt;      Mov A,#0 ;Clear accumulator&lt;br /&gt;      Mov Port1,A ;copy Acc content into RAM 90h&lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Mov DPTR,#Character&lt;br /&gt;Start:Mov A, #0&lt;br /&gt;      Inc DPTR&lt;br /&gt;      Movc A, @A+DPTR&lt;br /&gt;      Mov R0,A&lt;br /&gt;      Sjmp Start&lt;br /&gt;Character:&lt;br /&gt;      DB 0,1,2,3,4,5,6,7,8,9&lt;/pre&gt;&lt;div align="justify"&gt;&lt;b&gt;1.2.3 Indirect Addressing &lt;/b&gt;&lt;br /&gt;Indirect addressing adalah mode pengalamatan yang sangat  ampuh, yang            memberikan fleksibelitas dalam hal transfer data. Indirect  addressing            juga satu-satunya cara untuk mengakses 128 byte ekstra dari  internal            RAM yang ditemukan pada keluarga 8052. &lt;/div&gt;&lt;div align="justify"&gt;MOV A,@R0 &lt;/div&gt;&lt;div align="justify"&gt;Instruksi ini menyebabkan 8051 menganalisa  nilai dari            register R0. 8051 kemudian akan mengambil data dari akumulator  dengan            nilai yang berasal dari alamat RAM internal yang ditunjukkan  oleh R0.            Sebagai contoh, misal R0 akan digunakan untuk menandai alamat  RAM 40h            yang berisi data 67h. Ketika instruksi diatas, dieksekusi maka  8051            akan melihat nilai dari R0, yang berisi 40h, dan mengirimkan  isi RAM            40h (dalam hal ini mempunyai nilai 67h) ke akumulator.&lt;/div&gt;&lt;div align="justify"&gt;MOV R0,#99h ;&lt;br /&gt;MOV @R0,#01h;&lt;/div&gt;&lt;div align="justify"&gt;Instruksi tersebut adalah tidak valid.  Karena indirect            addressing selalu mengacu ke RAM internal, dua instruksi ini  akan menulis            nilai 01 ke RAM internal alamat 99h pada 8052. Pada 8051  instruksi tersebut            akan menghasilkan hasil yang tak terdifinisi, karena 8051  hanya mempunyai            internal RAM 128 byte &lt;/div&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Start:Mov PSW, #0 ; choose register bank 0&lt;br /&gt;      Mov R0, #78h; put constant 78h into R0&lt;br /&gt;      Mov @R0, #1 ; put contanta 1 into 78h&lt;br /&gt;      end&lt;/pre&gt;&lt;pre align="justify"&gt;Org 0h&lt;br /&gt;Start:Mov PSW,#0; pilih register bank 1&lt;br /&gt;      Mov R0,90h; copy RAM 90h content into R0&lt;br /&gt;      Mov @R0,#1; put constant 1 into 90h&lt;br /&gt;      End&lt;br /&gt;      ; &lt;br /&gt;         &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-6282764441970677331?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/6282764441970677331/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/pengelamatan.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6282764441970677331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/6282764441970677331'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/pengelamatan.html' title='Pengelamatan'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-3061917222525143212</id><published>2010-06-11T10:04:00.000-07:00</published><updated>2010-06-11T10:44:13.739-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2. Organisasi memori'/><title type='text'>Organisasi Memori</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;1.1. Organisasi Memori&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;Semua divais 8051 mempunyai ruang alamat  yang terpisah            untuk memori program dan memori data, seperti yang ditunjukkan  pada            gambar1.1. dan gambar 1.2. Pemisahan secara logika dari memori  program            dan data, mengijinkan memori data untuk diakses dengan  pengalamatan            8 bit, yang dengan cepat dapat disimpan dan dimanipulasi  dengan CPU            8 bit. Selain itu, pengalamatan memori data 16 bit dapat juga  dibangkitkan            melalui register DPTR. Memori program ( ROM, EPROM dan FLASH )  hanya            dapat dibaca, tidak ditulis. Memori program dapat mencapai  sampai 64K            byte. Pada 89S51, 4K byte memori program terdapat didalam  chip. Untuk            membaca memori program eksternal mikrokontroller mengirim  sinyal PSEN            ( program store enable ) &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="323" src="http://www.mytutorialcafe.com/image/intro1.gif" width="434" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.1. Diagram blok mikrokontroller 8051&lt;/div&gt;&lt;div align="justify"&gt;Memori data ( RAM ) menempati ruang alamat  yang terpisah            dari memori program. Pada keluarga 8051, 128 byte terendah  dari memori            data, berada didalam chip. RAM eksternal (maksimal 64K byte).  Dalam            pengaksesan RAM Eksternal, mikrokontroller mingirimkan sinyal  RD ( baca            ) dan WR ( tulis ).&lt;/div&gt;&lt;img height="281" src="http://www.mytutorialcafe.com/image/intro2.gif" width="236" /&gt;&lt;img height="285" src="http://www.mytutorialcafe.com/image/intro3.gif" width="236" /&gt;&lt;br /&gt;&lt;div align="center"&gt;Gambar 1.2. Arsitektur Memori Mikrokontroller  8051&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;1.1.1. Program Memory&lt;/b&gt;&lt;br /&gt;Gambar 1.2. menunjukkan suatu peta bagian bawah dari memori  program.            Setelah reset CPU mulai melakukan eksekusi dari lokasi 0000H.  Sebagaimana            yang ditunjukkan pada gambar 1.3, setiap interupsi ditempatkan  pada            suatu lokasi tertentu pada memori program. Interupsi  menyebabkan CPU            untuk melompat ke lokasi dimana harus dilakukan suatu layanan  tertentu.            &lt;br /&gt;Interupsi Eksternal 0, sebagi contoh, menempatai lokasi 0003H.  Jika            Interupsi Eksternal 0 akan digunakan, maka layanan rutin harus  dimulai            pada lokasi 0003H. Jika interupsi ini tidak digunakan, lokasi  layanan            ini dapat digunakan untuk berbagai keperluan sebagai Memori  Program.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="188" src="http://www.mytutorialcafe.com/image/intro4.gif" width="228" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;Gambar 1.3. Peta Interupsi mikrokontroller  8051&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;b&gt;1.1.2 Memory Data&lt;/b&gt;&lt;br /&gt;Pada gambar 1.2. menunjukkan ruang memori data internal dan  eksternal            pada keluarga 8051. CPU membangkitkan sinyal RD dan WR yang  diperlukan            selama akses RAM eksternal. Memori data internal terpetakan  seperti            pada gambar 1.2. Ruang memori dibagi menjadi tiga blok, yang  diacukan            sebagai 128 byte lower, 128 byte upper dan ruang SFR.&lt;br /&gt;Alamat memori data internal selalu mempunyai lebar data satu  byte. Pengalamatan            langsung diatas 7Fh akan mengakses satu alamat memori, dan  pengalamatan            tak langsung diatas 7Fh akan mengakses satu alamat yang  berbeda. Demikianlah            pada gambar 1.4 menunjukkan 128 byte bagian atas dan ruang SFR  menempati            blok alamat yang sama, yaitu 80h sampai dengan FFh, yang  sebenarnya            mereka terpisah secara fisik&lt;br /&gt;128 byte RAM bagian bawah dikelompokkan lagi menjadi beberapa  blok,            seperti yang ditunjukkan pada gambar 1.5. 32 byte RAM paling  bawah,            dikelompokkan menjadi 4 bank yang masing-masing terdiri dari 8  register.            Instruksi program untuk memanggil register-register ini  dinamai sebagai            R0 sampai dengan R7. Dua bit pada Program Status Word (PSW)  dapat memilih            register bank mana yang akan digunakan. Penggunaan register R0  sampai            dengan R7 ini akan membuat pemrograman lebih efisien dan  singkat, bila            dibandingkan pengalamatan secara langsung.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="251" src="http://www.mytutorialcafe.com/image/intro5.gif" width="289" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.4. Memori data internal&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="329" src="http://www.mytutorialcafe.com/image/intro6.gif" width="388" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.5. RAM internal 128 byte paling bawah&lt;/div&gt;&lt;div align="justify"&gt;Semua pada lokasi RAM 128 byte paling bawah  dapat diakses            baik dengan menggunakan pengalamatan langsung dan tak  langsung. 128            byte paling atas hanya dapat diakses dengan cara tak langsung,  gambar            1.6.&lt;/div&gt;&lt;div align="center"&gt;&lt;img height="232" src="http://www.mytutorialcafe.com/image/intro7.gif" width="172" /&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.6. RAM internal 128 byte paling atas&lt;/div&gt;&lt;b&gt;1.1.3. Special Function Register&lt;/b&gt;&lt;br /&gt;&lt;div align="justify"&gt;Sebuah peta memori yang disebut ruang special  function            register ( SFR ) ditunjukkan pada gambar berikut. Perhatikan  bahwa tidak            semua alamat-alamat tersebut ditempati, dan alamat-alamat yang  tak ditempati            tidak diperkenankan untuk diimplementasikan. Akses baca untuk  alamat            ini akan menghasilkan data random, dan akses tulis akan  menghasilkan            efek yang tak jelas.&lt;br /&gt;Accumulator&lt;br /&gt;ACC adalah register akumulator. Mnemonik untuk instruksi  spesifik akumulator            ini secara sederhana dapat disingkat sebagai A.&lt;br /&gt;Register B &lt;br /&gt;Register B digunakan pada saat opersi perkalian dan pembagian.  Selain            untuk keperluan tersebut diatas, register ini dapat digunakan  untuk            register bebas.&lt;br /&gt;Program Status Word&lt;br /&gt;Register PSW terdiri dari informasi status dari program yang  secara            detail ditunjukkan pada Tabel 1.1. &lt;br /&gt;Stack Pointer&lt;br /&gt;Register Pointer stack mempunyai lebar data 8 bit. Register  ini akan            bertambah sebelum data disimpan selama eksekusi push dan call.  Sementara            stack dapat berada disembarang tempat RAM. Pointer stack  diawali di            alamat 07h setelah reset. Hal ini menyebabkan stack untuk  memulai pada            lokasi 08h.&lt;br /&gt;Data Pointer&lt;br /&gt;Pointer Data (DPTR) terdiri dari byte atas (DPH) dan byte  bawah (DPL).            Fungsi ini ditujukan untuk menyimpan data 16 bit. Dapat  dimanipulasi            sebagai register 16 bit atau dua 8 bit register yang berdiri  sendiri.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;img height="415" src="http://www.mytutorialcafe.com/image/intro8.gif" width="463" /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="center"&gt;Gambar 1.7. Peta SFR&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ports 0, 1, 2 dan 3&lt;/div&gt;&lt;div align="justify"&gt;P0, P1, P2 dan P3 adalah SFR yang ditempati  oleh Port            0, 1, 2 dan 3. Menulis suatu logika 1 terhadap sebuah bit dari  sebuah            port SFR ( P0, P1, P2 atau P3) menyebabkan pin output port  yang bersesesuaian            akan berada dalam kondisi logika high ‘1’. Dan sebaliknya&lt;/div&gt;&lt;div align="justify"&gt;Buffer Data Serial &lt;br /&gt;Buffer serial sesungguhnya merupakan dua buah register yang  terpisah,            buffer pemancar dan buffer penerima. Ketika data diisikan ke  SBUF, maka            akan menuju ke buffer pemancar dan ditahan untuk proses  transmisi. Ketika            data diambil dari SBUF, maka akan berasal dari buffer  penerima.&lt;/div&gt;&lt;div align="justify"&gt;Registers Timer&lt;br /&gt;Pasangan register ( TH0, TL0) dan (TH1, TL1) adalah register  pencacah            16 bit untuk Timer/ Counter 0 dan 1, masing-masing.&lt;/div&gt;&lt;div align="justify"&gt;Register Control &lt;br /&gt;Registers IP, IE, TMOD, TCON, SCON, dan PCON terdiri dari bit  control            dan status. &lt;/div&gt;&lt;div align="justify"&gt;Program Status Word&lt;br /&gt;PSW atau Program Status Word berisi bit-bit status yang  berkaitan dengan            kondisi atau keadaan CPU mikrokontroler pada saat tersebut.  PSW berada            dalam lokasi ruang SFR ( perhatikan pada gambar 1.9, dengan  lokasi alamat            D0h ). Pada PSW ini kita dapat memantau beberapa status yang  meliputi:            carry bit, auxiliary carry ( untuk operasi BCD ), dua bit  pemilih bank            register, flag overflow, sebuah bit paritas dan dua flag  status yang            bisa didifinisikan sendiri. Bit carry dapat juga anda guakan  pada keperluan            operasi aritmatika, juga bisa digunakan sebagai universal  akumulator            untuk beberapa operasi boolean.&lt;/div&gt;&lt;div align="justify"&gt;Table 1.2.1 Program Status Word&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;MSB&lt;/div&gt;&lt;/td&gt;             &lt;td colspan="6"&gt;&lt;br /&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;LSB&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;CY&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;AC&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;F0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;RS1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;RS0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;OV&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;-&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;P&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;&amp;nbsp; &lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td width="14%"&gt;&lt;div align="center"&gt;&lt;b&gt;BIT&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="17%"&gt;&lt;div align="center"&gt;&lt;b&gt;SYMBOL&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td width="69%"&gt;&lt;div align="center"&gt;&lt;b&gt;FUNCTION&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.7&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;CY&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;Carry flag.&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.6&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;AC&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;Auxilliary Carry flag. (For BCD operations.)&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.5&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;F0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;Flag 0. (Available to the user for general purposes.)&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.4&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;RS1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Register bank select control bit 1.&lt;br /&gt;Set/cleared by software to determine working register  bank. (See                  Note.)&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.3&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;RS0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Register bank select control bit 0.&lt;br /&gt;Set/cleared by software todetermine working register  bank. (See                  Note.)&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.2&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;OV&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;Overflow flag.&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;-&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;User-definable flag.&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;PSW.0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;P&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="justify"&gt;Parity flag.&lt;br /&gt;Set/cleared by hardware each instruction cycle to  indicate an                  odd/even number of “one” bits in the Accumulator,                  i.e., even parity.&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;Bit RS0 dan RS1 dapat digunakan untuk memilih  satu            dari empat bank register sebagaimana ditunjukkan pada tabel  19.2. Bit            paritas dapat digunakan untuk mengetahuai jumlah logika '1'  pada akumulator:            P=1 bila pada akumulator mempunyai logika '1' yang jumlahnya  ganjil,            dan P=0 jika akumulator mempunyai logika '1' yang jumlahnya  genap. Dua            bit yang lain PSW1 dan PSW5 dapat digunakan untuk berbagai  macam tujuan&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Tabel 1. 2. Alamat rekening bank&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;RS1&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;RS0&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Bank &lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Address RAM&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;00 h - 07 h&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;08 h - 0F h&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;2&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;10 h - 17 h&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;3&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;18 h - 1F h&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://www.mytutorialcafe.com/mikrokontroller%20organisasi%20memori.htm"&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-3061917222525143212?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/3061917222525143212/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/organisasi-memori.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3061917222525143212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3061917222525143212'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/organisasi-memori.html' title='Organisasi Memori'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-5426778677155797834</id><published>2010-06-11T09:57:00.000-07:00</published><updated>2010-06-11T10:43:05.700-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1. Kata Pengantar'/><title type='text'>TUTORIAL MIKROKONTROLER</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;b&gt;KATA PENGANTAR&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Tutorial ini diberikan secara gratis, untuk para mahasiswa dan praktisi elektronik atau bidang yang berhubungan, gunakan teknologi mikrokontroller ini secara bijaksana untuk keperluan peningkatan ilmu dan pengetahuan dan kesejahteraan umat manusia.&lt;br /&gt;&lt;br /&gt;Sebarkan informasi ini ke siapapun juga secara bebas dan gratis. Akhirnya bila ada kesalahan pada tutorial ini, saya mengucapkan maaf yang sebesarnya, SEMOGA BERMANFAAT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MIKROKONTROLLER AT89S51&lt;br /&gt;Mikrokontroller 8 bit dengan 4K byte ISP&lt;br /&gt;( In System Programmable )&lt;br /&gt;&lt;br /&gt;FITUR:&lt;br /&gt;1. Kompatibel dengan produk MCS-51&lt;br /&gt;2. 4K byte In System Programmable Flas Memory&lt;br /&gt;Dapat dilakukan pemrograman 1000 tulis dan hapus&lt;br /&gt;3. Range catu daya 4,0V s/d 5,0V&lt;br /&gt;4. Operasi statis: 0 Hz s/d 33 MHz&lt;br /&gt;5. Tiga Tingkat Program memory lock&lt;br /&gt;6. 128 x 8 bit RAM internal&lt;br /&gt;7. 32 Programmable Jalur I/O&lt;br /&gt;8. Dua 16 bit Timer/ Counter&lt;br /&gt;9. Enam Sumber Interupsi&lt;br /&gt;10. Full Duplex Serial Channel&lt;br /&gt;11. Low Power Idle dan Mode Power Down&lt;br /&gt;12. Watcht Dog Timer&lt;br /&gt;13. Dula Data Pointer&lt;br /&gt;14. Power Off Flag&lt;br /&gt;15. Fast Programming Time&lt;br /&gt;16. Fleksibel ISP programming&lt;br /&gt;&lt;br /&gt;DISKRIPSI&lt;br /&gt;AT89S51 mempunyai konsumsi daya rendah, mikrokontroller 8-bit CMOS dengan 4K byte momori Flash ISP ( in system programmable/ dapat diprogram didalam sistem).Divais ini dibuat dengan teknologi memori nonvolatile kerapatan tinggi dan kompatibel dengan standart industri 8051, set instruksi dan pin keluaran. Flash yang berada didalam chip memungkinkan memori program untuk diprogram ulang pada saat chip didalam sistem atau dengan menggunakan&lt;br /&gt;Programmer memori nonvolatile konvensional. Dengan mengkombinasikan CPU 8 bit yang serbaguna dengan flash ISP pada chip, ATMEL 89S51 merupakan mikrokontroller yang luarbiasa yang memberikan fleksibelitas yang tinggi dan penyelesaian biaya yang efektif untuk beberapa aplikasi kontrol.&lt;br /&gt;&lt;br /&gt;AT89S51 memberikan fitur-fitur standar sebagai berikut: 4K byte Flash, 128 byte RAM, 32 jalur I/O, Timer Wachtdog, dua data pointer, dua 16 bit timer/ counter, lima vektor interupsi dua level, sebuah port serial full dupleks, oscilator internal, dan rangkaian clock. Selain itu AT89S51 didisain dengan logika statis untuk operasi dengan frekuensi sampai 0 Hz dan didukung dengan mode penghematan daya. Pada mode idle akan menghentikan CPU sementara RAM, timer/ counter, serial port dan sistem interupsi tetap berfungsi. Mode Power Down akan tetap menyimpan isi dari RAM tetapi akan membekukan osilator, menggagalkan semua fungsi chip sampai interupsi eksternal atau reset hardware ditemui.&lt;br /&gt;&lt;b&gt;DISKRIPSI PIN &lt;/b&gt;         &lt;br /&gt;&lt;div align="justify"&gt;&lt;b&gt;VCC&lt;/b&gt; Tegangan Supply&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;GND&lt;/b&gt; Ground&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Port 0&lt;br /&gt;&lt;/b&gt;Port 0, merupakan port I/O 8 bit open drain dua arah.  Sebagai            sebuah port, setiap pin dapat mengendalikan 8 input TTL.  Ketika logika            “1” dituliskan ke port 0, maka port dapat digunakan sebagai            input dengan high impedansi.&lt;br /&gt;Port 0 dapat juga dikonfigurasikan untuk multipleksing dengan  address/            data bus selama mengakses memori program atau data eksternal.  Pada mode            ini P0 harus mempunyai pull up&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Port 1&lt;/b&gt;&lt;br /&gt;Port 1 merupakan port I/0 8 bit dua arah dengan internal pull  up. Buffer            output port 1 dapat mengendalikan empat TTL input. Ketika  logika “1”            dituliskan ke port 1, maka port ini akan mendapatkan internal  pull up            dan dapat digunakan sebagai input. &lt;br /&gt;Port 1 juga menerima alamat byte rendah selama pemrograman dan  verifikasi            Flash&lt;/div&gt;&lt;div align="justify"&gt;Port Pin Fungsi Alternatif&lt;br /&gt;P1.5 MOSI ( digunakan untu In System Programming )&lt;br /&gt;P1.6 MISO ( digunakan untu In System Programming )&lt;br /&gt;P1.7 SCK ( digunakan untu In System Programming )&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Port 2&lt;/b&gt;&lt;br /&gt;Port 2 merupakan port I/O 8 bit dua arah dengan internal pull  up. Buffer            output port 2 dapat mengendalikan empat TTL input. Ketika  logika “1”            dituliskan ke port 2, maka port ini akan mendapatkan internal  pull up            dan dapat digunakan sebagai input. &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Port 3&lt;/b&gt;&lt;br /&gt;Port 3 merupakan port I/O 8 bit dua arah dengan internal pull  up. Buffer            output port 3 dapat mengendalikan empat TTL input. Ketika  logika “1”            dituliskan ke port 3, maka port ini akan mendapatkan internal  pull up            dan dapat digunakan sebagai input. &lt;br /&gt;Port 3 juga melayani berbagai macam fitur khusus, sebagaimana  yang ditunjukkan            pada tabel berikut:&lt;/div&gt;&lt;table align="center" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Port Pin&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;&lt;div align="center"&gt;&lt;b&gt;Fungsi Alternatif&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.0&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;RXD ( port serial input )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.1&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;TXD ( port serial output )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.2&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;INT0 ( interupsi eksternal 0 )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.3&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;INT1 ( interupsi eksternal 1 )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.4&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;T0 ( input eksternal timer 0 )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.5 &lt;/div&gt;&lt;/td&gt;             &lt;td&gt;T1 ( input eksternal timer 1 )&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.6&lt;/div&gt;&lt;/td&gt;             &lt;td&gt;WR ( write strobe memori data eksternal)&lt;/td&gt;           &lt;/tr&gt;&lt;tr&gt;              &lt;td&gt;&lt;div align="center"&gt;P3.7 &lt;/div&gt;&lt;/td&gt;             &lt;td&gt;WR ( read strobe memori program eksternal)&lt;/td&gt;           &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div align="justify"&gt;&lt;b&gt;RST&lt;/b&gt;&lt;br /&gt;Input Reset. Logika high “1” pada pin ini untuk dua siklus            mesin sementara oscilator bekerja maka akan mereset devais.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;ALE/ PROG &lt;/b&gt;&lt;br /&gt;Address Latch Enale ( ALE ) merupakan suatu pulsa output untuk  mengunci            byte low dari alamat selama mengakses memori eksternal. Pin  ini juga            merupakan input pulsa pemrograman selama pemrograman flash (  paralel            )&lt;br /&gt;Pada operasi normal, ALE mengeluarkan suatu laju konstan 1/6  dari frekuensi            oscilator dan dapat digunakan untuk pewaktu eksternal.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;PSEN&lt;/b&gt;&lt;br /&gt;Program Store Enable merupakan strobe read untu memori program  eksternal.&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;EA/ VPP&lt;/b&gt;&lt;br /&gt;Eksternal Access Enable. EA harus di hubungkan ke GND untuk  enable devais,            untuk memasuki memori program eksternal mulai alamat 0000H s/d  FFFFH.&lt;br /&gt;EA harus dihubungkan ke VCC untuk akses memori program  internal&lt;br /&gt;Pin ini juga menerima tegangan pemrogramman ( VPP) selama  pemrograman            Flash&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;XTAL1&lt;br /&gt;&lt;/b&gt; Input untuk penguat oscilator inverting dan input  untuk rangkaian            internal clock&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;XTAL2&lt;br /&gt;&lt;/b&gt; Output dari penguat oscilator inverting.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-5426778677155797834?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/5426778677155797834/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/kata-pengantar-tutorial-ini-diberikan.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/5426778677155797834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/5426778677155797834'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/kata-pengantar-tutorial-ini-diberikan.html' title='TUTORIAL MIKROKONTROLER'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-3297937351755665323</id><published>2010-06-11T09:10:00.000-07:00</published><updated>2010-06-11T09:12:47.464-07:00</updated><title type='text'>Tutorial Membuat Efek Grunge pada Foto</title><content type='html'>&lt;h1&gt;Tutorial Membuat Efek Grunge pada Foto            &lt;/h1&gt;&lt;div class="post-info"&gt;&lt;a href="http://ilmuphotoshop.com/2010/05/06/tutorial-membuat-efek-grunge-pada-foto/#comments" title="Comment on Tutorial Membuat Efek Grunge pada Foto"&gt;&lt;br /&gt;&lt;/a&gt;  &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.asianbrain.com/index.php?aff_code=229470" target="_blank"&gt;&lt;/a&gt;&lt;/div&gt;Sebenernya membuat efek grunge ini gampang banget.. intinya cuman  gabung-gabungin gambar aja…&lt;br /&gt;gak percaya ??&lt;br /&gt;Ini nih bukti nya :&lt;br /&gt;sebelumnya… saya pake gambar-gambar ini untuk membantu pembuatan efek&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/batu.jpg"&gt;&lt;img alt="batu" class="size-thumbnail wp-image-2414 alignleft" height="150" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/batu-150x150.jpg" title="batu" width="150" /&gt;&lt;/a&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/oldpaper.jpg"&gt;&lt;img alt="oldpaper" class="size-thumbnail wp-image-2429 alignleft" height="150" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/oldpaper-150x150.jpg" title="oldpaper" width="150" /&gt;&lt;/a&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/tembok.jpg"&gt; &lt;img alt="tembok" class="size-thumbnail wp-image-2430 alignleft" height="150" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/tembok-150x150.jpg" title="tembok" width="150" /&gt;&lt;/a&gt;&lt;br /&gt;Klik untuk download gambar-gambar diatas.&lt;br /&gt;Sekarang ke inti nya yah..&lt;br /&gt;Buka gambar yang mau diedit&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-1.jpg"&gt;&lt;img alt="efek grunge 1" class="alignnone size-full wp-image-2416" height="326" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-1.jpg" title="efek grunge 1" width="470" /&gt;&lt;/a&gt;&lt;br /&gt;duplikat layer dengan menekan ctrl + J&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-2.jpg"&gt;&lt;img alt="efek grunge 2" class="alignnone size-full wp-image-2417" height="329" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-2.jpg" title="efek grunge 2" width="253" /&gt;&lt;/a&gt;&lt;br /&gt;Klik Image &amp;gt; adjustment &amp;gt; desaturate atau &lt;span style="text-decoration: line-through;"&gt;ketan eh&lt;/span&gt; tekan di keyboard  CTRL + Shift + U untuk membuat foto jadi hitam putih.&lt;br /&gt;Opacity nya kurangi jadi 50%&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-3.jpg"&gt;&lt;img alt="efek grunge 3" class="alignnone size-full wp-image-2418" height="331" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-3.jpg" title="efek grunge 3" width="456" /&gt;&lt;/a&gt;&lt;br /&gt;sekarang tekan ctrl +J lagi di layer background untuk menduplikat  layer background. pindahin hasil duplikat ke paling atas&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-4.jpg"&gt;&lt;img alt="efek grunge 4" class="alignnone size-full wp-image-2419" height="323" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-4.jpg" title="efek grunge 4" width="317" /&gt;&lt;/a&gt;&lt;br /&gt;Klik Filter &amp;gt; Other &amp;gt; Highpass&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-5.jpg"&gt;&lt;img alt="efek grunge 5" class="alignnone size-full wp-image-2420" height="457" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-5.jpg" title="efek grunge 5" width="341" /&gt;&lt;/a&gt;&lt;br /&gt;Ubah layer style menjadi Vivid light&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-6.jpg"&gt;&lt;img alt="efek grunge 6" class="alignnone size-full wp-image-2421" height="252" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-6.jpg" title="efek grunge 6" width="235" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/"&gt;edit foto&lt;/a&gt; dasar udah selesai..  sekarang kita main-main dengan gambar yang lain..&lt;br /&gt;buka gambar oldpaper.jpg&lt;br /&gt;drag ke foto yang tadi diedit&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-7.jpg"&gt;&lt;img alt="efek grunge 7" class="alignnone size-full wp-image-2422" height="409" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-7.jpg" title="efek grunge 7" width="459" /&gt;&lt;/a&gt;&lt;br /&gt;atur sedemikian rupa.. atau di pas- in aja setiap ujung nya..&lt;br /&gt;sekarang ubah layer style menjadi menjadi COlor burn&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-8.jpg"&gt;&lt;img alt="efek grunge 8" class="alignnone size-full wp-image-2423" height="298" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-8.jpg" title="efek grunge 8" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;sekarang buka juga batu.jpg .. drag gambar texture batu ke dalam foto  yang lagi diedit&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-9.jpg"&gt;&lt;img alt="efek grunge 9" class="alignnone size-full wp-image-2424" height="394" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-9.jpg" title="efek grunge 9" width="419" /&gt;&lt;/a&gt;&lt;br /&gt;Klik add vector mask..&lt;br /&gt;lalu klik brush tool (warna hitam) warnai bagian muka nya.. biar  nanti keliatan jelas..&lt;br /&gt;ubah layer style menjadi multiply&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-10.jpg"&gt;&lt;img alt="efek grunge 10" class="alignnone size-full wp-image-2425" height="484" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-10.jpg" title="efek grunge 10" width="398" /&gt;&lt;/a&gt;&lt;br /&gt;hasilnya kayak gini&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-11.jpg"&gt;&lt;img alt="efek grunge 11" class="alignnone size-full wp-image-2426" height="315" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-11.jpg" title="efek grunge 11" width="294" /&gt;&lt;/a&gt;&lt;br /&gt;sekarang buka lagi gambar bantuan terakhir.. gambar tembok.jpg.. Drag  ke dalam foto dan atur seperti gambar dibawah&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-12.jpg"&gt;&lt;img alt="efek grunge 12" class="alignnone size-full wp-image-2427" height="337" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-12.jpg" title="efek grunge 12" width="495" /&gt;&lt;/a&gt;&lt;br /&gt;Ubah Opacity nya jadi 50%&lt;br /&gt;Klik add vector mask .. warnai dengan brush tool seperti gambar.&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-13.jpg"&gt;&lt;img alt="efek grunge 13" class="alignnone size-full wp-image-2428" height="351" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/efek-grunge-13.jpg" title="efek grunge 13" width="292" /&gt;&lt;/a&gt;&lt;br /&gt;Hasil akhir nya :&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/chandra.jpg"&gt;&lt;img alt="chandra" class="alignnone size-full wp-image-2415" height="329" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/chandra.jpg" title="chandra" width="497" /&gt;&lt;/a&gt;&lt;br /&gt;Gampang kan ya ?&lt;br /&gt;selamat mencoba!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-3297937351755665323?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/3297937351755665323/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/tutorial-membuat-efek-grunge-pada-foto.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3297937351755665323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3297937351755665323'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/tutorial-membuat-efek-grunge-pada-foto.html' title='Tutorial Membuat Efek Grunge pada Foto'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-3975988541559076806</id><published>2010-06-11T08:26:00.000-07:00</published><updated>2010-06-11T08:50:23.657-07:00</updated><title type='text'>Efek dua TOne dalam 1 foto</title><content type='html'>erhubung resources web ini sudah menipis.. jadi saya posting yang  ringan-ringan aja..&amp;nbsp; &lt;img alt=":)" class="wp-smiley" src="http://ilmuphotoshop.com/wp-includes/images/smilies/icon_smile.gif" /&gt;  yang penting ada ilmu yang keluar dari  saya..&amp;nbsp; Mudah-mudahan Awal bulan Juni hosting nya sudah pindah, maunya  sih jadi lebih baik dari sekarang.. &lt;br /&gt;Oke deh.. sekarang langsung aja ke tutorial…&lt;br /&gt;Buka foto yang mau diedit..&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-1.jpg"&gt;&lt;img alt="duo tone 1" class="alignnone size-full wp-image-2481" height="514" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-1.jpg" title="duo tone 1" width="333" /&gt;&lt;/a&gt;&lt;br /&gt;Duplikat layer background dengan menekan CTRL + J ( buat perbandingan  aja nantinya )&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-2.jpg"&gt;&lt;img alt="duo tone 2" class="alignnone size-full wp-image-2482" height="213" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-2.jpg" title="duo tone 2" width="269" /&gt;&lt;/a&gt;&lt;br /&gt;Klik add new fill and adjustment layer. pilih channel mixer&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-3.jpg"&gt;&lt;img alt="duo tone 3" class="alignnone size-full wp-image-2483" height="291" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-3.jpg" title="duo tone 3" width="251" /&gt;&lt;/a&gt;&lt;br /&gt;Setting channel mixer nya.. Settingan di gambar gak mutlak yah..  semua tergantung dari pencahayaan dan warna foto. jadi sesuai selera  aja.&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-4.jpg"&gt;&lt;img alt="duo tone 4" class="alignnone size-full wp-image-2489" height="544" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-4.jpg" title="duo tone 4" width="494" /&gt;&lt;/a&gt;&lt;br /&gt;sekarang klik lagi add new fill and adjustment layer pilih selective &lt;span style="text-decoration: line-through;"&gt;Kolor &lt;/span&gt;color&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-5.jpg"&gt;&lt;img alt="duo tone 5" class="alignnone size-full wp-image-2484" height="325" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-5.jpg" title="duo tone 5" width="246" /&gt;&lt;/a&gt;&lt;br /&gt;Setting selective color nya… sekali lagi, ini gak mutlak.. jadi harus  dicoba-coba sendiri.. biar dapet gambar yang sesuai dengan selera&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-6.jpg"&gt;&lt;img alt="duo tone 6" class="alignnone size-full wp-image-2492" height="608" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-6.jpg" title="duo tone 6" width="490" /&gt;&lt;/a&gt;&lt;br /&gt;Tekan ctrl + J untuk menduplikat layer 1 (gambar asli ) lalu pindahin  jadi layer paling atas&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-7.jpg"&gt;&lt;img alt="duo tone 7" class="alignnone size-full wp-image-2485" height="336" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-7.jpg" title="duo tone 7" width="246" /&gt;&lt;/a&gt;&lt;br /&gt;Buat kotak dengan &lt;a href="http://ilmuphotoshop.com/2008/03/19/tool-tool-photoshopsambungan/"&gt;rectangle  marquee tool&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-8.jpg"&gt;&lt;img alt="duo tone 8" class="alignnone size-full wp-image-2486" height="481" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-8.jpg" title="duo tone 8" width="458" /&gt;&lt;/a&gt;&lt;br /&gt;Klik select &amp;gt; Inverse lalu tekan delete atau Klik edit &amp;gt; CUT&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-9.jpg"&gt;&lt;img alt="duo tone 9" class="alignnone size-full wp-image-2487" height="297" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-9.jpg" title="duo tone 9" width="255" /&gt;&lt;/a&gt;&lt;br /&gt;Klik kanan layer yang paling atas tadi ( layer gambar copy ) &amp;gt;  blending Options&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-10.jpg"&gt;&lt;img alt="duo tone 10" class="alignnone size-full wp-image-2488" height="380" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-10.jpg" title="duo tone 10" width="394" /&gt;&lt;/a&gt;&lt;br /&gt;Klik Image &amp;gt; Adjustment &amp;gt; Channel Mixer .. Setting seperti  dibawah .. Saya mohon sekaliiiii lagi buat ngomong.. ini gak mutalk eh  mutlak ( tuh jadi salah nulis ).. tergantung gambar nya yah..cari-cari  sendiri style visual masing-masing.&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-11.jpg"&gt;&lt;img alt="duo tone 11" class="alignnone size-full wp-image-2490" height="576" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-11.jpg" title="duo tone 11" width="499" /&gt;&lt;/a&gt;&lt;br /&gt;Hasilnya kayak begini :&lt;br /&gt;&lt;a href="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-12.jpg"&gt;&lt;img alt="duo tone 12" class="alignnone size-full wp-image-2491" height="523" src="http://ilmuphotoshop.com/wp-content/uploads/2010/05/duo-tone-12.jpg" title="duo tone 12" width="342" /&gt;&lt;/a&gt;&lt;br /&gt;Selamat mencoba..&lt;br /&gt;Kalo kurang jelas saya kasih videonya nih :&lt;br /&gt;&lt;p&gt;&lt;center&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="src" value="http://www.youtube.com/v/b5ADBoUL7Tw" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/b5ADBoUL7Tw"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;/p&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-3975988541559076806?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/3975988541559076806/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/efek-dua-tone-dalam-1-foto.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3975988541559076806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/3975988541559076806'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/06/efek-dua-tone-dalam-1-foto.html' title='Efek dua TOne dalam 1 foto'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-1268895164646231</id><published>2010-05-25T07:04:00.003-07:00</published><updated>2010-05-25T07:04:02.255-07:00</updated><title type='text'>MTA TV Online</title><content type='html'>&lt;CENTER&gt;&lt;object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" width="400" height="360" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"&gt;&lt;param name="url" value="mms://111.68.113.198/mtatv" /&gt;  &lt;embed type="application/x-mplayer2" width="400" height="360" src="mms://111.68.113.198/mtatv"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/CENTER&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-1268895164646231?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/1268895164646231/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/05/mta-tv-online.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1268895164646231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1268895164646231'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2010/05/mta-tv-online.html' title='MTA TV Online'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-598151912125460035</id><published>2009-12-15T07:42:00.000-08:00</published><updated>2010-06-11T10:08:58.508-07:00</updated><title type='text'>Menambah gadget label pada sidebar</title><content type='html'>&lt;p alignen="justify"&gt;Gadget Label sangat berguna untuk mengelompokkan postingan berdasarkan label (kategori). Sehingga memudahkan user blog kita memilah informasi atau postingan yang berkaitan dengan tema yang mereka cari.&lt;br /&gt;&lt;br /&gt;Untuk membuat gadget label lakukan langkah berikut:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pada halaman di bawah ini pilih tab " Tata Letak" pilih "Elemen Halaman"&lt;br /&gt;Klik "Tambah Gadget" &lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_s2kkTTqfLK4/Syem1m7kB6I/AAAAAAAAAOc/gWUgbdFpuY8/s320/tambahlabel001.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pada halaman list berikut pilih Label&lt;/li&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_s2kkTTqfLK4/Syem5Mz6q8I/AAAAAAAAAOk/m7MU4If4GH4/s320/tambahlabel002.jpg" /&gt;&lt;li&gt;Atur konfigurasi label, Judul, Menyortir berdasarkan Alfabet, kotak pratinjau biasanya berisi label sesuai dengan label pada postingan yang sudah anda buat&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_s2kkTTqfLK4/Syem7fvHnyI/AAAAAAAAAOs/bkJr9DNwIR0/s320/tambahlabel003.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Klik tombol "SIMPAN"&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Atur posisi gadget dengan cara "klik and drag"&lt;br /&gt;Setelah selesai klik tombol "SIMPAN",&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_s2kkTTqfLK4/Syem_rqyHAI/AAAAAAAAAO0/Tm4DZXI7doE/s320/tambahlabel004.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Lihat perubahan di blog anda.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Agar label (kategori muncul secara otomatis pada sidebar, maka pastikan saat anda membuat postingan jangan lupa membuat (mengisi) kategori artikel anda, di bagian bawah kotak teks editor isi pada bagian "Label untuk entri ini : ......"&lt;br /&gt;Jika anda belum membuat label tersebut, anda bisa kembali ke dasboard -&amp;gt; Edit Entri -&amp;gt; pilih postingan yang akan di edit.&lt;br /&gt;Klik tombol "Terbitkan entri" agar perubahan bisa dipublikasikan.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_s2kkTTqfLK4/SyenCGNAnvI/AAAAAAAAAO8/yIZIIntTMTk/s320/label+kategori+b.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-598151912125460035?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/598151912125460035/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/12/menambah-gadget-label-pada-sidebar.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/598151912125460035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/598151912125460035'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/12/menambah-gadget-label-pada-sidebar.html' title='Menambah gadget label pada sidebar'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_s2kkTTqfLK4/Syem1m7kB6I/AAAAAAAAAOc/gWUgbdFpuY8/s72-c/tambahlabel001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-1470271648136814063</id><published>2009-10-04T10:47:00.001-07:00</published><updated>2009-10-04T10:47:49.670-07:00</updated><title type='text'>AddThis - Sharing http://suparno.hostzi.com/wordpress/</title><content type='html'>&lt;a href="http://www.addthis.com/bookmark.php?v=250&amp;winname=addthis&amp;pub=xa-4ac8dc6a49901685&amp;source=men-250&amp;lng=id&amp;s=google&amp;url=http%3A%2F%2Fsuparno.hostzi.com%2Fwordpress%2F&amp;title=My%20Blog%27s%20Suparno&amp;ate=AT-xa-4ac8dc6a49901685/-/~/a51bc7f34836e/2/4ac8cf940e5a3873&amp;adt=1&amp;CXNID=2000001.5215456080540439074NXC&amp;pre=http%3A%2F%2Fwww.facebook.com%2Fposted.php%3Fid%3D1182504831%26success"&gt;AddThis - Sharing http://suparno.hostzi.com/wordpress/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shared via &lt;a href="http://addthis.com"&gt;AddThis&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-1470271648136814063?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/1470271648136814063/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/10/addthis-sharing-httpsuparnohostzicomwor.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1470271648136814063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/1470271648136814063'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/10/addthis-sharing-httpsuparnohostzicomwor.html' title='AddThis - Sharing http://suparno.hostzi.com/wordpress/'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7363611264359953492.post-8511883062291098714</id><published>2009-05-08T10:34:00.000-07:00</published><updated>2009-05-08T10:34:06.638-07:00</updated><title type='text'>00:24:05 - Sabtu, 9 Mei 2009 - SILAT.CO.NR</title><content type='html'>&lt;a href="http://praktisi.blogspot.com/2009/03/alfaclock.html"&gt;00:24:05 - Sabtu, 9 Mei 2009 - SILAT.CO.NR&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7363611264359953492-8511883062291098714?l=suparno-mikrokontroler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://praktisi.blogspot.com/2009/03/alfaclock.html' title='00:24:05 - Sabtu, 9 Mei 2009 - SILAT.CO.NR'/><link rel='replies' type='application/atom+xml' href='http://suparno-mikrokontroler.blogspot.com/feeds/8511883062291098714/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/05/002405-sabtu-9-mei-2009-silatconr.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/8511883062291098714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7363611264359953492/posts/default/8511883062291098714'/><link rel='alternate' type='text/html' href='http://suparno-mikrokontroler.blogspot.com/2009/05/002405-sabtu-9-mei-2009-silatconr.html' title='00:24:05 - Sabtu, 9 Mei 2009 - SILAT.CO.NR'/><author><name>Suparno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp1.blogger.com/_s2kkTTqfLK4/R327bjmIVmI/AAAAAAAAAAg/rHHSxTJBCts/S220/P1050680.JPG'/></author><thr:total>0</thr:total></entry></feed>
