Interrupt(penyela):
Menghasilkan timer penyela setelah interval waktu tertentu. Dapat juga difungsikan sebagai counter untuk menghitung jumlah kejadian

Timer:
Timer atau pewaktu adalah sarana untuk menghitung durasi kejadian seperti halnya stopwatch. Biasanya peran Timer juga merangkap Counter atau pencacah.
Counter:
Sedikit berbeda dengan Timer, Counter merupakan sarana untuk mencacah atau menghitung jumlah kejadian, jumlah barang atau lainnya. Tasbeh adalah contoh counter yang digunakan untuk mencacah banyaknya dzikir.

  1. Jelaskan cara kerja timer mode 1 dan 2 serta bagaimana peran TH(x) dan TL(x)

M1 M0            : Adalah pasangan bit untuk menentukan 1 dari 4 mode operasi. Jika pasangan ini bernilai 00 berarti Timer/Counter bekerja pada mode 0 dengan kapasitas maksimum 13-bit atau 8192 pulsa. Jika M1M0 = 01 atau mode 1, maka kapasitas maksimumnya 16-bit atau 65536 pulsa. Sedangkan Mode 2 merupakan mode auto reload dengan kapasitas 8-bit atau 256 pulsa. Pada mode 2 ini, selama TimerX running, isi register TLx terus bertambah. Jika TLx overflow, maka TFx aktif dan TLx diisi ulang dengan data yang berada pada THx.
            Misalnya kita ingin menggunakan Timer/Counter 0 sebagai Timer 16-bit. Maka bit-bit setting yang kita berikan untuk TMOD adalah data biner “xxxx 0001”. Tanda x atau don’t care berarti bahwa bit-bit tsb tidak terkait dengan Timer/Counter 0. Gambar di bawah ini adalah diagram operasi Timer 16-bit.
Gambar 5.2. Diagram operasi Timer 16-bit.
            Sebelum penjelasan diagram tsb, perhatikanlah ilustrasi berikut ini. Bayangkan sebuah ordometer pada kendaraan bermotor. Ordometer ini berukuran 6 digit dengan digit paling kanan berupa kelipatan 100 meter. Tulisan 002341 pada ordometer ini menandakan bahwa kendaraan tsb telah berjalan sejauh 234,1 km sejak angka pada ordometer di-set 000000. Jika kendaraan terus bergerak konstan dengan kecepatan 100 m/s, maka angka pada ordometer akan bertambah satu setiap detik. Hal ini akan berlanjut terus sampai ordometer mencapai angka 999999, kemudian 000000. Peralihan dari bilangan 999999 ke 000000 disebut keadaan overflow atau meluap.
Jika kendaraan bergerak konstan, maka perubahan display ordometer akan berlangsung teratur, sehingga kita dapat menggunakannya sebagai Timer atau stopwatch. Misalkan pada saat start, display ordometer menunjukkan angka 996400. Maka pada saat overflow kendaraan tersebut telah berjalan sejauh 360 km atau 3600 detik.
Prinsip kerja Timer digital mirip dengan cara kerja ordometer, sehingga kita dapat menggunakan analogi ordometer dengan Timer Digital. Angka yang tertera pada display ordometer dapat dianalogikan dengan angka yang berada pada pasangan register TH dan TL. Bertambahnya angka pada display ordometer disebabkan oleh bergeraknya kendaraan, sedangkan bertambahnya isi THx TLx disebabkan oleh bit TRx. Jika TRx HIGH, maka pasangan register THx TLx akan bertambah setiap satu siklus mesin, 12 kali periode kristal. Jika prosesor menggunakan kristal 12 MHz, maka selama TRx HIGH, isi pasangan register THx TLx akan bertambah 1 setiap 1 ms. Jika keadaan ini berlangsung terus, maka suatu saat pasangan THx TLx akan mengalami overflow, pada saat itu bit TFx akan menjadi HIGH.

  1. Apa yang diperhatikan dalam perancangan program  timer 1 mode 2?
Mode 2 menyusun register timer sebagai 8 bit counter(TL1) dengan kemampuan reload otomatis. Overflow dari TL1 tidak hanya menset TF1 tetapi juga mengisi TL1 dengan isi TH1 yang diisi sebelumnya olehsoftware. Pengisian ulang ini tidak mengubah nilai TH1.

Timer/Counter 1 bekerja pada mode 2, sebagaiT/C 8-bit auto- reload
  1. Apa maksud baris 5 s/d 8 pada program 2.4  ?
