content:
Interupsi adalah kejadian (event) eksternal atau internal yang bisa menginterupsi CPU dan memberitahukan bahwa sebuah peralatan membutuhkan layanan. Pada BAB ini kita akan membahas lebih jauh tentang interupsi dan pemrograman interupsi. Pad SubBAB 11-2 kita akan mendiskusikan interupsi milik Timer-0 dan Timer-1. Interupsi hardware ekternal akan didiskusikan pada SubBAB 11-3. Adapun interupsi yang berhubungan dengan komunikasi serial dibahas pada SubBAB 11-4. Dan akhirnya pada SubBAB 11-5 kita akan membahas prioritas interupsi pada 8051.
SubBAB 11-1: Interupsi pada 8051
Pada SubBAB ini kita akan mendiskusikan perbedaan polling dan interupt dan membahas pula berbagai interupsi pada 8051.
Interupsi dan Polling
Sebuah MikroKontroller dapat melayani beberapa peralatan (selanjutnya kita sebut dengan device). Ada dua cara untuk memberikan layanan, yaitu dengan Interupsi dan polling. Pada Metode Interupt, kapan saja device butuh layanan, maka CPU akan sedapat mungkin untuk segera melayani, device akan memberitahukan pada CPU dengan mengirim sinyal interupsi. Setelah sinyal interupsi ini diterima, CPU akan berhenti mengerjakan tugasnya dan segera melayani device tadi. Program (instruksi-instruksi) dimana yang berisi layanan interupsi, disebut dengan Interupt Service Routine ( ISR )atau juga Interupt Handler. Sedang pada polling, CPU secara terus menerus akan memonitor status yang diberikan oleh device-device, saat kondisi tertentu di mana nampak device membutuhkan layanan, maka CPU akan mulai mengerjakan layanannya. Setelah CPU selasai dengan layanan, maka CPU akan kembali mengerjakan pekerjaan semula yaitu memmonitor device selanjutnya sampai ketemu device yang meminta layanan. Walaupun polling dapat memonitor status beberapa device dan melayani setiap kondisi tertentu, ini tidak efisien karena CPU hanya atau lebih banyak bertugas untuk memeriksa status dari device. Salah satu device yang meminta layanan bahkan harus menunggu lama karena CPU sedang sibuk melayani device lain. Nah peralatan interupsi inilah jawabannya. Dengan Interupsi, CPU dapat melakukan tugas lebih banyak (tentu saja tidak sekaligus karena 8051 hanya satu core CPU) dan dapat melayani segera device yang membutuhkan layanan segera. Harap dimengerti interupsi berbeda dengan multitasking. Interupsi adalah peralatan yang dapat menginterupsi tugas CPU, dan untuk sementara diminta melaksanakan tugas yang baru, namun untuk multitasking yaitu bahwa ada benar-benar 2 atau lebih, proses yang berjalan bersama-sama. Kembali ke masalah interupsi. CPU bahkan bisa lebih mengutamakan layanan untuk Device yang derajat prioritasnya lebih tinggi. Sebaliknya apakah dengan menggunakan metode polling bisa dilakukan prioritas. Ya tentu saja asal kita bisa membuat program yang memonitor lebih sering untuk device yang memiliki prioritas lebih tinggi (disebut metode round-robin fashion). Lebih penting lagi, metode interupsi pada CPU dapat mengabaikan (mask / ignore) device tertentu yang meminta layanan. Akhirnya dengan demikian tidak diperlukan lagi metode polling. Alasan paling penting dari penggunaan metode interupsi ini adalah metode ini jauh lebih efisien dibanding metode polling yang selalu membutuhkan waktu lebih banyak bagi CPU untuk melakukan polling itu sendiri bagi semua device, tidak perduli device tersebut minta dilayani atau tidak. Untuk mencegah membebani CPU terlalu banyak seperti itu, cara yang paling tepat adalah dengan interupsi. Seperti contoh, memeriksa timer (diulas pada BAB 9) dengan menggunakan perintah “JNB TFx,lokasi”, dan menunggu sampai TF = 1 alias Timer Rollover. Saat menunggu tersebut, prosesor tidak bisa melakukan tugas yang lain. Hal ini tentu saja akan membuang waktu dari prosesor. Akhirnya kita menggunakan interupsi untuk Timer. Pertama CPU melakukkan set-up untuk Timer dan kemudian mengerjakan tugas yang lain. Saat terjadi rollover, bendera interupsi diaktifkan (hal ini dapat diartikan sinyal untuk memberitahukan CPU akan terjadi sebuah kondisi dalam hal ini adalah rollover dari Timer) dan selanjutnya meminta CPU menghentikan tugasnya dan mulai mengerjakan leyanan interupsi Timer. Setelah selesai memberikan layanan, CPU akan kembali mengerjakan tugasnya yang terbengkalai tadi.
Interupt Service Routine
Setiap interupsi, selalu memiliki Interupt Service Routine (ISR), atau disebut juga Interupt Handler. Yaitu rutin-rutin yang khusus dijalankan sebagai layanan dari sebuah interupsi. Saat interupsi terjadi, CPU akan mulai menjalankan rutin ISR ini. Setiap Interupsi selalu memiliki lokasi tetap dalam memory program yang disebut Interupt Vector Table, seperti ditampilkan pada gambar 11-1.
Langkah-langkah Mengeksekusi Interupsi
Setelah adanya aktifasi interupsi, 8051 akan mengerjakan tugas seperti langkah-langkah di bawah ini.
Begitu adanya sinyal interupsi, CPU mulai merespon. Namun jika saat itu CPU sedang dalam proses menjalankan instruksi, tentu CPU harus menyelesaikan instruksi tersebut, sehingga tidak ada instruksi apapun yang terhenti di tengah-tengah. Baru kemudian CPU memulai proses menanggapi interupsi dengan menyimpan PC pada stack, agar nantinya proses benar-benar kembali ke alamat ini. Prosesnya serupa dengan CALL.
CPU juga menyimpan secara internal akan status dari semua interupsi.
Kemudian program Counter akan melompat pada alamat yang sudah ditetapkan, yang disebut Interupt Vector Table, di mana ISR berada.
Setelah mendapatkan alamat tersebut, CPU mulai mengeksekusi alamat yang sudah ditetapkan tersebut. Yang berarti ISR dimulai dari alamat ini. Setiap kode-kode-nya dieksekusi sampai ditemukannya perintah “RETI”, yang berarti akhir dari layanan interupsi.
Setelah mengeksekusi perintah “RETI”, mikrokontrolller kembali ke alamat yang ditinggalkan tadi sesaat sebelum interupsi. Yaitu dengan cara mengambil kembali simpanan alamat yang tadi diletakkan di STACK, dengan mem-POP dua kali dan dimasukkan ke PC. Sekarang PC sudah berisi alamat yang tadi ditinggalkan. Prosesnya mirip dengan RET.
Harap dicatat, isi dari STACK adalah sangat penting bagi hal ke 5. Sehingga kita harus hati-hati untuk memodifikasi STACK. Yaitu hati-hati dalam penggunaan CALL serta jumlah POP dan PUSH yang harus sama dalam sebuah ISR.
Enam Interupsi dalam 8051
Sebenarnya ada 5 interupsi yang bisa kita gunakan pada 8051. Namun beberapa datasheet menyebutkan dengan 6 interupsi. Itu karena datasheet memasukkan reset sebagai interupsi. Adapun ke-enam interupsi ini dialokasikan sebagai berikut.
RESET. Saat pin reset diaktifkan, PC menjadi 0000h (Awal program). Semua isi register dihapus menjadi 00h. Semua port menjadi FFh. Sehingga dengan reset ini, CPU benar-benar memulai dari awal. (sebagaimana yang dibahas pada BAB 4)
Dua interupt lainnya adalah Timer. Salah satunya adalah Timer-0 dan satunya lagi adalah Timer-1. Lokasi memory pada Interupt Vector Table dari Timer ini masing-masing adalah 000Bh dan 001Bh.
Dua Interupt lainnya lagi adalah eksternal hardware interupt. Pin 12 (P3.2) dan pin 13 (P3.3) pada port 3 digunakan sebagai Interupsi Hardware Ekternal masing-masing INT0 dan INT1. Lokasi memory untuk kedua interupsi ini adalah 0003h dan 0013h.
Komunikasi serial juga memiliki satu Interupsi yang digunakan oleh kedua mode transfer data, baik itu pengiriman (melibatkan TI) dan penerimaan (melibatkan RI). Lokasi dari ISR interupsi ini adalah 0023h.
Harap dilihat pada tabel 11.1 bahwa ada batasan jumlah byte diantara tiap-tiap interupt vektor Table. Misalnya untuk INT-0, interupt hardware eksternal 0, total hanya memiliki 8-byte mulai dari 0003h – 000Ah. Hal yang sama juga ada pada alamat-alamat yang lain. Bagaimana kalau ternyata besar ISR lebih dari 8-byte. Oleh karena itu buatlah ISR ditempat lain yang aman. Dan berikanlah instruksi “Ajmp” atau LJmp” pada Interupt Vektr Table tersebut, sehingga CPU dapat menunjuk pada ISR yang lokasinya lebih jauh dan aman.
Dari tabel 11-1, pada kenyataannya hanya ada 3 byte yang disediakan untuk RESET. Yaitu alamat 0000, 0001 dan 0002. Sedang 0003 sudah menjadi milik INT0. Dengan alasan ini pembuat program selalu menggunakan alamat tersebut untuk diisi instruksi LJMP atau AJMP sebagai instruksi pertama. Sehingga progam dapat melompati Interupt Vector Table. Tapi jika kita memang tidak menggunakan interupsi apapun, tentu saja alamat pada Interupt Vector Table dapat digunakan secara bebas.
Tabel 11.1: Insterupt Vector Table pada 8051
Interupsi Lokasi ROM Pin
Reset 0000h 9
External Hardware 0 (INT0) 0003h 12 (P3.2)
Timer 0 (TF0) 000Bh
External Hardware 1 (INT1) 0013h 13 (P3.3)
Timer 1 (TF1) 001Bh
Serial COM (RI dan TI) 0023h
ORG 0 ;alamat pertama setelah reset
LJMP MULAI ;Lompati Interupt Vector Table
;——— Program Utama mulai dari sini
ORG 30h
MULAI:
…
END
Gambar 11-1 : Cara melompati Interupt Vektor Table setelah 8051 dihidupkan
Menghidupkan dan mematikan interupt
Setelah reset, semua interupsi dalam keadaan mati (disabled / masked), yang berarti CPU tidak akan merespon interupsi apapun. Interupsi harus dihidupkan melalui software agar mikrokontroller bisa meresponnya. Ada sebuah register yang dinamakan IE (Interupt Enable) yang bertugas untuk menghidupkan dan mematikan masing-masing interupsi. Gambar 11-2 menunjukkan register IE ini. Ingat IE adalah register yang juga bisa dialamati Bit.
Dari gambar 11-2 kita dapat melihat D7 dari register tersebut adalah EA (Enable All). Kita harus men-set bit ini menjadi 1s agar bit-bit yang lain dalam register ini berpengaruh. D6 tidak digunakan, sedang D5 hanya digunakan pada 8052. D4 adalah milik interupt serial, dan demikian seterusnya. Misalnya jika kita hendak mengaktifkan interupsi Timer-0, maka kita harus men-set D1. Interupsi masih belum bisa dikatakan aktif, sebelum kita juga men-set D7. Sebaliknya jika D7 clear atau rendah. Maka semua bit interupsi yang lain dianggap tidak aktif. Lho jadi apa kegunaan Bit EA ini? Ada kalanya kita menginginkan sebuah rutin, dimana rutin tersebut tidak boleh diganggu oleh interupsi apapun, cukup hanya dengan satu instruksi “CLR IE.7” atau “CLR EA”. Setelah rutin selesai kita bisa mengembalikan pada keadaan semua, juga hanya dengan satu instruksi “SETB IE.7” atau “SETB EA”. Cara tersebut jauh lebih efisien dari pada kita harus memeriksa semua bit interupsi yang aktif.
Langkah-langkah menghidupkan Interupsi
Untuk menghidupkan interupsi kita harus ikuti langkah-langkah ini.
Bit D7 dari register IE, yaitu EA harus di-set menjadi 1s. Agar bit-bit yang lain bekerja.
Setelah EA = 1, maka setiap bit pada IE yang bersangkutan akan membuat interupsi bekerja. Namun jika EA = 0, tidak akan ada interupsi walaupun bit-bit interupsi yang lain dalam keadaaan tinggi (1s).
Untuk mengerti hal ini sebaiknya ada lihat Contoh 11-1
EA IE.7 Untuk menghidupan peralatan Interupsi. Jika EA = 0, tidak ada interupsi yang akan dilayani. Jika EA =1, maka interupsi akan dilayani selama bit interusi yang bersesuian (IE.4 – IE.0) juga dalam keadaan tinggi.
— IE.6 Tidak digunakan.
— IE.5 digunakan khusus 8052.
ES IE.4 Hidup mati Interupsi Serial Port.
ET1 IE.3 Hidup mati Interupsi OverFlow Timer-1.
EX1 IE.2 Hidup mati Interupsi External 1.
ET0 IE.1 Hidup mati Interupsi OverFlow Timer-1.
EX0 IE.0 Hidup mati Interupsi External 0.
Gambar 11-2 Register IE (Interupst Enable)
Contoh 11-1
Tunjukkan instruksi untuk (a) menghidupkan interupsi serial, interupsi Timer-0 dan interupsi External harware 1 (EX1), dan (b) matikan (mask) Interupsi Timer-0, lalu (c) tunjukkan bagaimana mematikan mematikan semua interupsi dengan hanya satu instruksi.
Jawaban:
(a) MOV IE,#10010110b ;hidupkan Serial, Timer-0, EX1.
Mengingat IE adalah register yang bisa dialamati bit, maka kita dapat menggunakan intruksiseperti di bawah iniuntuk mengakses setiap bit dari register tersebut.
(b) CLR IE.1 ;matikan Timer-0 (bisa juga dengan “Clr ET0”)
(c) CLR IE.7 ;Matikan peralatan interupsi
cara lainnya untuk menulis “MOV IE,#10010110b” adalah bisa dengan menggunakan intstruksi bit seperti..
SetB IE.7 ;Hidupkan peralatan Interupsi
SetB IE.4 ;Hidupkan interupsi Serial
SetB IE.1 ;Hidupkan interupsi Timer-0
SetB IE.2 ;Hidupkan interupsi EX1
SubBAB 11.2: PEMROGRAMAN INTERUPSI TIMER
Pada BAB 9 kita mendiskusikan bagaimana menggunakan Timer-0 dan Timer-1 dengan metode biasa (polling). Dalam sub bab ini kita akan menggunakan interupsi untuk memprogram Timer pada 8051. Silahkan kembali membaca bab 9 sebelum anda melanjutkan bab ini.
Gambar 11.3: Interupsi TF0 dan TF1
Bendera RollOver Timer dan Interupsi
Pada BAB 9 kita telah mengetahui bahwa bendera Timer (TF) menjadi aktif saat Timer Rollover. Pada bab yang telah lalu, kita akan ditunjukkan bagaimana memonitor TF dengan instruksi “JNB TFx,lokasi”. Pada polling TF, kita harus menunggu sampai TF menjadi 1s. Masalah dengan metode ini, bahwa CPU akan tertahan/terpaku saat menunggu naiknya TF, dan tidak bisa melakukan hal selain menunggu. Menggunakan interupsi akan menyelesaikan masalah tersebut untuk mencegah CPU terpaku. Saat TF naik, CPU di-interupsi dari apa yang dikerjakan saat itu, lalu melompat ke vektor table untuk melayani ISR. Dengan demikian, CPU masih dapat melakukkan hal lain, sampai diinterupsi/diberitahu bahwa telah terjadi rollover Timer dan kemudian melakukan tugas yang berkaitan dengan Timer tersebut. Lihat Gambar 11-3 dan Contoh 11-2.
Perhatikan hal-hal tentang program dalam contoh 11-2 ini.
Kita harus menghindari penggunaan memory program di alamat yang digunakan dalam vektor table interupsi. Kita dapat menempatkan instruksi LJMP pada alamat 0000, yang menunjuk pada Program Utama kita yang berada ditempat yang lain. Kita dapat menempatkan program utama, yaitu program yang paling pertama dijalankan, mulai dari alamat 0030h. Sehingga CPU dapat melompati alamat-alamat yang digunakan vector table interupsi.
ISR untuk Timer-0 menempati alamat 000Bh. Karena kode yang kita gunakan lebih kecil dari 8-byte dan tidak sampai mengganggu alamat 0013h milik EX1, maka kita bisa menuliskan kode ISR mulai alamat 000Bh.
Tidak lupa kita menghidupkan interupsi Timer-0 dengan perintah “MOV IE,#10000010b” pada label MAIN.
Setelah itu data P0 diambil dan diletakkan pada P1 secara terus menerus, ketika Timer-0 rollover, TF menjadi tinggi, CPU keluar dari loop BACK, dan melompat ke 000Bh dan mulai mengeksekusi ISR yang dimulai dari alamat tersebut.
Dalam ISR Timer-0, perhatikan bahwa tidak dibutuhkkan instruksi “CLR TF0”, seperti yang harus dilakukan pada mode polling. Sebab karena kita menggunakan Interupsi, TF akan otomatis di-reset menjadi 0s begitu CPU mulai mengesekusi ISR.
Contoh 11-2
Tulislah progam untuk secara terus menerus membaca data 8-bit dari P0 dan mengirimkannya ke P1, sambil secara terus-menerus pula membuat gelombang kotak dengan perioda 200uS pada P2.1. Gunakan Timer-0 untuk membuat gelombang kotak. Dan menggunakan XTAL = 11.0592 MHz.
Jawaban:
Kita menggunakan Timer-0 pada Mode-2 (auto reload). TH0 = 100/1.085uS = 92.
;———————————————————–
ORG 0000h ;alamat pertama setelah reset
LJMP MULAI ;Lompati Interupt Vector Table
;
;—– ISR untuk Timer 0 utk menghasilkan gelombang kotak.
ORG 000Bh ;Interupt Vector Table untuk Timer-0
CPL P2.1 ;Toggle pin P2.1
RETI ;Akhir dari ISR
;
;—– Program Utama mulai dari sini
ORG 0030h ;Alamat bebas dari vektor table
MULAI: MOV TMOD,#02h ;Timer-0, Mode-2 (autoreload)
MOV P0,#0FFh ;Buat P0 untuk menjadi port input
MOV TH0,#-92 ;TH0 = A4h = -92
MOV IE,#82h ;IE=10000010b utk interupsi Timer
SETB TR0 :Jalankan Timer
ULANG: MOV A,P0 ;Ambil data dari Port 0
MOV P1,A ;Kirim data ke Port 1
SJMP ULANG ;Lompat ke ULANG, untuk terus mengulang
END
Contoh 11-3
Tulis ulang Contoh 11-2 untuk membuat gelomang kotak yang memiliki bagian tinggi 1085 uS dan bagian rendah 10 uS. Dengan menggunakan XTAL = 11.0592 MHz. Gunakan Timer-1.
Jawaban:
1085 uS bisa didapat dari 1000 x 1.085 uS, kita harus menggunakan Mode-1 pada Timer-1.
;———————————————————–
ORG 0000h ;alamat pertama setelah reset
LJMP MULAI ;Lompati Interupt Vector Table
;
;—– ISR untuk Timer 1 utk menghasilkan gelombang kotak.
ORG 001Bh ;Interupt Vector Table untuk Timer-1
LJMP ISR_T1 ;Lompat ke ISR
;
;—– Program Utama mulai dari sini
ORG 0030h ;Alamat bebas dari vektor table
MULAI: MOV TMOD,#10h ;Timer-1, Mode-1
MOV P0,#0FFh ;Buat P0 untuk menjadi port input
MOV TL1,#018h ;TL1 = 18h (low byte dari -1000)
MOV TH1,#0FCh ;TH1 = 18h (high byte dari -1000)
MOV IE,#88h ;IE=10001000b utk interupsi Timer-1
SETB TR1 :Jalankan Timer
ULANG: MOV A,P0 ;Ambil data dari Port 0
MOV P1,A ;Kirim data ke Port 1
SJMP ULANG ;Lompat ke ULANG, untuk terus mengulang
;
;—– IST Timer-1. Harus di-reload karena Timer pakai Mode-1
ISR_T1: CLR TR1 ;Matikan Timer
CLR P2.1 ;P2.1=0, mulai bagian rendah
MOV R2,#4 ; 2MC
TUNGGU: DJNZ R2,TUNGGU ; 4 x 2 siklus Mesin (MC) 8MC
MOV TL1,#018h ;Re-load nilai Low-Byte 2MC
MOV TH1,#0FCh ;Re-load nilai High-Byte 2MC
SetB TR1 ;Jalankan lagi Timer-1 1MC
SetB P2.1 ;P2.1=1, kembali (1s) 1MC
RETI ;Akhir dari ISR
END
Ingat bahwa bagian rendah dari sinyal adalah sepanjang 14 siklus mesin, dimana setiap siklus mesin = 1.085 uS. Sehingga hasilnya adalah 14 x 1.085 uS = 15.19 uS.
Contoh 11-4
Tulis program untuk menghaslkan gelombang kotak dengan frekuensi 50 Hz pada pin P1.2. Ini sangat mirip dengan Contoh 9-12 kecuali menggunakan Interupsi untuk Timer-0. Anggaplah kita menggunakan XTAL = 11.0592 MHz.
Jawaban:
;———————————————————–
ORG 0000h ;alamat pertama setelah reset
LJMP MULAI ;Lompati Interupt Vector Table
ORG 000Bh ;Interupt Vector Table untuk Timer-1
CPL P1.2
MOV TL0,#00h ;Re-load nilai Low-Byte
MOV TH0,#0DCh ;Re-load nilai High-Byte
RETI ;Akhir dari ISR
;———————————————————–
;—– Program Utama mulai dari sini
ORG 0030h ;Alamat bebas dari vektor table
MULAI: MOV TMOD,#01h ;Timer-0, Mode-1
MOV TL0,#00h
MOV TH0,#0DCh
MOV IE,#82h ;IE=10000010b utk interupsi Timer-0
SETB TR0 :Jalankan Timer
ULANG: SJMP ULANG ;Lompat ke ULANG, untuk terus mengulang
END
SubBAB 11.3: PEMROGRAMAN INTERUPSI HARDWARE EXTERNAL
8051 memiliki dua buah interupsi hardware eksternal. Pin 12 (P3.2) dan pin 13 (P3.3) masing-masing juga dinamakan dengan pin INT0 dan INT1. Digunakan untuk menghasilkan interupsi hardware eksternal. Jika pin-pin ini dipaksa menjadi rendah, CPU 8051 akan meloncat dari tugas normalnya, dan segera mengerjakan layanan ISR untuk interupsi yang aktif tersebut.
Gambar 11-4 Cara pengaktifan INT0 dan INT1
Interupsi Eksternal INT0 dan INT1
Kedua pin ini digunakan untuk membangkitkan interupsi secara eksternal. Kedua interupsi ini memmiliki alamat vektor, masing-masing untuk INT0 dan INT1 adalah 0003h dan 0013h. Seperti yang sudah kita bahas pada SubBAB 6-1 aktivasi pin-pin interupsi hardware tersebut dapat menghasilkan interupsi hanya saat bit-bit IE yang bersangkutan juga diaktifkan. Jika bit-bit tersebut 0s (rendah) maka aktifasi pin interupsi tidak akan menghasilkan apa-apa.
Bagaimana pin ini bisa diaktifkan. CPU 8051 mengenal 2 jenis aktifasi pin interupsi. Yaitu (a) Tersulut Level atau level triggered, dan (b) Tersulut Pinggir atau edge triggered.
Interupsi Tersulut Level
Saat RESET, sebagaimana port-port yang lain, masing-masing port INT0 dan INT1 berlaku sebagai port I/O biasa, yang berstatus 1s (tinggi). Demikian pula saat port tersebut digunakan sebagai interupsi, port tersebut masih dalam keadaan tinggi. Namun jika port ini dipakasa dibuat rendah sehingga berstatus 0s (low), maka interupsi menjadi aktif. Dan CPU 8051 akan segera menjalankan ISR yang berkaitan dengan interupsi ini. Port tersebut harus segera dikembalikan kembali ke keadaan semula (tinggi) sebelum CPU mengeksekusi perintah terakhir dari ISR, yaitu RETI. Jika pin tersebut tidak segera dikembalikan ke keadaan semula, maka saat CPU selesai menjalankan ISR, pin yang masih rendah tersebut dianggap sebagai interupsi baru, dan CPU menjalankan kembali ISR yang sama. Lihat Contoh 11-5.
Contoh 11-5
Anggaplah bahwa INT1 terhubung dengan saklar yang saat normal adalah high (tinggi). Begitu dibuat rendah, maka akan menyalakan LED. LED terhubung dengan P1.3 dan normalnya tinggi adalah Off. Saat dia dihidupkan dia akan hidup untuk beberapa saat. Dan selama saklar rendah , maka LED akan terus hidup.
Jawaban:
ORG 0
LJMP MULAI ;Lompati Interupt Vector Table
;—– ISR untuk INT1 (untu menyalakan LED)
ORG 13h
CLR P1.3 ;nyalakan LED
MOV R3,#255
TUNGGU: DJNZ R3,TUNGGU ;tetap hidupkan LED beberapa saat
SETB P1.3 ;matikan LED
RETI ;Akhir dari ISR
;—– Program Utama mulai dari sini
ORG 30h
MULAI: MOV IE,#10000100b ;Hidupkan Interupsi INT1
ULANG: SJMP ULANG ;Tunggu di sini sampai ada interupsi
END
Dalam program ini, CPU 8051 melakukan loop terus-menerus pada pada loop ULANG. Seketika switch pada INT1 (pin P3.3) diaktifkan, CPU akan keluar dari loop dan lompat ke vektor lokasi 13h. Dan ISR untuk INT1 akan menyalankan LED, dan terus menyalakannya sementara waktu, dan selanjutnya memadamkannya setelah selesai menjalankan ISR. Dan jika saat CPU telah selesai menjalankan instruksi RETI, sedang pin INT1 masih dalan keadaan rendah, CPU mengang itu sebuah interupsi baru dan akan menjalankan ISR kembali. Untuk mengatasi masalah tersebut pin INT1 harus sedapat mungkin dikembalikan tinggi sesaat sebelum instruksi RETI dijalankan.
Sampling The Low level Triggered interupst
Pin P3.2 dan P3.3 dalam keadaan normalnya digunakan sebagai port I/O biasa, kecuali jika bit INT0 dan INT1 pada register IE kita aktifkan (dibuat tinggi). CPU selalu mencuplik (Sampled) status tinggi dari pin ini setiap siklus mesin. Sehingga setiap perubahan status pada pin ini, CPU dapat membaca dengan cepat signal status rendah pada pin ini. Jika bit interupsi diaktifkan, CPU akan menganggap rendahnya status dari pin ini sebagai awal dari permintaan interupsi. Namun bagaimanapun juga CPU meminta agar panjang durasi tinggi dan rendah harus memenuhi syarat untuk bisa dianggap sebuah interupsi.
Beberapa datasaheet pabrik pembuat chip menerangkan, agar pint INT0 dan/atau INT1 harus tetap rendah, sampai interupsi diterima dan CPU 8051 mulai menjalankan layanan Interupsi (ISR). Dan jika pin tersebut dibuat tinggi kembali sebelum mulai dijalankannya layanan interupsi (ISR) yang bersangkutan, maka akan dianggap itu bukan interupsi. Dalam mode Interupsi Tersulut Level seperti ini, untuk menjamin sebuah pengaktifan interupsi dapat dibaca dengan benar oleh CPU, pin INT0 dan/atau INT1 harus dalam keadaan tinggi setidaknya 1 MC , dan kemudian harus dibuat rendah setidaknya 4 siklus mesin, atau sampai layanan Interupsi ISR mulai dijalankan. Setelah itu pin tersebut bisa dibuat tinggi kembali.
Menurut datasheet pula, bahwa jika pin INT0 dan/atau INT1 dibiarkan rendah walaupun layanan interupsi telah selesai dijalankan, maka CPU akan menganggap itu adalah interupsi kedua. Dan CPU kembali menjalankan ISR yang sama.
Gambar 11-5 Durasi minimum dari Interupsi Tersulut Level (XTAL=11.0592MHz)
Interupsi tersulut pinggir
Setelah kita belajar bagaimana interupsi dibangkitkan dari interupsi tersulut level rendah di atas, maka sekarang kita akan membahas interupsi tersulut pinggir. Perbedaan yang paling mencolok dari kedua jenis mode sulut (Trigggering mode) adalah… Jika tersulut level, adalah level rendah setidaknya 4 MC maka akan dianggap aktifasi interupsi. Selama pin tersebut rendah maka dianggap interusi. Namun pada interupsi tersulut pinggir, adalah setiap adanya transisi port dari tinggi ke rendah, akan dianggap suatu interupsi, tidak masalah seberapa panjang baik status tinggi maupun status rendahnya.
Untuk dapat memperoleh fitur yang menarik ini, kita harus kembali menyimak register TCON. Bit TCON.0 (IT0) dan TCON.2(IT1) masing-masing digunakan untuk menjadikan pin-pin tersebut bereaksi pada saat transisi tinggi ke rendah yang dikenakan pada mereka (yaitu masuk dalam mode edge triggered). Jika TCON.0 = 0 maka pin INT0 akan bekerja sebagai level triggered, namun saat TCON.0 = 1, maka INT0 akan bekerja sebagai edge triggered. Demikian pula TCON.2 untuk pin INT1.
Lihat bit-bit lain dari register TCON ini. Bit TCON.1 (IE0) dan TCON.3(IE1) masing-masing digunakan untuk mengunci status dari INT0 dan INT1 saat adanya transisi tinggi ke rendah. Bit-bit ini sebenarnya bertindak sebagai bendera yang menyatakan “sebuah interupsi sedang dalam pelayanan” dan akan mengabaikan setiap transisi tinggi ke rendah lainnya selama CPU masing menjalankan ISR dari interupsi yang sama. Dan begitu CPU selesai melayani ISR dari interupsi sebelumnya, maka transisi tinggi ke rendah pada pin-pin tersebut akan segera ditanggapi sebagai interupsi baru.
TF1 TCON.7 Bender Overflow Timer-1. Bendera ini di-set oleh hardware saat Tmer/Counter overflow. Bisa di-Clear secara hardware oleh peralatan Interupsi, saat mCPU menjalankan ISR.
TR1 TCON.6 Bit Control Run Timer-1. Di-Set dan di-Clear oleh software untuk menghidupkan dan mematikan Timer-1.
TF0 TCON.5 Bender Overflow Timer-0. Bendera ini di-set oleh hardware saat Tmer/Counter overflow. Bisa di-Clear secara hardware oleh peralatan Interupsi, saat mCPU menjalankan ISR.
TR0 TCON.4 Bit Control Run Timer-0. Di-Set dan di-Clear oleh software untuk menghidupkan dan mematikan Timer-0.
IE1 TCON.3 Bendera Sulut Pinggir(Edge Flag) Interupsi Eksternal-1. Di-Set oleh CPU saat adanya Interupsi Eksternal Sult Pinggir (transisi H ke L). Do-Slear oleh CPU setelah interupsi diproses. Bit ini tidak bekerja pada Interupsi Sulut Level.
IT1 TCON.2 Bit Control Type Interupsi 1. Di-Set/Clear oleh software untuk menjadikan Insterupsi eksternal Sulut Pinggir / Sulut Level.
IE0 TCON.1 Bendera Sulut Pinggir(Edge Flag) Interupsi Eksternal-0. Di-Set oleh CPU saat adanya Interupsi Eksternal Sult Pinggir (transisi H ke L). Do-Slear oleh CPU setelah interupsi diproses. Bit ini tidak bekerja pada Interupsi Sulut Level.
IT0 TCON.0 Bit Control Type Interupsi 0. Di-Set/Clear oleh software untuk menjadikan Insterupsi eksternal Sulut Pinggir / Sulut Level.
Gambar 11-: Register TCON (Timer/Counter Control) (Bisa Dialamati Bit)
Lihat pada Contoh 11-6, Perhatikan bahwa satu-satunya perbedaan program ini dengan program pada Contoh 11-5 adalah pada baris pertama pada MAIN, di mana Instruksi “SETB TCON.2” membuat INT1 menjadi Interupsi Tersulut Pinggir. Saat adanya falling edge (pinggir menurun / H ke L) dari sinyal pada pin INT1, LED akan menyala beberapa waktu. Durasi nyala LED tergantung pada tundaan waktu dalam ISR untuk INT1. Untuk kembali menyalakan LED, transisi Tinggi ke Rendah (H ke L) berikutnya harus diberikan pada pin P3.3 (INT1). Hal ini berbeda dengan Contoh 11-5, dimana interupsi terjadi (tersulut) oleh level rendah yang ada pada pin P3.3 (INT1). Selama pin tersebut rendah, maka selama itu pula LED akan menyala. Sekali lagi seperti pada Contoh 11-6, untuk menyalakan LED kembali, pin P3.3 tersebut harus dibuat tinggi kembali agar kemudian dapat dibuat transisi tinggi ke rendah untuk mengaktifkan interupsi.
Contoh 11-6
Anggaplah pin P3.3 (INT1) terhubung dengan Generator Pulsa, tulislah program di mana saat terjadinya transisi tinggi ke rendah pada pin ini, CPU menyalakan LED atau Buzzer dengan membuat pin P1.3 rendah. Dengan kata lain adalah Lampu akan menyala saat terjadinya transisi tinggi ke rendah pada pin P3.3 (INT1). Ini adalah program dengan versi yang lain dari program pada Contoh 11-5.
Jawaban:
ORG 0
LJMP MULAI ;Lompati Interupt Vector Table
;—– ISR untuk INT1 (untuk menyalakan LED)
ORG 13h
CLR P1.3 ;nyalakan LED
MOV R3,#255
TUNGGU: DJNZ R3,TUNGGU ;tetap hidupkan LED beberapa saat
SETB P1.3 ;matikan LED
RETI ;Akhir dari ISR
;—– Program Utama mulai dari sini
ORG 30h
MULAI: SETB TCON.2 ;Buat INT1 sbg Interupsi Sulut Pinggir
MOV IE,#10000100b ;Hidupkan Interupsi INT1
ULANG: SJMP ULANG ;Tunggu di sini sampai ada interupsi
END
Sampling The Egde Triggered interupst
Sebelum mengakhiri SubBAB ini, kita harus dapat menjawab pertanyaan bagaimana caranya Interupsi Tersulut Pinggir di-sampled (Ind = Cuplik). Interupsi Tersulut Pinggir, sumber eksternal harus dalam keadaan tinggi setidaknya 1 siklus mesin sebelum memulai transisi ke status rendah. Dan status rendah tersebut juga setidaknya 1 siklus mesin. Hal itu diperlukan untuk menjamin CPU dapat membaca transisi tersebut sebagai Interupsi Eksternal Tersulut Pinggir.
Transisi tersebut dikunci (latched) oleh 8051 dan menyimpan status adanya transisi tersebut pada register TCON. Bit TCON.1 dan TCON.2 yang menyimpan status transisi pinggir masing-masing untuk INT0 dan INT1. TCON.1 dan TCON.3 ini juga masing-masing disebut sebagai IE0 dan IE1, seperti yang ditunjukkan pada gambar 11-6. Dengan fungsi sebagai bendera bahwa interupsi masih dalam layanan (interupt-in-service flag). Demikian dapat pula berarti, bahwa bendera ini menjadi sebagai tanda pada dunia luar bahwa interupsi masih dalam layanan, dan setiap ada transisi tinggi ke rendah yang diberikan pada pin yang bersangkutan untuk sementara tidak akan direspon. Dan begitu layanan tersebut selesai dijalankan, CPU bisa merespon interupsi berikutnya. Hal ini mirip nada sibuk (Busy Signal), saat anda mencoba menghubungi nomor telpon yang sedang digunakan. Berikutnya untuk bit TCON lainnya yaitu IT0 dan IT1, kita harus memeperhatikan dua hal berikut ini.
Hal pertama adalah saat CPU telah selesai menjalankan ISR (dengan dieksekusinya instruksi RETI), bit ini (TCON.1 dan/atau TCON.3)akan di-Clear, yang menandakan bahwa seluruh proses dari interupsi telah selesai dilaksanakan, dan selanjutnya CPU 8051 siap untuk menerima intrupsi berikutnya pada pin yang bersangkutan. Agar interupsi berikutnya dapat dimengerti oleh CPU, pin tersebut harus dikembalikan sesaat ke keadaan tinggi untuk kemudian memulai transisi tinggi ke rendah. Itu yang harus diperhatikan dalam Interupsi Tersulut Pinggir.
hal ke dua adalah saat Insterupt Service Routine (ISR sedang dijalankan, pin INTn akan diabaikan, tidak masalah berapa kali transisi tinggi ke rendah terhadap pin ini. Dan kita harus tahu fungsi dari intruksi RETI juga untuk men-Clear-kan bit yang bersangkutan pada register TCON (TCON1 atau TCON.0). Ini untuk memberitahukan bahwa layanan interupsi tidak ada lagi atau telah selesai. Itu sebabnya TCON1 dan TCON.0 pada register TCON tersebut disebut dengan bendera Interupt-In-Service. Bendera ini menjadi tinggi saat transisi tinggi ke rendah terbaca pada pin INTn, dan akan tetap tinggi selama CPU menjalankan ISR. Dan akhirnya bit ini hanya di-clear secara otomatis oleh instruksi RETI yang harus diletakkan sebagai akhir dari ISR. Oleh karena itu tidak dibutuhkan perintah untuk men-clear-kan bit tersebut, seperti dengan “CLR TCON.1” atau “CLR TCON.3” sebelum instruksi “RETI” pada akhir ISR yang bersangkutan. Hal yang berbeda dimiliki interupsi komunikasi serial, dimana akan kita bahas pada SubBAB berikutnya.
Contoh 11-7
Apa perbedaan antara instruksi RET dengan RETI? Jelaskan kenapa kita tidak bisa menggunakan RET untuk menggantikan RETI di akhir sebuah ISR.
Jawaban:
Keduanya melakukan hal yang sama, yaitu me-POP keluar dua byte dari stack dan meletakkannya pada Program Counter, dan membuat 8051 melompat kembali ke alamat PC yang baru. Namun untuk RETI, dia memiliki tugas tambahan, yaitu men-Clear-kan bendera Interupt-In-Service, yang menandakan layanan interupsi telah selesai, untuk kemudian 8051 siap untuk menerima interupsi berikutnya. Jika kita menggunakan RET unteuk menggantikan RETI sebagai akhir dari ISR, maka bendera Interupt-In-Service tetap tinggi, sehingga tidak akan ada lagi interupsi yang ditanggapi. Seolah-olah CPU terus-menerus melayani interupsi. Bit-bit yang termasuk sebagai Interupt-In-Service, yang di-clear oleh instruksi RETI, adalah TF1, TF0, TCON.1, dan TCON3.
Lebih jauh tentang register TCON
Selajutnya kita akan membahas register TCON lebih jauh untuk lebih mengerti aturan dalam penanganan interupsi. Gambar 11-6 menunjukkan bit-bit pada register TCON.
IT0 dan IT1
TCON.0 dan TCON.2 juga masing-masing disebut dengan IT0 dan IT1. kedua bit ini mengatur mode untuk insterupsi eksternal hardware pada pin INT0 dan INT1 sebagai Tersulut Level Rendah ataukah Tersulut Pinggir. Ke dua bit ini berstatus rendah saat reset, dan membuat berada dalam mode Tersulut Level Rendah. Kita dapat memperogram bit ini untuk membuat interupsi ini menjadi Tersulut Pinggir.
IE0 dan IE1
TCON.1 dan TCON.3 masing-masing juga disebut sebagai IE0 dan IE1. Bit-bit ini digunakan oleh 8051 hanya untuk melacak adanya Interupsi Tersulut Pinggir. Dengan kata lain jika IT0 dan IT1 dalam keadaan 0, yang artinya interupsi hardware dalam mode Tersulut Level, IE0 dan IE1 tidak berguna. IE0 dan IE1 hanya digunakan 8051 untuk mengunci transisi Tinggi ke rendah pada pin INT0 dan INT1. Adanya perubahan transisi tinggi ke rendah pada pin ini akan ditandai oleh CPU 8051, dan tanda tersebut adalah dengan men-set bit IE0 dan/atau bit IE1 milik register TCON ini. Dan selanjutnya program akan melompat ke vektor tabel untuk mulai menjalankan ISR.
Begitu ISR dijalankan tidak ada lagi transisi Tinggi ke rendah (H ke L) yang ditanggapi. Hanya instruksi RETI pada akhir ISR yang bisa membuat CPU men-Clearkan bit-bit ini. Sehingga transisi H ke L yang baru, kemudian dapat kembali dianggap sebagai permintaan interupsi. Dari diskusi ini kita dapat memahami bahwa IE0 dan IE1 digunakan secara internal oleh 8051 untuk sebagai tanda bahwa sebuah interupsi telah digunakan dan dalam proses layanan. Dengan kata lain kita tidak perlu terlalu memperhatikan bit-bit ini, karena bit hanya digunakan secara internal oleh 8051, dan bukan dirancang untuk keperluan kita.
TR0 dan TR1
Ini adalah Bit D4 (TCON.4) dan D6 (TCON.6) dari register TCON. Kita telah diperkenalkan akan bit-bit ini pada BAB 9. Mereka digunakan untuk menjalankan dan mneghentikan Timer/Counter. Bit ini adalah bit-adrresable.
TF0 dan TF1
Ini adalah Bit D5 (TCON.5) dan D7 (TCON.7) dari register TCON. Kita telah diperkenalkna akan bit-bit ini pada BAB 9. Mereka digunakan masing-masing oleh Timer-0 dan Timer-1, untuk menandai bahwa Timer/Counter telah terjadi Rollover. Bit ini adalah bit-adrresable.
SubBAB 11.4: PEMROGRAMAM INTERUPSI KOMUNIKASI SERIAL
Pada Bab 10 kita mempelajari komunikasi serial pada 8051. Semua contoh pada bab tersebut menggunkan metoda polling. Pada SubBAB ini kita akan mengulas komunikasi serial yang berbasis interupsi, di mana akan membuat CPU 8051 masih bisa mengerjakan pekerjaan lainya, sambil mengirim dan menerima data dari port komunikasi serial
Bendera RI dan TI serta Interupsi
Seperti yang kita ketahui pada BAB 10, TI (Transfer Interupt) akan tinggi setelah bit terakhir dari bingkai data, yaitu bit stop , telah terkirim, yang menandakan register SBUF telah siap untuk menerima data yang baru. Dan sebaliknya RI (Receive Interupt), akan menjadi tinggi saat setelah semua bingkai data, termasuk bit stop telah diterima. Dengan kata lain, saat register SBUF telah mendapatkan data lengkap dari COM, RI akan tinggi yang menandakan bawah byte yang telah diterima harus segera diambil sebelum data tersebut hilang, tertimpa data yang datang kemudian. Selama kita menitik-beratkan pada komunikasi serial, konsep diatas sama dalam penerapannya baik menggunakan metode polling maupun dengan menggunakan metode Interupt. Satu-satunya peredaaan dari kedua metode tersebut, adalah bentuk layanannya. Dalam metode polling, kita harus menunggu tingginya bendera TI atau bendera RI. Sementara itu dilakukan, CPU tidak dapat melakukan hal yang lain. Sedang pada metode Interupt, kita akan diberitahu jika 8051 telah menerima data byte, atau 8051 telah siap untuk mengirimkan data selanjutnya, Kita dapat melalukan hal-hal penting lainnya, sambil tetap melayani komunikasi serial.
8051 hanya menyediakan satu buah vektor interupsi untuk komunikasi serial. Vektor ini digunakan bersama oleh RI (penerimaan) dan TI (pengiriman). Jika bit IE.4, yaitu bit untuk interupsi serial diaktifkan dengan dibuat tinggi, maka berubahnya status TI atau RI menjadi tinggi akan membangkitkan interupsi serial, dan program akan melompat ke alamat yang sama, yakni 0023h untuk kemudian menjalankan ISR dari alamat tersebut. ISR harus diisi kode yang bisa membedakan bahwa interupsi disebabkan oleh TI ataukah oleh RI.
Gambar 11-7: Satu Vektor Interupsi untuk dua bendera TI dan RI
Menggunakan Serial COM pada 8051
Penggunaan interupsi pada 8051 dalam banyak aplikasi hanya digunakan untuk menerima data. Dan sangat jarang digunakan untuk mengirim data. Hal ini mirip sebuah telpon di rumah kita. Saat telepon berdering, sesegera mungkin kita untuk menjawab telepon tersebut sebelum telepon diputus. Kita harus meninggalkan pekerjaan kita untuk sementara, demi menjawab telepon tersebut. Namun saat kita hendak menelpon keluar, kita dapat melakukannya kapan kita mau. Demikian pula yang biasa digunakan oleh beberapa aplikasi pada 8051. Interupsi Serial digunakan untuk penerimaan data, mengingat sesegera mungkin data yang telah diterima diletakkan pada tempat yang aman sebelum data tersebut hilang karena tertimpa data yang baru. Lihat contoh 11-9.
Contoh 11-8
Tulis program agar 8051 dapat membaca data dari port P1 dan menuliskannya pada Port P2 terus menerus, sambil memberikan salinan data tersebut pada port COM serial untuk dikirimkan dengan cara serial. Anggaplah menggunakan XTAL = 11.0592 MHz. Atur baud rate pada 9600.
Jawaban:
ORG 0
LJMP PROGRAM_UTAMA
ORG 23h
LJMP SERIAL
ORG 30h
PROGRAM_UTAMA:
MOV P1,#0FFh ;Buat P1 sebagai Port Input
MOV TMOD,#20h ;Timer-1, Mode-2 (autireload)
MOV TH1,#0FDh ;baud rate 9600
MOV SCON,#50h ;8-bit, 1-stop, ren = 1
SETB TR1 ;jalankan Timer-1
ULANG: MOV A,P1 ;Baca data pada P1
MOV SBUF,A ;Kirim data ke COM seroal
MOV P2,A ;Tulis ke Port 2
SJMP ULANG
;———————–ISR untuk Serial Port
SERIAL: JB TI, TRANS ;lompat jika TI =1
MOV A,SBUF ;menyimpan data dari COM serial
CLR RI ;reset RI
RETI ;kembali dari ISR
TRANS: CLR TI ;reset TI
RETI ;kembali dari ISR
END
Masalah yang utama seperti pada program di atas adalah aturan untuk TI dan RI. Saat byte sedang dituliskan pada SBUF, maka data akan dibingkai dan dikirim secara serial. Hasilnya, saat bit terakhir (bit stop) dikirimkan, maka TI menjadi tinggi. Ini kemudian akan membangkitan interupsi (tentu jika bit-bit yang berkenaan pada IE diaktifkan). Namun dalam program ISR, kita harus memeriksa kedua TI dan RI karena dua bit ini mengaktifkan interupsi yang sama. Dengan kata lain kedua sumber interupsi itu menggunakan satu interupsi baik itu saat pengiriman data maupun saat menerima data.
Contoh 11-9
Tulis program agar 8051 dapat membaca data P1 dan mengirimkannya pada P2 secara terus menerus, sambil menuliskan data yang diterima dari port serial, Anggaplah menggunakan XTAL 11.0592 MHz.
Jawaban:
ORG 0000
LJMP PROGRAM_UTAMA
ORG 0023h
LJMP SERIAL
ORG 0030h
PROGRAM_UTAMA:
MOV P1,#0FFh ;Buat P1 sebagai Port Input
MOV TMOD,#20h ;Timer-1, Mode-2 (autireload)
MOV TH1,#0FDh ;baud rate 9600
MOV SCON,#50h ;8-bit, 1-stop, ren = 1
MOV IE,#10010000b ;aktifkan Interupsi Serial
SETB TR1 ;jalankan Timer-1
ULANG: MOV A,P1 ;Baca data pada P1
MOV P2,A ;Tulis ke Port 2
SJMP ULANG
;———————–ISR untuk Serial Port
SERIAL: JB TI,TRANS ;lompat jika TI =1
MOV A,SBUF ;menyimpan data dari COM serial
MOV P0,A
CLR RI ;reset RI
RETI ;kembali dari ISR
TRANS: CLR TI ;reset TI
RETI ;kembali dari ISR
END
Mereset RI atau TI sebelum Instruksi RETI
Saat kita menggunakan interupsi pada Timer atau hardware external, bendera interupsi akan di-reset (dibuat rendah) oleh CPU begitu menjalankan ISR dari interupsi yang bersangkutan. Hal yang berbeda pada Interupsi Serial, CPU tidak me-reset RI atau TI saat ISR serial dijalankan. Padahal RI dan TI harus dibuat rendah setelah menjalankan ISR. Sehingga RI dan TI tersebut harus dibuat rendah oleh programmer (kita) secara software, dengan memberikan perintah “CLR TI” atau “CLR RI”. Lihat Contoh 11-10, dua perintah terakhir dari ISR Serial adalah me-reset TI dan RI, diikuti perintah “RETI”.
Contoh 11-10
Tulislah progam dengan menggunakan interupsi untuk dibawah ini.
(a) Terima data serial dan kirimkan pada P0.
(a) Setelah port P1 dibaca, dan kirimkan data secara serial dan berikan salinannya untuk P2
(b)Buat Timer-0 untuk menghasilkan gelombang kotak pada frekuensi 5 kHz pada Pin P0.1.
Jawaban:
ORG 0
LJMP PROGRAM_UTAMA
ORG 0Bh
CPL P0.1 ;togle P0.3
RETI
ORG 23h
LJMP SERIAL
ORG 30h
PROGRAM_UTAMA:
MOV P1,#0FFh ;Buat P1 sebagai Port Input
MOV TMOD,#22h ;Timer-1, Mode-2 dan
;Timer0, juga pada Mode-2
MOV TH1,#0F6h ;baud rate 4800 bps
MOV SCON,#50h ;8-bit, 1-stop, ren = 1
MOV TH0,#-92 ;untuk gelombang 5 kHz
MOV IE,#10010010b ;aktifkan Interupsi Serial n Timer-0
SETB TR0 ;jalankan Timer-0
SETB TR1 ;jalankan Timer-1
ULANG: MOV A,P1 ;Baca data pada P1
MOV SBUF,A ;mengirim data pada COM serial
MOV P2,A ;Tulis ke Port 2
SJMP ULANG
;———————–ISR untuk Serial Port
SERIAL: JB TI, TRANS ;lompat jika TI =1
MOV A,SBUF ;menyimpan data dari COM serial
MOV P0,A
CLR RI ;reset RI
RETI ;kembali dari ISR
TRANS: CLR TI ;reset TI
RETI ;kembali dari ISR
END
Sebelum menyelesaikan subBAB ini, harap perhatikan semua bendera interupsi yang ditunjukkan pada Tabel 11-2. Register TCON berisi 4 bendera interupsi, sedang bendera RI dan TI ditempatkan pada register SCON.
Tabel 11-2: Bit-bit bendera Interupsi pada 8051
Inteurpt Bendera Bit register SFR
Eksternal 1 INT1 TCON.1
Timer 1 TF1 TCON.3
Eksternal 0 INT0 TCON.5
Timer 0 TF0 TCON.7
Komunikasi Serial RI+TI SCON.1
SubBAB 11.5: PRIORITAS INTERUPSI PADA 8051
Pada SubBAB ini kita akan membahas tentang masalah jika ada dua interupsi yang aktif dalam waktu yang bersamaan. Yang mana yang akan ditanggapi terlebih dahulu oleh 8051? Nah Prioritas Interupsi inilah yang akan kita bahas lebih mendetil.
Prioritas Interupsi setelah RESET
Saat 8051 baru dihidupkan, prioritas interupsi menjadi seperti yang ditunjukkan pada Tabel 11-3. Seperti pada Tabel tersebut, jika interupsi ekternal 0 dan interupsi ekternal 1 sama-sama aktif, maka yang pertama ditanggapi adalah interupsi eksternal 0. Dan interupsi eksternal 1 akan ditanggapi dan dilayani, hanya setelah CPU telah selesai menjalankan ISR interupsi eksternal 0. Hal ini karena interupsi eksternal 1 memiliki prioritas yang lebih rendah.
Tabel 11-3: Prioritas Interupsi pada 8051 setelah Reset
Prioritas Tertinggi sampai terendah
Interupsi Eksternal 1 INT1
Interupsi Timer 1 TF1
Interupsi Eksternal 0 INT0
Interupsi Timer 0 TF0
Interupsi Komunikasi Serial RI+TI
Contoh 11-11
Bagaimana apabila interupsi semacam INT0, TF0, dan INT1, ternyata aktif dalam waktu yang bersamaan. Dengan menganggap level prioritas diatur seperti keadaan setelah reset, dan interupsi hardware eksternal pada mode Tersulut Level.
Jawaban:
Jika dari ketiga interupsi ini aktif dalam waktu yang bersamaan, mereka akan dikunci dan disimpan statusnya secara internal. Kemudian 8051 memeriksa kelima sumber interupsi menurut urutannya seperti yang ditampilkan pada Tabel 11-3. Jika ada yang aktif, maka kesemuanya dilayanai menurut urutannya. Sehingga jawaban dari pertanyaan di atas adalah urutan dari instrupsi yang aktif tersebut adalah, IE0 (eksternal interupt 0) dilayani pertama kali, lalu Timer-0 (TF0), dan akhirnya IE1 (eksternal interupt 1).
— IP.7 Tidak digunakan.
— IP.6 Tidak digunakan.
— IP.5 Digunakan khusus 8052 untuk Timer-2.
PS IP.4 Bit Prioritas Interupsi Serial Port.
PT1 IP.3 Bit Prioritas Interupsi Timer-1.
PX1 IP.2 Bit Prioritas Interupsi External 1.
PT0 IP.1 Bit Prioritas Interupsi Timer-0.
PX0 IP.0 Bit Prioritas Interupsi External 0.
Kita diharapkan untuk tidak menulis bit-bit yang tidak digunakan, karena bit tersebut mungkin digunakan oleh produk sejenis lainnya.
Gambar 11-8: Register Prioritas Interupsi (Bisa dialamati Bit)
Mengatur Prioritas Interupsi dengan register IP
Kita dapat mengubah urutan prioritas interupsi tersebut, misalnya dengan menjadikan salah satu interupsi lebih tinggi dari semua interupsi yang lainnya. Hal ini bisa kita lakukan dengan memrogram bit yang bersangkutan pada sebuah register yang kita namakan register IP (Interupt Priority), menjadi tinggi. Lihat Contoh 11-12
Hal lain yang harus diperjelas adalah di saat dua atau lebih dari interuupsi ternyata sama memiliki bit yang tinggi pada register IP, maka urutan dari interupsi-interupsi ini kembali seperti pada Tabel 11-3. Lihat contoh 11-13.
Catatan dari penterjemah. Pada pinsipnya proses bagi 8051 untuk menemukan insterupsi tetap menggunakan metode polling. Lho koq bisa, kan kita menggunakan interupsi? Yah itulah yang sebenarnya dilakukan mesin 8051 secara internal. 8051 akan selalu melakukan polling mulai dari INT0 dan seterusnya… seperti urutan pada tabel 11-3 namun bagi yang memiliki bit 1 pada register IP. Dan sekali lagi seperti urutan tabel 11-3 dengan bit 0 pada regsiter IP. Jadi seolah olah kita memiliki dua urutan, urutan pertama (yang memiliki hirarki/derajat lebih tinggi) dengan bit 1 pada IP dan urutan yang sama dengan bit 0 pada IP.
Contoh 11-12
(a) Program-lah register IP untuk mengatur prioritas tertinggi bagi INT1 (eksternal Interupt 1), dan (b) jelaskan apa yang terjadi jika (INT0, INT1, dan TF0 ternyata aktif bersamaan. Anggaplah kedua interupsi eksternal dalam Mode Tersulut Pinggir.
Jawaban:
(a) MOV IP,#00000100b ;IP.2=1 utk INT1 setingkat lebih tinggi.
Dapat pula mengunakan intruksi “SETB IP.2”. Mengingat register IP adalah bisa dialamati Bit.
(b) Karena dari langkah (a) intruksinya adalah mengatur INT1 menjadi memiliki prioritas lebih tinggi, dan merupakan satu-satunya yang memilik bit 1 pada register IP, maka INT1-lah yang akan dilayani pertama kali, baru kemudian INT0 dan selanjutnya TF0. Demikian seperti tabel 11-3.
Contoh 11-13
Anggaplah setelah reset, prioritas interupsi telah diatur dengan instruksi “MOV IP,#00001100b”. Jelaskan urutan dari tingkat masing-masing interupsi yang dilayani oleh 8051.,
Jawaban:
Instruksi “MOV IP,#00001100b” (b maksudnya binary) mengatur interupsi eksternal 1 (INT1) dan Timer-1(TF1) menjadi memiliki prioritas lebih tinggi satu tingkat. Selanjutnya 8051 akan melakukan polling mulai dari bagian prioritas tinggi dan bagian prioritas biasa, semuanya seperti menuruttabel 11-3. Hasil urutannya adalah demikian.
Prioritas Tinggi INT1 Interupsi Eksternal 1
Prioritas Tinggi TF1 Interupsi Timer 1
Prioritas Biasa INT0 Interupsi Eksternal 0
Prioritas Biasa TF0 Interupsi Timer 0
Prioritas Biasa RI+TI Interupsi Komunikasi Serial
Interupsi di dalam Interupsi
Apa yang terjadi saat CPU sedang menjalankan ISR dari sebuah interupsi, lalu kemudian ada interupsi lain yang tiba-tiba aktif? Pada kasus yang demikian Interupsi yang memiliki prioritas lebih tinggilah yang dapat menginterupsi sebuah interupsi yang memiliki prioritas lebih rendah. Sebaliknya sebuah interupsi tidak bisa diinterupsi oleh interupsi yang memiliki prioritas yang lebih rendah. Semua permintaan interupsi yang memiliki prioritas lebih rendah akan diterima dan disimpan oleh CPU, dan CPU belum akan menjalankan ISR dari interupsi tersebut sampai semua layanan ISR interupsi yang lebih tinggi selesai dijalankan.
Membangkitkan Interupsi dengan Software
Ada cara yang cukup baik untuk menguji sebuah ISR yang telah kita buat, seperti yang sering dilakukan pada simulasi. Yaitu dengan menggunakan perintah yang sangat sederhana yaitu dengan men-set bit interupsi menjadi tinggi, yang kemudian CPU akan melompat pada alamat vektor tabel yang bersangkuitan. Misalnya, kita men-set bit-bit Timer pada register IE. Selanjutnya dengan menggunakan perintah “SETB TF1”, akan langsung membangkitkan interupsi, dan CPU akan melompat ke interupt vector table. Sehingga kita tidak perlu menunggu Timer menjadi rollover. Singkat kata kita dapat memaksa untuk membangkitan interupsi dengan membuat tinggi bendera interupsi yang diinginkan.
RINGKASAN
Interupsi adalah sebuah keadaan atau kejadian (event) pada internal maupun eksternal 8051 yang bisa menginterupsi CPU, dan memberitahukan CPU bahwa sebuah alat meminta layanan segera. Setiap interupsi memiliki program layanan tersendiri yang disebut ISR, Interupt Service Routine. 8051 memiliki 6 interupsi, 5 diantaranya yang bisa diakses oleh user. Yaitu interupsi untuk RESET, dua untuk Timer, dua lagi untuk Hardware Eksternal, dan satu interupsi komunikasi serial.
8051 dapat diprogram untuk menghidupkan dan mematikan interupsi, termasuk untuk mengubah prioritas dari masing-masing interupsi. Bab ini menjelaskan bagaimana untuk memrogram interupsi pada 8051.
Tagged Pemrograman Interupsi
Author: Musbikhin
Navigasi pos
← KOMUNIKASI SERIAL PADA 8051
Berhubungan dengan Dunia Nyata I: LCD, ADC, dan Sensor-sensor →
2 thoughts on “Pemrograman Interupsi”
Musbikhin berkata:
8 Januari 2014 pukul 1:16 pm
mungkin bouncing di sisi hardwarenya pak,,,coba input interupnya dikasih kapasitor…
Log masuk untuk Membalas
paijo berkata:
2 Desember 2011 pukul 1:14 pm
maju terus pak Mus……..!!!!!
Log masuk untuk Membalas
Tinggalkan Balasan Batalkan balasan
Anda harus masuk log untuk mengirim sebuah komentar.
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Search for:
Dapatkan tutorial, sourcecode, ebook, video gratis tentang mikrokontroler, plc, arduino dll. Untuk pertama dapatkan sourcecode kontrol alat listrik 4channel via pc dengan gui dari vb.net. GRATIS dengan
Masukkan email anda disini
Popular
Latest
Popular
Latest
Cetak PCB Recomended
Products
Jual Paket file PCB menggunkan software eagle ( .brd ), Sourcecode program avr (pakai software cvavr dan avrstudio), Sourcecode program MCS51, Simulasi Proteus, dan Tutorial cvavr lengkap Murah tinggal cetak

annotation: short_sentences header footer

label: fr


content:
Bandingkan & Pesan tiket dari Prado ke Boston secara online. Temukan semua Prado Boston promo tiket dari semua maskapai.
Tiket Prado ke Boston : Lokasi & Informasi bandara
Prado
Waktu setempat di Prado adalah : GMT-03:00
Harga hotel di Prado
Pelayanan Bandara PRADO
Prado (PDF) , Prado tiket pesawat ke Prado PDF
Tiket pesawat ke Brazil
Boston
Waktu setempat di Boston adalah : GMT-05:00
Boston adalah ibu kota dan kota terbesar di negara bagian Massachusetts. Kota ini juga merupakan kota tertua di Amerika Serikat. Boston adalah kota pendidikan. Siswa dari seluruh dunia datang ke Boston untuk pendidikan terkemuka dan penelitian, mulai dari teknik dan Biomed hingga bisnis dan politik. Boston juga memukau wisatawan dengan taman-taman yang indah dan rumah-rumah bergaya Victoria. Boston Common dan Beacon Hill adalah beberapa tempat-tempat menarik di Boston.

content-type: text/plain

warc-identified-content-language: ind,eng

warc-type: conversion

label: id

label: it


content:
Malang merupakan kota mempunyai banyak tempat – tempat wisata yang sangat populer di seluruh Indonesia apalagi berbicara tentang tempat untuk kegiatan outbound, tidak diragukan lagi karena Banyak sekali tempat di malang ini untuk bisa di jadikan sebagai area untuk melakukan kegiatan outbound. Outbound sendiri merupan kegiatan yang sangat penting di lakukan ketika kita jenuh dan bosan yang selalu melaksakan kegiatan di sehari – hari nya terus menerus, karena dengan beroutbound kita akan bisa melepas semua beban pikiran yang ada di dalam otak dan membuat nya tenang. Selain itu ketika kita melakukan kegiatan outbound kita akan memperoleh beberapa manfaat yang positif. Untuk itu anda jangan khawatir ketika beroutbound di malang karena banyak tempat penginapan yang terjamin dan mempunyai fasilita – fasilitas yang lengkap. Berikut beberapa penginapan yang berada di kota batu malang.
HOTEL TUGU MALANG
Hotel ini berada tidak jauh dari pusat kota malang. Hotel tugu malang ini merupakan hotel yang mengusung tema adat tradisional jawa. Selain itu hotel ini mempunyai keunikan yang tidak di miliki hotel lainya yang membuat daya tarik tersendiri tempat ini. Tempat ini sudah sangat lama berdiri di kota malang ini sehingga banyak orang yang penasaran tentang hotel ini.
SINGGHASARI HOTEL
Yang ke dua adalah singghasari hotel, tempat ini berada dekat dengan pusat kota malang. hotel singghasari ini salah satu hotel terbaik yang ada di kota malang. karena tempat ini memiliki bangunan yang sangat indah dan iconic. Bahkan hotel ini mempunyai sebutan sebagai hotel berbintang lima karena fasilitas nya sangat baik dan lengkap. Dan pada waktu malam pemandangan tempat ini tambah lebih menawan dengan di tamabah sejuk nya kota batu malang.
HOTEL SANTRIKA PRIMER
Hotel ini juga salah satu dari hotel yang terbaik di kota malang. tempat nya yang berada tidak jauh dari bandara abdulrahman saleh sehingga untuk menuju ke tempat ini sangat lah mudah dan terjangkau. Semua pegawainya sangatlah ramah Dengan di lengkapi berbagai fasilitas yang sangat baik juga terdapat berbagai makanan tradisional maupun internasional.
HOTEL PUJON GRAND VIEW
Hotel pujon grand view ini merupakan hotel yang begitu cocok untuk di jadikan salah satu tempat menginap bersama teman kantor atau dengan keluarga. Di sini terdapat berbagai fasilitas untuk kegiatan outbound seperti ruang outdour yang lengkap. Dengan begitu anda dengan teman kantor atau keluarga bisa melakukan kegiatan outbound dengan berbagai jenis permainan. Dengan di lengkapi panorama yang sangat indah di sekitar area hotel dan fasilitas room dengan terbuka hijau dan luas yang membuat sejuk dan tenang.
HOTEL-HOTEL YANG BERADA DI MALANGPENGINAPAN OUTBOUND DI BATU MALANGTEMPAT - TEMPAT HOTEL DI MALANG
Prev post OUTBOUND DI MALANG
Next post OUTBOUND OFFROAD DI BATU MALANG
admin
Related Posts
Uncategorized
Kebun Teh Wonosari Tempat Outbound di Malang
Uncategorized
WISATA OUTBOUND KULINER MALANG
Uncategorized
OUTBOUND DI SECRET ZOO BATU
Tinggalkan Balasan Batalkan balasan
Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *
Komentar
Nama *
Email *
Situs Web
Simpan nama, email, dan situs web saya pada peramban ini untuk komentar saya berikutnya.
Kontak
⚫ Online
Arsip
Juli 2020
Juni 2020
Februari 2020
Januari 2020
Kategori
Kategori Pilih Kategori outbound malang (3) Paintball Di Malang (1) Uncategorized (12) wisata di malang (5)

label: en

label: de


content: Apa sih arti walk in interview ? karena saat ini banyak sekali model perekrutan karyawan dengan cara cara terbaru dan cepat berlangsungnya. Walk in interview adalah salah satu proses wawancara…


content: Toyota C-HR Menjadi Mobil Hibrida yang Diburu – Meskipun penjualan otomotif melambat di pasar nasional, tampaknya ada sesuatu yang berbeda di segmen mobil hibrida. Pasalnya, saat ini salah satu pabrikan Jepang, yaitu PT Toyota Astra Motor (TAM) telah mengkonfirmasi bahwa mobil hybrid tersebut telah mengalami peningkatan penjualan yang drastis pada tahun 2019. Menurut […]


content:
Bagi anda yang sebelumnya sudah akrab dengan permainan poker tradisional mungkin akan menyadari bahwa poker memiliki banyak sekali versi atau variasi. Begitu pun dengan poker online yang tidak jauh berbeda. Perbedaannya mungkin hanya terletak pada jenis yang dimainkan apakah dimainkan dalam permainan uang tunai atau turnamen. Permainan poker uang tunai mengharuskan pemainnya membeli sejumlah chip dalam uang tetap. Pemenang dari keseluruhan pemain berhak membawa pulang semua chip yang ada dalam pot atau tempat memasang taruhan. Konsep dasar seperti itu juga berlaku dalam variasi atau jenis apapun poker online. Berikut ini adalah variasi poker online lain yang perlu anda ketahui.
Baca Selanjutnya
poker-online variasi-poker-online poker-online-populer mengenal-poker-online poker-populer mengenal-variasi-poker-online
Temukan Situs Judi Online Asli Juga Terpercaya dengan Tips Ini
Bagi siapa saja suka bermain judi tentu sekarang sudah tidak asing lagi semenjak kemunculan permainan judi online. Kemunculan situs ini sebenarnya masih baru bisa dibilang masih seumur jagung
Baca Selanjutnya
situs-judi-online judi-online situs-judi situs-judi-online-terpercaya judi-online-terpercaya situs-judi-terpercaya cara-menemukan-situs-judi-online tips-mencari-situs-judi-online-terpercaya
Cara Main Judi Poker Online Betting Uang Asli Bersama Real Dealer
Ketika menjalankan perjudian di dunia maya, banyak bettor merasakan kenyamanan dan keamanan di dalamnya. Hal ini jadi alasan kenapa petaruh memilih berjudi online saat ini. Terutama dengan banyaknya Razia dan resiko judi lainnya, petaruh memilih bermain menggunakan Android. Dengan cara online terasa mudah dan simpel. Para penikmat judi bisa menentukan pilihan game yang diinginkannya. Judi poker sebagai salah satu permainan kartu terkenal dunia bisa dimainkan secara popular. Ada berbagai macam pilihan judi poker dapat dimainkan. Seperti Poker online merupakan salah satu permainan menarik dengan media kartu remi.
Baca Selanjutnya
judi-poker-online judi-online poker-online main-judi-online main-poker-online poker-uang-asli judi-uang-asli poker
Fakta Menarik yang Jarang Orang Ketahui Mengenai Judi Online DominoQQ
Banyak orang ketika main judi, hanya sebatas bermain saja tanpa menyadari beberapa hal baik disekitarnya. Saking asyiknya main, ditengah rasa penat yang selama ini dirasakan. Terlebih jika main selepas pulang bekerja lembur, di malam hari dan badan terasa sangat lelah. Hal paling dibutuhkan saat itu berupa penyegaran tubuh, baik dengan aktivitas atau lainnya.
Baca Selanjutnya
fakta-judi-online fakta-judi-dominoqq fakta-dominoqq-online fakta-situs-dominoqq judi-online-dominoqq situs-judi fakta-mengenai-dominoqq fakta-mengenai-judi-online judi-online dominoqq situs-judi-online
Bagaimana Cara Mudah Dan Cepat Melakukan Pendaftaran Pada Judi DominoQQ Online?
Ketika anda ingin bermain judi DominoQQ online melalui situs resmi dan terpercaya maka tentunya anda harus terdaftar terlebih dahulu menjadi member pada situs tersebut, dan satu-satunya cara yang harus anda lalui yaitu dengan melakukan registrasi atau pendaftaran menjadi member. Hal ini mungkin akan terdengar mudah bagi para profesional, namun bagaimana jika anda seorang pemula? Apakah anda tahu cara mudah dan cepat melakukan mendaftaran akun? Jika anda masih belum memahami caranya sehingga anda kerap kali gagal ketika melakukan pendaftaran, maka anda wajib untuk membaca ulasan kami di bawah ini.
Baca Selanjutnya
cara-mendaftar-judi cara-mendaftar-dominoqq pendaftaran-dominoqq-online pendaftaran-judi-online melakukan-daftar-judi melakukan-daftar-judi dominoqq-online judi-online situs-dominoqq situs-judi pendaftaran-situs-judi pendaftaran-dominoqq
Inilah Kerugian Menjadi Anggota di Situs Poker Online Palsu
Bermain judi poker online tentu Anda memiliki tujuan untung meraup dan mendapatkan keutungan besar dengan cara yang sangat instan. Namun, kenyataannya tidaklah semudah itu, ada banyak proses yang harus Anda lalui untuk bisa memenangkan permainan judi poker nline ini dengan mudah, salah satunya adalah bergabung dengan situs judi online yang terpercaya. Saat ini, sudah banyak sekali situs judi online yang bisa Anda dapatkan di internet, namun pada kenyataannya tidaklah semua situs judi di internet dapat dipercaya. Sebagian dari situs – situs tersebut palsu dan abal – abal. Sehingga situs judi abal – abal tersebut akan menipu dan akan sangat merugikan Anda. Dengan begitu, sebelum memilih sebuah situs judi, alangkah baiknya agar Anda lebih cermat dan berhati – hati saat memilih sebuah situs judi poker online di mesin pencarian internet.
Baca Selanjutnya
poker-online situs-poker-online judi-poker-online situs-judi-poker bermain-poker-online agen-poker-online poker-online-terpercaya
Pemula Perlu Siapkan Hal Ini Untuk Memulai Judi Online Android
Telah banyak tersedia permainan judi online mulai dari jenis judi klasik hingga judi modern, yang tentunya semua itu bisa anda mainkan dengan cara yang mudah dan sangat simpel. Dalam melaksanakan game ini anda bisa memilih sebuah situs terpercaya yang akan memberikan anda keuntungan lebih banyak, maka anda bisa jalankan game ini dengan cara yang lebih tepat. Untuk pasang taruhan online ini anda bisa lakukan game dengan cara yang lebih maksimal. Anda bisa pasang taruhan anda dengan tepat pada permainan judi online yang lebih menguntungkan ini.
Baca Selanjutnya
pemula-judi-online judi-online judi-online-android judi-android memulai-judi-online judi-online-android
Bermain Dominoqq Dengan Teknik Yang Tepat
Dalam perjudian terdapat berbagai macam permainan yang bisa dimainkan oleh penjudi. Salah satu permainan judi yang sangat pupuler banyak dimainkan oleh berbagai lapisan masyarakat adalah dominoqq. sesuai dengan nama permainannya, permainan ini menggunakan kartu domino. Di dalam permainan terdapat jumlah 28 kartu yang memiliki simbol titik-titik merah pada kartu tersebut. Dari setiap titik memiliki nilai yang berbeda-beda sesuai dengan jumlah titik yang ada pada kartu tersebut. Untuk memenangkan permainan ini, sebaiknya anda harus mengetahui teknik bermain yang tepat. Sehingga bisa mendapatkan apa yang menjadi tujuan anda bermain yaitu untuk menang.
Baca Selanjutnya
bermain-dominoqq teknik-bermain-dominoqq teknik-tepat-bermain-dominoqq bermain-dominoqq-dengan-teknik dominoqq teknik-dominoqq

warc-identified-content-language: ind


content:
Desain Kaos Distro hingga saat ini masih dapat dikatakan berada pada masa keemasannya. Hal ini terlihat dari banyaknya peminat kaos distro yang rela mengeluarkan uang hingga ratusan ribu rupiah hanya untuk mendapatkan desain kaos distro yang sesuai seleranya.
Booming kaos distro juga memunculkan desainer-desainer kaos distro yang mampu menciptakan desain kaos distro keren dan banyak diminati pembeli.
Persaingan dalam dunia distro sendiri saat ini sudah sangat ketat, karena banyaknya pemain yang ingin merasakan nikmatnya bisnis kaos distro. Oleh karena itu, bagi Anda yang ingin terjun dalam bisnis kaos distro harus memiliki konsep yang kuat agar tidak ditinggal oleh konsumen.
Konsep design kaos distro merupakan kata kunci keberhasilan dalam bisnis distro. Sedangkan Kreatifitas merupakan hal utama dan termahal yang akan menjadi citra bagi bisnis distro yang dijalankan, sehingga mem-paten-kan konsep dan desain kaos distro mereka menjadi hal penting.
Pada umumnya, konsep design kaos distro akan dibedakan berdasarkan jenis kelamin (kaos untuk laki-laki atau kaos untuk perempuan) dan berdasarkan pengamatan langsung di lapangan, terdapat 3 konsep design kaos distro yang paling banyak menghiasi gerai-gerai distro, yaitu sebagai berikut.
3 Konsep Desain Kaos Distro
1. Desain Kaos Distro – Konsep Olahraga
Stereotip yang melekat pada pemikiran masyarakat bahwa distro itu identik dengan anak muda yang sportif dan enerjik, pada akhirnya memunculkan ide untuk membuat design kaos distro bertema olahraga. Beberapa desain konsep olahraga yang dapat dijadikan sebagai bahan pertimbangan adalah basket, sepak bola, racing, all climbing, hoki, dan atau softball.
2. Desain Kaos Distro – Konsep Musik
Selain konsep olahraga, konsep musik juga mendapatkan porsi yang besar dalam mendesain kaos distro. Hal ini dikarenakan jiwa anak muda yang selalu ingin bebas dan penuh kreatifitas.
Kebanyakan, konsep musik yang diterapkan pada desain kaos distro lebih memuat band-band terkenal yang memiliki pengaruh. Misalnya saja, apabila ingin menonjolkan konsep musik rock, maka yang akan menjadi pilihan adalah gambar band-banda rock terkenal seperti Metallica, Gun’s & Roses atau Slank.
3. Desain Kaos Distro – Konsep Otomotif
Untuk konsep otomotif, dapat mengambil tema Racing, Big Truck atau hal-hal lain yang masih berada dalam lingkup otomotif, baik itu motor maupun mobil.
Jangan terlalu membatasi imajinasi dalam merencanakan konsep design kaos distro. Tidak hanya gambar-gambar motor atau mobil yang dapat anda gunakan, bahkan, berbagai macam jenis onderdil pun dapat Anda manfaatkan sebagai landasan ide untuk membuat konsep design kaos distro.
Konsep manapun yang Anda pilih, usahakan untuk membuat konsep desain kaos distro yang unik, menarik, dan tidak pasaran, agar desain kaos Anda diminati oleh konsumen.


content: Itulah judul postingan pertama saya di 28 Oktober dot net, sebuah blog pribadi berbahasa Indonesia yang sudah berapa tahun tidak aktif lagi dalam arti saya sudah tidak pernah mengisinya. Anda masih bisa membaca postingan itu di sini. Blog itu saya … Continue reading →


content:
Makanan adalah salah kebutuhan utama dalam kehidupan manusia. Tidak bisa kita pungkiri, bahwa sebagai manusia normal, kita pasti membutuhkan makanan setiap harinya, dalam setiap kehidupan kita. Terlebih, di masa sekarang, dengan sudah sangat banyak sekali jenis makanan yang bisa anda nikmati, dan sudah banyak sekali kedai makanan atau restoran yang mungkin dibangun di dekat lingkungan anda, mendapatkan makanan bukan lagi menjadi hal yang sangat sulit.
Anda pasti sering sekali makan makanan, seperti makanan tradisional, contohnya seblak atau papeda, atau anda biasa makan makanan dari luar negeri, seperti pizza atau kebab. Yang pasti, semua makanan yang anda nikmati itu sangat nikmat untuk dirasakan. Selain makanan yang sudah berbentuk seperti itu, ada juga jenis makanan yang biasa dijadikan toping, atau tambahan dalam sebuah makanan. Toping terpopuler untuk banyak makanan, baik itu makanan manis atau makanan asin, adalah toping keju.
Keju merupakan salah satu toping paling menarik dicampurkan dengan banyak sekali jenis makanan. Jika anda ingin makanan yang manis, keju bisa menjadi senjata utama anda. Jika anda suka makanan yang asin, keju juga selalu menjadi selera utama anda. Bahkan, jika anda juga tertarik dengan makanan pedas, keju tetap juga bisa menjadi pilihan utama anda. Yang pasti, keju selalu bisa menjadi pilihan terbaik bagi anda. Jika anda penasaran dengan keju, pasti anda akan bertanya-tanya, apakah keju sangat mahal untuk anda miliki? Tentu saja, sebelum anda menambahkan toping keju di makanan favorit anda, anda harus paham betul daftar harga keju murah.
Kenapa anda perlu untuk mengetahui daftar harga keju murah? Karena, ketika anda mengetahui daftar harga keju yang murah, maka dengan mudah dan cepat anda bisa mendapatkan keju yang sesuai dengan keinginan dan juga kebutuhan anda. Untuk bisa mendapatkan keju yang terbaik, maka anda perlu untuk memperhatikan satu hal penting yang sangat menarik dan juga sangat penting untuk anda perhatikan.
Ketika anda ingin mendapatkan keju yang murah, ingat juga bahwa anda juga harus mendapatkan keju dengan kualitas yang terbaik. Percuma anda mendapatkan keju yang murah, tetapi anda tidak bisa mendapatkan keju yang terbaik. Bahkan, tidak menguntungkan ketika anda berhasil mendapatkan keju yang murah, tetapi keju yang murah itu ternyata tidak bisa bertahan lama. Maka dari itu, sebelum anda mulai memilih keju murah yang akan anda dapatkan, maka anda perlu untuk memperhatikan secara jelas kualitas dari keju yang akan anda pilih tersebut. Karena, kualitas dari keju itu akan menentukan juga tingkat kepuasan anda nanti. Jangan sampai anda menyesal karena anda mendapatkan keju yang murah, tetapi tidak berkualitas. Selanjutnya, ketika anda mendapatkan keju murah dan berkualitas, maka anda perlu memperhatikan hal penting.
Hal penting yang perlu anda perhatikan adalah cara mendapatkannya. Pertama, anda harus kenali dulu jenis keju yang terbaik, kalau bisa jenis keju rumahan. Karena jika anda mencari jenis keju terbaik, biasanya yang akan muncul adalah keju yang memang terbaik dan harganya selangit. Setelah anda sudah memastikan hal ini, maka langkah selanjutnya yang harus dilakukan adalah anda harus mengecek daftar harga keju murah tersebut. Anda harus mencocokkan dengan kualitas keju yang anda temukan sebelumnya. Ini akan sangat membantu anda untuk bisa mendapatkan keju yang berkualitas tinggi.


content:
di banyak sekali bentuk Game Taruhan Terbesar maka tentu saja ada beberapa kategori yang memang Bisa dikatakan sebagai sebuah bentuk Mainan Taruhan Terpercaya yang paling mendekati kesempurnaan. Salah satunya adalah dengan bentuk Permainan Casino Online yang akan menghasilkan sifat Mainan Taruhan Judi yang sangat komplit Dan juga lengkap dengan Sistem Terbaik untuk Sukses Main Terbesar yang Sanggup ditemukan.
Tentu saja mengingat sistem Games Situs Judi Online Terbaik adalah Games yang akan dapat menghasilkan banyak keunggulan di bandingkan dengan Main Terpercaya lainnya maka Game ini akan Suka berkembang dengan pesat bahkan melebihi popularitas Mainan yang dahulu memang sempat booming secara tradisional di berbagai bentuk gedung yang memang hanya terdapat di beberala lokasi di muka bumi ini.
Bila saja kita melihat dengan seksama banyak sekali bentuk Games Judi Kasino Terbaik Terpercaya adalah jenis Games Judi Online Terbesar yang sangat beragam Serta pada akhirnya akan menghasilkan begitu banyak keUnggulan jika dilakukan dengan pemilihan beberaa Main seru itu maka tentunya harus dilakukan dengan sangat Apik terutama hal hal yang akan mengakibatkan kesuksesan di jumlah Kecil beserta Proses terbaiknya.
Langkah yang Mantap Untuk Sukses Main Judi Kasino
Memang sudah dapat kita temukan banyak sekali Kunci Dan langkah yang memang dapat kita aplikasikan untuk dapat menghasilkan Profit Bandar Casino Online yang Kecil sekaligus pendapatan yang sangat berlimpah. Khususnya ketika kita Dapat menghasilkan banyak sekali bentuk dari langkah Beserta strategi sukses yang memang diberikan secara langsung dari Bettor Profesional yang memang sudah membuktikan sendiri Trik Cara ini dengan Benar:
Pemilihan Jenis Game yang Tepat
Pada sebuah bentuk Game Judi Casino Online Berkualitas maka memang akan ada sangat banyak sekali Game Situs Casino Indonesia yang ada, bahkan bila Saat perkembangan selanjutnya maka kita akan mendapati fakta bahwa Games Terbaik Kasino sendiri dapat berkembang dengan pesat menuju beberapa Main turunan yang memang sangat mengasyikkan untuk di coba oleh para Pelaku Judi Terbaik pemula ataupun profesional.
Oleh sebab banyaknya Main yang bernaung Ketika jenis Games Terbaik Populer maka tentunya kita harus Bisa Memilih beberapa Game yang memang sangat tepat Manjur itu untuk mendapatkan hiburan maupun sebagai alat penghasilan yang Kecil yang pasti harus sesuai dengan karakteristik para Player Judi itu sendiri. Dengan beberapa hal ini maka dapat disimpulkan Memastikan jenis Mainan adalah awal sukses.
Memperhatikan Peraturan dengan Apik
Banyak sebenarnya para Peminat Judi Kasino Online Favorit yang memang mulai dari seorang Kontestan pemula yang memang Benar Sungguh bergabung Pada sistem Permainan Terbaik adalah Main yang memang terdapat aturan tersendiri bahkan di setiap Pusatnya merupakan sebuah bentuk peraturan umum Beserta khusus antar Games yang memang harus dilihat aturan yang melekat pada Games tersebut sehingga akan dapat sukses.
Banyak juga para Anggota Taruhan Kasino Terpercaya Andalan yang memang sudah pernah Mainkan satu jenis Mainan yang memang ada di sebuah Bandar Kasino namun mereka memainkannya Saat sebuah konsep tradisional yang memang mengadakan istilah yang tidak baku, maka hal ini juga harus disesuaikan dengan pemahaman akan istilah yang memang Asli Benar-benar tercermin dari sebuah Jasa Judi Online yang ada.
Memang dengan dibahasnya Strategi Terbaik untuk Sukses Main Kasino Terbaik ini maka tentu saja Main Judi Kasino Online akan lebih Mulus diBeruntungkan.
Agen CasinoAgen judi casinoagen taruhan casinoBandar casinobandar judi casinobandar taruhan casinocasino onlinecasino online terbesarcasino online terpercayacasino terbesarcasino terpercayacasino uang asliJudi CasinoJudi Casino terbaikJudi Casino terbesarJudi Casino terpercayapenyalur judi casini penyalur judi casino onlinepenyalur judi casino terpercayaTaruhan casinoTaruhan casino indonesiaTaruhan casino onlineTaruhan casino terbaikTaruhan casino terbesarTaruhan casino terpercaya