[SISTEM EMBEDDED] Bundel soal teknik telekomunikasi semester 4 tahun 2017 (19) Ujian Tengah Semester Sistem Embedded (Kamis, 7 April 2016) Nomor 1 Apa arti : Mov Mov SETB CLR P1, #FFH A, P3 P2, 3 P3, 3 Nomor 2 Jika port 1 dihubungkan dengan LED ke ground dengan R 330Ω, apa arti program berikut : MULAI Mov P1, #00001111B Acall Delay 1 Mov P1, #11110000B Acall Delay 2 SJMP Mulai Nomor 3 Jika port 2 dihubungkan dengan LED ke ground dengan R 330Ω, apa arti program berikut : MULAI Mov P1, #01010101B Acall Delay 1 Mov P1, #10101010B Acall Delay 2 SJMP Mulai Nomor 4 Apa artinya program berikut : Mov MULAI Mov Acall RL SJMP A, #11111110B P1, A Delay A MULAI Nomor 5 Buat program, timer 0 mod 3 untuk melakukan cacahan 100. Nomor 6 Buat program, program timer 0 mod 3 sebagai counter untuk melakukan cacahan 30. Nomor 7 (a) Bagaimana cara/langkah menginisialisasi sebuah port (b) Bagaimana langkah-langkah inisialisasi interupsi Nomor 8 Bagaimana cara memprogram mengirim data melalui port serial, gunakan SBUF untuk menulis data yang akan dikirim lalu tunggu sampai T1 berlogika satu (set), setelah bit T1 berlogika satu, bit T1 dinolkan kembali untuk kirim data yang lain. Nomor 9 Bagaimana memprogram menerima data melalui port secara serial, gunakan SBUF register R1 untuk cek logika satu, jika berlogika 1 maka data baru dibaca lalu R1 di nolkan untuk membaca data baru lagi. Nomor 10 Buat program interupsi eksternal M.controller untuk menghidupkan LED. Bundel soal teknik telekomunikasi semester 4 tahun 2017 (20) [sistem embedded] Solusi Ujian Tengah Semester Sistem Embedded (7 April 2016) 1. Maksud dari instruksi berikut adalah MOV P1, #FFH : Memasukkan nilai bilangan hexadecimal FF ke dalam keseluruhan 8 bit port 1. MOV A, P3 : Memindahkan isi dari keseluruhan 8 bit port 3 ke dalam register A. SETB P2.4 : Mengeset isi dari port 2 bit ke 4 dengan nilai 1 (high) CLR P3.3 : Mengeset isi dari port 3 bit ke 3 dengan nilai 0 (low) 2. Jika port 1 dihubungkan dengan LED ke ground dengan R 330Ω, maksud dari program berikut adalah MULAI MOV P1, #00001111B (mengeset port 1 bit 0-3 dengan nilai 1, bit 4-7 dengan nilai 0) Acall Delay 1 MOV P2, #11110000B (mengeset port 1 bit 0-3 dengan nilai 0, bit 4-7 dengan nilai 1) Acall Delay 2 SJMP MULAI Pada port 1 ada 8 bit yang digunakan, masing-masing bit dihubungkan pada LED dan resistor yang kemudian dihubungkan ke ground. Pada awal program MULAI, instruksi menyebabkan 4 buah LED di bit 0-3 menyala, sedangkan 4 buah LED lainnya di bit 4-7 padam. Instruksi Acall adalah instruksi untuk memanggil subrutin program. Karena subrutin program delay 1 dan delay 2 belum terdefinisi, maka instruksi ini dilewatkan. Jika delay 1 dan delay 2 didefinisikan sebelumnya berarti akan mengakibatkan adanya penundaan waktu sebelum masuk ke instruksi berikutnya. Lama penundaan tergantung definisi delay. Kemudian, instruksi mov berikutnya menyebabkan 4 buah LED di bit 0-3 padam, sedangkan 4 buah LED lainnya di bit 4-7 padam. Instruksi SJMP membuat program ini berulang. Sehingga pada akhirnya, program ini akan membuat lampu LED menyala kedap kedip antara bit 03 dan bit 4-7. 3. Jika port 2 dihubungkan dengan LED ke ground dengan R 330Ω, maksud dari program berikut adalah MULAI MOV P2, #01010101B (mengeset port 2 bit genap dengan nilai 1, bit ganjil dengan nilai 0) Acall Delay 1 MOV P2, #10101010B (mengeset port 2 bit genap dengan nilai 0, bit ganjil dengan nilai 1) Acall Delay 2 SJMP MULAI Pada port 2 ada 8 bit yang digunakan, masing-masing bit dihubungkan pada LED dan resistor yang kemudian dihubungkan ke ground. Bit genap adalah bit 0, 2, 4, dan 6, sedangkan bit ganjil adalah bit 1, 3, 5, dan 7. Pada awal program MULAI, instruksi menyebabkan 4 buah LED di bit genap menyala, sedangkan 4 buah LED lainnya di bit ganjil padam. Instruksi Acall adalah instruksi untuk memanggil subrutin program. Karena subrutin program delay 1 dan delay 2 belum terdefinisi, maka instruksi ini dilewatkan. Jika delay 1 dan delay 2 didefinisikan sebelumnya berarti akan mengakibatkan adanya penundaan waktu sebelum masuk ke instruksi berikutnya. Lama penundaan tergantung definisi delay. Kemudian, instruksi mov berikutnya menyebabkan 4 buah LED di bit genap padam, sedangkan 4 buah LED lainnya di bit ganjil padam. Instruksi SJMP membuat program ini berulang. Sehingga pada akhirnya, program ini akan membuat lampu LED menyala kedap kedip antara bit ganjil dan bit genap. 4. Maksud dari program dibawah ini adalah MOV A, #111111110B (Register A menyimpan nilai 11111110) MULAI MOV P1, A (Pindahkan isi register A ke port 2 sehingga nilai bit 0 adalah 0 dan bit 1-7 adalah 1) Acall Delay RL A (Menggeser ke kiri isi dari register A) SJMP MULAI Pada port 1 akan dipasang 8 buah LED di masing-masing bitnya, kemudian pengaturan awal membuat 8 buah LED ini menyala dengan kondisi bit 1-7 menyala dan bit 0 padam. Kemudian instruksi RL membuat isi dari register A tergeser ke kiri, yang otomatis nilai masing-masing bit pada port 2 juga ikut tergeser, contoh : Kondisi Awal P1. P1. P1. P1. 5 4 3 2 1 1 1 1 P1. 7 1 P1. 6 1 P1. 1 1 P1. 0 0 P1. 7 1 Instruksi RL (pergeseran ke kiri) P1. P1. P1. P1. P1. P1. 6 5 4 3 2 1 1 1 1 1 1 0 P1. 0 1 Kemudian, instruksi SJMP membuat perintah dari program ini dilaksanakan berulang, sehingga instruksi RL ini juga dilaksanakan berulang. Akibatnya nyala lampu pada LED akan terlihat seperti lampu yang berjalan (running text) dengan penundaan waktu pergeseran sebesar delay. 5. Program timer 0 mod 3 untuk melakukan cacahan 100 CLR P2.3 (menggunakan port 2 bit 3 sebagai penanda timer) MOV TMOD, #03 (Timer 0, mode 3) HERE: MOV TL0, #00H (TL0 = 0) MOV TH0, #64H (TH0 = 100) SETB P2.3 (mengeset port 2 bit 3 dengan nilai 1) SETB TR0 (mulai Timer 0) AGAIN: JNB TF0, AGAIN (monitor timer 0 flag) CLR TR0 (stop Timer 0) CLR TF0 (clear Timer 0 flag for next round) CLR P2.3 6. Program timer 0 mod 3 sebagai counter untuk melakukan cacahan 30. DELAY: MOV TMOD, #3H MOV TL0, #E2H SETB TR0 WAIT: JNB TF0, WAIT CLR TR0 CLR TF0 RET 7. Langkah inisialisasi port serial SERIAL_INT: MOV TMOD, #20H MOV SCON, #50H MOV TH1, #0FDH MOV TL1, #0FDH SETB TR1 RET Langkah inisialisasi interupsi Lakukan pengaturan dari register IE untuk mengaktifkan serial interrupt. Lakukan pengaturan register SCON untuk operasi menerima atau mentransfer data. Tulis subprogram untuk interup ini dengan fungsi yang sesuai dan lakukan fungsi CLR untuk flag TI atau RI. 8. Program untuk mengirim data melalui port serial, menggunakan SBUF untuk menulis data yang akan dikirim lalu tunggu sampai T1 berlogika satu (set) setelah bit T1 berlogika satu, bit T1 dinolkan kembali untuk kirim data yang lain. AGAIN: MOV SBUF, #”A” HERE: JNB T1, HERE CLR T1 SJMP AGAIN 9. Program untuk mengirim data melalui port serial, menggunakan SBUF register R1, untuk mengecek logika satu, jika berlogika 1 maka data baru dibaca lalu R1 dinolkan untuk membaca data baru lagi. AGAIN MOV “A”, SBUF HERE: JNB R1, HERE CLR R1 SJMP AGAIN 10. Program interupsi eksternal oleh M.controller untuk menghidupkan LED. ORG 0000H LJMP MAIN ORG 0013H SETB P1.3 MOV R3, #255 BACK: CLR RET DJNZ R3, BACK P1.3 ORG MAIN: HERE: END 30H MOV IE, #10000100B SJMP HERE