“ORG 4003H
LJMP INTER0
ORG 4013H
LJMP INTER1″

Pada baris 5 dan 6 :: Melakukan proses setelah alamat 4003H lalu jump ke INTER0 .
Pada baris 7 dan 8 :: Melakukan proses setelah alamat 4013H lalu jump ke INTER1
  1. Dalam program 2.4, apa yang harus diatur dalam register IP supaya prioritas pada INT0 yang terletak pada IS1 berprioritas tinggi?

Mengubah PX0 (IP.1) berlogika 1 sehingga IP bernilai 00000010 atau 02H.

  1. Jelaskan tentang register TMOD, TCON, IE dan IP!

TMOD:
Sebelum digunakan, Timer/Counter tsb harus di-setting melalui pengisian TMOD dengan angka biner tertentu. Berikut ini adalah gambar yang terkait dengan pengisian register TMOD atau Timer Mode.
TMOD: TIMER/COUNTER MODE CONTROL REGISTER. NOT BIT ADDRESSABLE.
Nibble atau 4-bit kiri digunakan untuk setting Timer atau Counter 1 sedangkan Nibble atau 4-bit kanan digunakan untuk Timer atau Counter 0. Keterangan masing-masing bit adalah sebagai berikut,
GATE             : Bit ini dipakai untuk menentukan kendali ON/OFF timer. Jika bit ini LOW, maka kendali dilakukan secara software atau program, Timer1 akan ON selama bit TR1 pada Register TCON bernilai HIGH. Tetapi jika bit ini HIGH, berarti ON/OFF Timer atau Counter bergantung pada kondisi pin INT, Timer 1 akan ON selama pin INT1 bernilai HIGH.
C/T                  : Bit ini dipakai untuk menentukan jenis operasi. Jika bit ini HIGH, berarti alat ini digunakan sebagai Counter, tetapi jika bit ini LOW, alat ini digunakan sebagai Timer.
M1 M0            : Adalah pasangan bit untuk menentukan 1 dari 4 mode operasi.
            Misalnya kita ingin menggunakan Timer/Counter 0 sebagai Timer 16-bit. Maka bit-bit setting yang kita berikan untuk TMOD adalah data biner “xxxx 0001”. Tanda x atau don’t care berarti bahwa bit-bit tsb tidak terkait dengan Timer/Counter 0. Gambar di bawah ini adalah diagram operasi Timer 16-bit.
TCON:
Register ini terdiri dari 8 bit dan dapat diakses per bit. Sesuai namanya register ini merupakan kendali dari timer yang berfungsi untuk mengendalikan kapan timer bekerja, menandakan ketika adanya overflow ataupun penunjuk jika terjadi interupsi pada timer.
Adapun definisi dari bit-bit pada timer control adalah sebagai berikut:



IE:
Register ini terdiri dari 8 bit dan bit addressable. Digunakan untuk mengaktifkan register yang kita inginkan yang terdapat pada mikrokontroller.
MSB                                                                                                                            LSB
EA
-
-
ES
ET1
EX1
ET0
EX0

EA       à jika kita ingin menggunakan fasilitas interupsi, maka bit ini harus diset pertama kali. Jika bit ini bernilai 0 tidak aka nada interupsi yang terjadi.
ES       à bit ini digunakan untuk mengaktifkan interupsi serial port. Jika bernilai 1 maka rutin interupsi serial (0023H) akan dipanggil ketika bit TI atau RI bernilai 1.
ET(x)   à bit ini digunakan untuk mengaktifkan interupsi timer(x). jika bernilai 1 rutin interupsi timer akan dipanggil ketika bit TF(x) bernilai 1.
EX(x) à bit ini digunakan untuk mengaktifkan interupsi external(x). jika bernilai 1 rutin interupsi external akan dipanggil ketika bit IE(x) bernilai 1.

IP:
Register ini terdiri dari 8 bit dan bit addressable, register ini digunakan untuk memilih prioritas interupsi, interupsi dengan prioritas lebih tinggi akan dieksekusi lebih dulu jika terjadi 2 interupsi pada waktu yang sama.
MSB                                                                                                                            LSB
-
-
PT2
PS
PT1
PX1
PT0
PX0
PT(x)   à timer 2 interrupt priority. 0=low priority, 1=high priority
PS        à serial interrupt priority. 0=low priority, 1=high priority
PX(x) à  0=low priority, 1=high priority