Lab Elektronika Industri
Mikrokontroler - 1
TIMER DAN COUNTER MIKROKONTROLER ATMEL I. TIMER DAN COUNTER Timer atau counter pada dasarnya adalah sebuah pencacah. Pencacah itu bisa dipakai sebagai pewaktu (timer) atau pencacah (counter).
Jika sumber clock mempunyai frekuensi yang tetap dan telah diketahui, maka disebut pewaktu (timer) karena ini bekerja seperti penanda waktu. Umumnya untuk keperluan ini sumber clock berasal dari frekuensi kristal itu sendiri. Ketika sumber clock mempunyai frekuensi yang berubah-ubah, maka disebut sebagai pencacah (counter) karena bekerja seperti menghitung jumlah clock yang masuk. Umumnya sumber clock berasal dari luar mikrokontroler. Penghitungan clock oleh counter dilakukan ketika switch dalam keadaan on. Isi awal counter bisa diisi nilai awal, sehingga counter akan mencacah dari nilai awal tertentu. Isi cacahan setiap saat juga dapat dilihat untuk membaca nilai cacahan saat itu. Setelah hasil cacahan mencapai maksimum, isi cacahan akan kembali lagi ke nol. Keadaan ini disebut cacahan melimpah atau overflow. Pada AT89C51 terdapat 2 pencacah 16 bit yang dinamakan Timer 0 dan Timer 1. Sedang untuk AT89C52/55 mempunyai 3 pencacah hingga mempunyai Timer 0, 1, dan 2. Pencacah itu sendiri berada di register fungsi khusus yaitu: Timer 0 TL0 (alamat 8AH) dan TH0 (alamat 8CH) Timer 1 TL1 (alamat 8BH) dan TH1 (alamat 8DH) Timer 2 TL2 (alamat CCH) dan TH2 (alamat CDH) Untuk mengatur kerja timer digunakan 2 register tambahan yaitu TCON (Timer Control Register) di alamat 88H dan TMOD (Timer Mode Register) di alamat 89H. Dan khusus untuk timer 2 register yang digunakan adalah T2CON di alamat C8H dan T2MOD di alamat C9H. Ketika hasil cacahan overflow, ada bit khusus yang dipakai untuk menandai yaitu TF0 dan TF1 yang berada di register TCON bit 5 dan bit 7. Sedang untuk timer 2, dipakai TF2 yang berada di register T2CON bit 7. Pada timer 2 terdapat register RCAP2L dan RCAP2H yang digunakan untuk mengisi nilai awal cacahan dan juga untuk menyimpan hasil cacahan sehingga disebut register tangkap. Setiap timer yang ada bisa digunakan menjadi 4 mode operasi yaitu mode 0, 1, 2 dan 3. Dan setiap timer dapat bekerja secara sendiri-sendiri. Sehingga bisa saja timer 0 kerja pada mode 2 dan timer 1 kerja pada mode 1. Untuk jelasnya masing operasi kerja setiap mode akan dijelaskan di bawah. II. MODE KERJA TIMER 0 DAN TIMER 1 Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 2
Terdapat 4 macam mode kerja pada setiap timer. Masing-masing mode beroperasi sebagai berikut: Mode 0 : Pencacah Biner 13 bit
Pencacah biner dibentuk dari TLx (TL0 atau TL1) dipakai hanya 5bit dan THx (TH0 atau TH1) sebagai 8bit. Limpahan dari TLx diumpankan ke THx yang keseluruhan menjadi pencacah 13 bit. Dari diagram terlihat bahwa sumber clock bisa berasal dari frekuensi kristal (Oscilator) yang telah dibagi 12 atau dari sumber eksternal yang dimasukkan ke pin T0 atau T1 yaitu fungsi alternatif dari P3.4 (pin 14) atau P3.5 (pin 15). Pemilihan dilakukan dengan mengatur C/ T . Jika C/ T = 0, sumber clock dari oscilator dan jika C/ T = 1, sumber clock dari luar. Untuk memulai pencacahan diatur dari TRx (TR0 atau TR1), GATE dan INTx . Jika GATE = 0, maka pengatur hanya berasal dari TRx saja. Jika GATE = 1, pencacah diatur dengan TRx dan pin INTx . Kondisi penting terjadi ketika isi cacahan melimpah dari 1FFFH ke 0000H sehingga terjadi overflow. Jika overflow terjadi maka bit interupsi TFx akan dibuat 1. Mode 1 : Pencacah Biner 16 bit
Pada mode 1, timer bekerja seperti mode 0 tetapi kedua register TLx dan THx dipakai penuh sehingga membentuk pencacah biner 16 bit. Overflow terjadi ketika isi cacahan melimpah dari FFFFH ke 0000H dan bit interupsi TFx akan dibuat 1. Mode 2 : Pencacah Biner 8 bit isi ulang Pada mode 2, pencacah dibentuk dari register TLx yang membentuk pencacah 8 bit. Nilai isi ulang berada pada register THx. Setiap kali terjadi overflow, yaitu isi TLx melimpah dari FFH ke 00H, maka bit interupsi TFx dibuat 1 dan isi pencacah akan diisi nilai awal cacah dari isi THx.
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 3
Pada mode ini bisa diatur frekuensi limpahan (overflow) dengan mengatur nilai yang disimpan di register THx. Aplikasi yang umum adalah memakai mode 2 untuk menentukan baudrate komunikasi serial. Mode 3 : Gabungan Pencacah Biner 16 bit dan 8 bit
Pada mode ini Timer 0 dipakai untuk membentuk 2 rangkaian pencacah. Pertama, TL0 sebagai pencacah 8 bit dengan TF0 sebagai pemantau overflow, kedua TH0 juga sebagai pencacah 8 bit dengan sumber clock internal dan TF1 sebagai pemantau overflownya. Timer 1 masih dapat digunakan, hanya sudah tidak mempunyai sarana bit interupsi overflow TF1 lagi. Dengan ini, Timer 1 bisa dimanfaatkan untuk mengatur baudrate bagi port serial atau aplikasi yang tidak memerlukan interupsi. Pada mode 3, Timer 1 dihidupkan (mulai mencacah) dan dimatikan (berhenti mencacah) ketika masuk atau keluar mode 3 itu terjadi. Dengan mode 3 ini, seakan AT89C51 mempunyai 3 timer tidak hanya 2 dan untuk AT89C52/55 mempunyai 4 timer.
III. REGISTER TIMER TMOD – Timer Mode Register
: 89H
Reset TMOD = 00H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
GATE
C/ T
M1
M0
GATE
C/ T
M1
M0
Timer 1
Timer 0
Keterangan:
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 4
Simbol
Posisi
Nama dan kegunaan
GATE
bit 7/bit 3
Jika GATEx = 0, pencacahan dimulai atau dihentikan tergantung TRx saja. Jika GATEx = 1, pencacahan dimulai atau dihentikan tergantung TRx dan INTx .
C/ T
bit 6/bit 2
Pengatur sumber clock, jika C/ T = 0 maka sumber clock adalah 1/12 Osc dan jika C/ T = 1, sumber clock dari luar lewat pin Tx atau P3.4 atau P3.5
M1
bit 5/bit 1
Pengatur mode Timer/Counter (lihat tabel di bawah)
M0
bit 4/bit 0
Pengatur mode Timer/Counter (lihat tabel di bawah)
M1
M0
MODE
Keterangan
0
0
Mode 0
Pencacah 13 bit dengan register THx = 8 bit dan TLx = 5 bit
0
1
Mode 1
Pencacah 16 bit dengan register THx = 8 bit dan TLx = 8 bit
1
0
Mode 2
Pencacah 8 bit isi ulang. THx = isian ke counter 8 bit
1
1
Mode 3
Gabungan pencacah 8 bit (TL0 dan TH0) dan 16 bit (Timer 1)
TCON – Timer Control Register
: 88H
Reset TCON = 00H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Keterangan: Simbol
Posisi
Nama dan kegunaan
TF1
TCON.7
Tanda (flag) timer 1 yang akan diset 1 oleh hardware ketika terjadi overflow
TR1
TCON.6
Bit kontrol timer 1 yang diset/diclear dengan software untuk on/off timer 1
TF0
TCON.5
Tanda (flag) timer 0 yang akan diset 1 oleh hardware ketika terjadi overflow
TR0
TCON.4
Bit kontrol timer 0 yang diset/diclear dengan software untuk on/off timer 0
IE1
TCON.3
Tanda sisi interupsi eksternal 1. Di-set jika terdeteksi interupsi eksternal 1 pada sisi turun dan akan di-clear ketika rutin interupsi kemudian diproses.
IT1
TCON.2
Control interupsi eksternal 1 yang di-set/clear untuk memilih triger interupsi eksternal 1 dengan sisi turun atau level rendah
IE0
TCON.1
Tanda sisi interupsi eksternal 0. Di-set jika terdeteksi interupsi eksternal 0 pada sisi turun dan akan di-clear ketika rutin interupsi kemudian diproses.
IT0
TCON.0
Control interupsi eksternal 0 yang di-set/clear untuk memilih triger interupsi
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 5
eksternal 0 dengan sisi turun atau level rendah
IV.MODE KERJA TIMER 2 KHUSUS PADA AT89C52/55 Pada AT89C52/55 terdapat tambahan 1 timer lagi yang disebut Timer 2. Ada 5 register pengatur Timer 2 adalah TL2, TH2, T2CON dan register tangkap (capture) yaitu RCAP2L dan RCAP2H. T2CON – Timer 2 Control Register
: 0C8H
Reset T2CON = 00H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/ T2
CP/ RL2
Keterangan: Simbol
Posisi
Nama dan kegunaan
TF2
T2CON.7
Tanda (flag) timer 2 yang akan diset 1 oleh hardware ketika terjadi overflow dan harus di-clear dengan software. TF2 tidak akan di-set jika salah satu dari RCLK = 1 atau TCLK = 1
EXF2
T2CON.6
Tanda (flag) eksternal Timer 2 yang akan di-set jika suatu capture atau isi ulang disebabkan oleh adanya transisi negatif pada pin T2EX dan EXEN2 = 1. Jika interupsi Timer 2 aktif dan EXF2 = 1, maka CPU akan lompat ke rutin interupsi Timer 2. EXF2 harus di-clear dengan software.
RCLK
T2CON.5
Tanda (flag) clock Receive bagi port serial. Jika RCLK = 1, pulsa overflow Timer 2 digunakan untuk clock terima serial dan baudrate kirim diatur oleh Timer 1 pada komunikasi serial mode 1 dan 3. Jika RCLK = 0, overflow Timer 1 yang dipakai untuk clock terima serial.
TCLK
T2CON.4
Tanda (flag) clock Transmit bagi port serial. Jika TCLK = 1, pulsa overflow Timer 2 digunakan untuk clock kirim serial dan baudrate kirim diatur oleh Timer 1 pada komunikasi serial mode 1 dan 3. Jika TCLK = 0, overflow Timer 1 yang dipakai untuk clock kirim serial.
EXEN2
T2CON.3
Tanda (flag) aktif eksternal Timer 2. Jika diset EXEN2 = 1 menyebabkan terjadi capture atau pengisian ulang counter saat ada transisi negatif pada pin T2EX dan Timer 2 tidak digunakan untuk clock serial. Jika EXEN2 = 0 menyebabkan Timer 2 akan mengabaikan kondisi pin T2EX.
TR2
T2CON.2
Kontrol start/stop Timer 2. Jika diset TR2 = 1, Timer 2 akan memulai cacahan.
C/ T2
T2CON.1
Pemilih sumber clock Timer 2. Jika C/ T2 = 0, clock dari 1/12 Osc dan jika
C/ T2 = 1, clock dari eksternal di pin T2 pada transisi negatif. CP/ RL2
T2CON.0
Tanda (flag) capture atau isi ulang. Jika diset CP/ RL2 = 1, capture akan terjadi pada transisi negatif pin T2EX apabila EXEN2 = 1. Jika CP/ RL2 = 0, isi ulang akan terjadi pada transisi negatif pin T2EX jika EXEN2 = 1 atau jika terjadi overflow di Timer 2. Jika salah satu RCLK = 1 atau TCLK = 1, bit flag ini akan diabaikan dan menjadi mode isi ulang ketika Timer 2 overflow.
Timer 2 juga bisa dioperasikan kedalam 3 mode operasi seperti terlihat pada tabel di bawah. RCLK + TCLK
CP/ RL2
TR2
Mode operasi
0
0
1
Pencacah 16 bit isi ulang
0
1
1
Pencacah 16 bit capture
1
X
1
Pembangkit baudrate
X
X
0
Timer 2 mati
1. Mode Isi Ulang 16 Bit Pada mode pencacah 16 bit isi ulang register TL2 dan TH2 membentuk pencacah biner 16 bit. Nilai isi ulang (preset yaitu nilai awal cacahan) diambil dari register capture: RCAP2L dan
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 6
RCAP2H. Mode isi ulang 16 bit diatur dengan TR2 = 1, CP/ RL2 = 0, RCLK = 0 dan TCLK = 0. Sumber clock pencacah bisa berasal dari 1/12 Osc atau sumber eksternal yang masuk melalui pin T2 (P1.0). Pemilihan sumber clock diatur dengan bit C/ T2 di register T2CON. Jika C/ T2 = 0, maka sumber clock dari 1/12 Osc dan jika C/ T2 = 1, sumber clock dari eksternal.
Gambar di atas adalah skema blok Timer 2 sebagai pencacah biner 16 isi ulang. Ketika sumber clock adalah internal sering kita menyebutnya pewaktu (timer) karena clock memakai frekuensi yang sudah diketahui yaitu sebesar 1/12 frekuensi oscilator. Jika memakai kristal 12MHz, maka clock akan mempunyai frekuensi 1Mhz. Jadi setiap hasil cacahan naik 1 maka akan memakan waktu 1µ detik. Sehingga waktu timer paling lama adalah 216 = 65 536µ detik atau 65,536 mili detik dan waktu terpendek adalah 1µ detik. Untuk kebutuhan waktu timer yang lebih lama bisa dilakukan dengan memakai kristal dengan frekuensi yang lebih rendah, atau dengan software melakukan pengulangan timer beberapa kali. Jika sumber clock dari ekstenal biasanya kita sebut sebagai pencacah (counter) karena disini biasanya kita ingin mencacah clock yang masuk melalui T2. Misalnya untuk mencacah jumlah item/barang yang lewat konveyor, menghitung kejadian dst. Jumlah cacahan maksimum adalah 65536 clock. Ketika jumlah cacahan telah maksimum sedang clock masih masuk lagi maka akan terjadi overflow dan bit TF2 akan diset 1. Jika bit TF2 = 1 (terjadi overflow) maka isi pencacah yaitu register TL2 dan TH2 akan otomatis akan diisi ulang oleh nilai dari register RCAP2L dan RCAP2H. Dari operasi kerja seperti ini mode isi ulang bekerja. RCAP2L dan RCAP2H diisi dengan software. Dengan cara ini dapat diatur overflow akan terjadi setiap berapa clock yang masuk. Overflow juga membuat bit TF2 diset sehingga terjadi interupsi Timer 2. Isi ulang otomatis juga akan terjadi ketika terdeteksi transisi negatif pada pin T2EX jika EXEN = 1. Bit EXEN (external enable) di register T2CON akan membolehkan isi ulang terjadi ketika ada transisi negatif di pin T2EX. Selain terjadi pengisian ulang, bit EXF2 juga diset sehingga terjadi interupsi Timer 2. 2. Mode Capture 16 Bit Mode capture 16 bit hampir sama dengan mode isi ulang. Sumber clock pencacah bisa dari internal maupun eksternal dengan mangatur bit C/ T2 . Bit TR2 untuk men-start/stop pencacah. Ketika cacahan overflow akan mengeset bit TF2 sehingga timbul interupsi Timer 2. Jika EXEN2 = 1 dan terjadi transisi negatif di pin eksternal T2EX, maka bit EXF2 juga akan diset 1 sehingga juga terjadi interupsi Timer 2. Sampai disini mode ini masih sama seperti mode isi ulang.
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 7
Mode capture 16 bit terlihat seperti gambar di atas. Yang membedakan dengan mode isi ulang adalah bahwa register RCAP2L dan RCAP2H bukan untuk mengisi nilai awal cacahan tetapi pada mode capture kedua register itu dipakai untuk menangkap dan menyimpan isi cacahan. Perintah meng-capture isi cacahan didapat ketika terdeteksi transisi negatif di pin T2EX saat EXEN2 = 1. 3. Mode Generator Baudrate Pada mode ini hasil overflow Timer 2 digunakan untuk mengatur baudrate saat komunikasi serial terjadi di mode 1 serial atau mode 3 serial. Prinsip bekerjanya Timer 2 hampir sama dengan mode isi ulang. Nilai isi ulang diambil dari register RCAP2L dan RCAP2H yang digunakan untuk mengatur nilai preset pencacah untuk mengatur terjadinya overflow yang berarti mengatur baudrate. Jika overflow terjadi, terjadi juga proses mengisi ulang pencacah, tetapi bit TF2 tidak diset sehingga tidak terjadi interupsi Timer 2 pada mode ini.
Perhatikan gambar di atas untuk memperjelas operasi mode generator baudrate. Baudrate untuk receive data serial dan transmit data serial bisa dibuat berbeda kecepatan. Hal ini diatur dari bit RCLK dan TCLK di register T2CON. Untuk lebih jelasnya lihat tabel di bawah. Yang perlu diperhatikan adalah bahwa sumber clock internal besarnya adalah 1/2 frekuensi kristal bukan 1/12 frekuensi kristal seperti mode lain atau timer lain. Interupsi Timer 2 masih bisa dihasilkan dengan cara membuat EXEN2 = 1 dan memberikan transisi negatif pada pin eksternal T2EX.
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 8
Perhitungan baudrate mengikuti persamaan berikut: Baudrate Mode 1 & 3 =
Frekuensi Kristal 32 x [65536 - (RCAP2H, RCAP2L)]
Tabel baudrate komunikasi serial mode 1 dan 3 RCLK TCLK SMOD
Receive Baudrate
Transmit Baudrate
0
0
0
1/32 Laju overflow Timer 1
1/32 Laju overflow Timer 1
0
0
1
1/16 Laju overflow Timer 1
1/16 Laju overflow Timer 1
0
1
0
1/32 Laju overflow Timer 1
1/16 Laju overflow Timer 2
0
1
1
1/16 Laju overflow Timer 1
1/16 Laju overflow Timer 2
1
0
0
1/16 Laju overflow Timer 2
1/32 Laju overflow Timer 1
1
0
1
1/16 Laju overflow Timer 2
1/16 Laju overflow Timer 1
1
1
X
1/16 Laju overflow Timer 2
1/16 Laju overflow Timer 2
T2MOD – Timer 2 Mode Register
: 0C9H
Reset TMOD = X0H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
-
-
-
-
-
-
T2OE
DCEN
Keterangan: Simbol
Posisi
Nama dan kegunaan
T2OE
T2MOD. 1
Bit yang meng-enable output Timer 2
DCEN
T2MOD. 0
Jika bit DCEN = 1 mengatur Timer 2 sebgai pencacah naik/turun
Pada mode pencacah 16 bit isi ulang, Timer 2 bisa diatur sebagai pencacah naik/turun. Pada kondisi reset, bit DCEN di register T2MOD adalah 0 sehingga Timer2 adalah pencacah naik. Jika DCEN = 1, maka Timer 2 bisa dibuat sebagai pencacah naik/turun tergantung pada pin T2EX. Lihat skema blok di bawah ini:
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 9
Jika T2EX = 1, maka Timer 2 sebagai pencacah naik (up-counter) dan jika T2EX = 0, maka Timer 2 sebagai pencacah turun (down-counter). Sebagai pencacah naik, nilai isi ulang diambil dari register RCAP2L dan RCAP2H. Dan sebagai pencacah turun, nilai isi ulang adalah cacahan maksimum atau 0FFFFH. Ketika mencacah turun dari 0FFFFH sampai nilai cacahan (register TL2 dan TH2) sama dengan isi register RCAP2L dan RCAP2H maka akan terjadi underflow. Jika Timer 2 underflow, maka bit TF2 akan diset dan pencacah diisi ulang nilai 0FFFFH lagi. Pada mode ini, bit EXF2 akan berubah dari 0 ke 1 jika Timer 2 overflow dan bit EXF2 akan berubah dari 1 ke 0 jika Timer 2 underflow. Pada mode ini, bit EXF2 tidak menyebabkan terjadi interupsi Timer 2. 4. Programmable Clock Out Timer 2 juga dapat dipakai untuk menghasilkan clock di pin T2 (P1.0) dengan frekuensi yang dapat diprogram dan dengan duty cycle 50%.
Frekuensi clock dapat diprogram dari 61Hz hingga 4MHz pada frekuensi kristas 16MHz. Frekuensi clock yang dihasilkan dapat dihitung dari persamaan berikut: Frekuensi clock =
Frekuensi Kristal 4 x [65536 - (RCAP2H, RCAP2L)]
Programmable clock out dibuat dengan cara bit C/ T2 = 0 dan bit T2OE = 1 sedang TR2 untuk start/stop Timer 2.
V. PENGGUNAAN TIMER/COUNTER a. Mengendalikan LED dengan waktu tunda 1 detik Pada contoh ini akan dikendalikan 8 LED di port 1 yang dinyalakan dan dimatikan dengan waktu tunda 1 detik. Untuk membuat penundaan 1 detik akan tepat jika digunakan timer. Dalam hal ini bisa dipakai Timer 0, Timer 1 ataupun Timer 2 dengan sama baiknya. Rangkaian yang digunakan seperti gambar di bawah. Misal dipilih Timer 0, pada mode 1 yaitu pencacah biner 16 bit yang sumber clock dari 1/12 Osc. Kristal yang dipakai adalah 12MHz, jadi frekuensi clock = 1/12 x 12MHz = 1MHz atau
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
Mikrokontroler - 10
mencacah setiap 1µdetik. Pencacah akan overflow setelah mencacah dari 0 sampai 65535. Waktu yang dibutuhkan berarti 65536 µdetik untuk terjadi overflow.
Karena yang diinginkan adalah menunda selama 1 detik = 1 000 000 µdetik, maka harus dilakukan pengulangan beberapa kali pencacahan. Ada beberapa cara yaitu: 1. Timer 0 mencacah 10 000 berarti menunda 10 000µdetik dan diulang 100 kali, atau 2. Timer 0 mencacah 20 000 berarti menunda 20 000µdetik dan diulang 50 kali, atau 3. Timer 0 mencacah 50 000 berarti menunda 50 000µdetik dan diulang 20 kali, dll Yang dipilih adalah cara 3 karena jumlah pengulangan yang terkecil (lebih tepat). Jadi rancangannya adalah: a. Memakai Timer 0 pada mode 1 untuk mencacah 50 000 clock b. Tunggu hingga Timer 0 overflow yaitu ditandai dengan bit TF0 = 1 c. Diulang sebanyak 20 pengulangan ;-----------------------------------------------------------------------------------------; Program Kendali 8 LED di Port 1 dengan waktu tunda 1 detik ;-----------------------------------------------------------------------------------------ORG 0H Cacah Isi
Start:
EQU EQU
20 -50000
;cacah pengulangan ;isi Timer 0 yang mencacah dari -50 000
MOV MOV CALL MOV CALL SJMP
TMOD, #01H P1, #0FH Tunda P1, #0F0H Tunda Start
;Timer 0 mode 1 -> GATE = 0, C/ T = 0, M1 = 0, M0 = 1 ;Hidupkan 4 LED kanan ;Tunda 1 detik ;Hidupkan 4 LED kiri ;Tunda 1 detik ;Ulang ke start lagi
;------------------------------------------------------------------------------------------; Prosedur Tunda 1 detik ;------------------------------------------------------------------------------------------Tunda: MOV R0, #Cacah ;Register R0 untuk pengulangan 20x Ulang: MOV TH0, #HIGH Isi ;Register TH0 diisi byte tinggi isi counter -50000 MOV TL0, #LOW Isi ;Register TL0 diisi byte rendah isi counter -50000
Iwan B Pratama 9/19/2006
Lab Elektronika Industri
SETB JNB CLR CLR DJNZ RET
Mikrokontroler - 11
TR0 TF0, $ TF0 TR0 R0, Ulang
;Hidupkan Timer 0 ;Menunggu hingga Timer 0 overflow ;Clear bit TF0 agar bisa dicek lagi nanti kalau overflow ;Matikan dulu Timer 0 ;Cek R0 = 0 ? untuk pengulangan 20x ;Kembali dari pemanggilan prosedur
END
b. Menghitung pulsa dari eksternal dan ditampilkan di port 1 Aplikasi ini akan menghitung clock dari luar (eksternal) yang dimasukkan dan menampilkan sebagai biner di port 1. Sumber clock eksternal disimulasikan dengan menekan switch.
;---------------------------------------------------------------------------------------------------; Program menghitung clock eksternal dari switch SW1 ;---------------------------------------------------------------------------------------------------ORG 0H
Start:
MOV TMOD, #00000101b SETB TR0
;Timer 0 mode 1 ;Hidupkan counter
MOV CPL MOV SJMP
;Baca isi cacahan ke A
A, TL0 A P1, A Start
;Tampilkan isi cacahan sbg biner di port 1
END
Iwan B Pratama 9/19/2006