1.5 Timer Counter
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.
          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. 
          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.
          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.
          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.
        
Gambar 1.9. Konsep dasar Timer/Counter sebagai sarana input
 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.
          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.
          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.
          Untaian pencacah biner yang dipakai, bisa merupakan pencacah  biner menaik            (count up binary counter) atau pencacah biner menurun (count  down binary            counter).
 1.5.1 Fasilitas Timer/Counter 
          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.
          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.
          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).
          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).
          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.
          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).
          Pencacah biner Timer 0 dan 1
          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.
          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.           
          Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk  menyusun            sistem timer yang tidak bisa di-kombinasi lain.
          Susunan TL0, TH0, TL1 dan TH1 pada masing-masing mode adalah  sebagai            berikut:
Mode 0 – Pencacah Biner 13 bit
           
Gambar 1.10 Mode 0 - Pencacah Biner 13 Bit
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.
          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.
Mode 1 – Pencacah Biner 16 bit
Gambar 1.11 Mode 1 - Pencacah Biner 16 Bit
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.
Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang
          
Gambar 1.12 Mode 2 - Pencacah Biner 8 Bit dengan Isi Ulang
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.
Mode 3 – Gabungan Pencacah Biner 16 bit dan 8 Bit
Gambar 1.13 Mode 3 – Gabungan Pencacah Biner 16 Bit dan 8 Bit
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.
          Register Pengatur Timer
          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.
Gambar 1.14 Denah susunan bit dalam register TMOD
 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            :
          1. Bit M0/M1 dipakai untuk menentukan Mode Timer seperti yang  terlihat            dalam Tabel di Gambar 3a.
          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).
          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).
        
Gambar 1.15 Denah susunan bit dalam register TCON
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.
| MSB | LSB | ||||||
| TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | 
| BIT | SYMBOL | FUNCTION | 
| TCON.7 | TF1 | 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. | 
| TCON.6 | TR1 | Timer 1 Run control bit . Set/  cleared by                  software to turn Timer/ Counter on/off | 
| TCON.5 | TF0 | 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. | 
| TCON.4 | TR0 | Timer 1 Run control bit . Set/  cleared by                  software to turn Timer/ Counter on/off | 
| TCON.3 | IE1 | Interrupt 1 Edge flag. Set by  hardware when                  external interrupt edge detected. Cleared when interrupt  processed. | 
| TCON.2 | IT1 | Interrupt 1 type control bit. Set/  cleared                  by software to specefy falling edge/ low level trigerred  external                  interupts | 
| TCON.1 | IE0 | Interrupt 0 Edge flag. Set by  hardware when                  external interrupt edge detected. Cleared when interrupt  processed. | 
| TCON.0 | IT0 | Interrupt 0 type control bit. Set/ cleared by software to specefy falling edge/ low level trigerred external interupts | 
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:
          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).
          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).
 
 
0 komentar:
Posting Komentar
Anda dapat menggunakan beberapa tag HTML, seperti <b>, <i>, <a>
Penting: Jika anda tidak memiliki account gmail pilih Name/URL pada form ini