LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN I COMPILER, PROGRAM MONITOR DAN EMULATOR 1.1 • • •
Tujuan Percobaan Memahami penggunaan compiler ASM51 Memahami perangkat modul utama Emulator MK51 Memahami program monitor AEM
• • • • •
Alat dan Bahan Modul utama emulator MK51 beserta perlengkapannya Frekuensi Counter Osiloskop Analog atau digital multitester PC dan software praktikum
1.2
1.3 Cara Kerja 1.3.1 Compiler 1. Buatlah program P1.1 dengan text editor, simpan dengan nama tesppi.asm. Default compiler tidak case sensitive, artinya penggunaan huruf besar atau kecil sama saja, “StarT” sama dengan “START”. 2. Compile tesppi.asm sehingga menghasilkan file tesppi.hex dan tesppi.lst. Perhatikan bahwa hasil compile tidak boleh ada kesalahan. Catat file .asm, .lst, dan .hex (bukalah dengan text editor) 3. Jika terjadi adanya kesalahan, buka file tesppi.lst. Cari tanda panah yang menunjukkan adanya kesalahan. 4. Jika sudah benar, download tesppi.hex dengan program aem.exe atau hyperterminal ke target emulator (warna data yang dikirim harus berwarna merah, jika masih berwarna hitam, inisialisasi kembali komunikasi serial tersebut dengan menekan tombol [ ^ I ]. 5. Verivy program yang telah di dowload ke target emulator dengan file tesppi.hex di disk, bila ok, maka teruskan percobaan. Untuk setiap percobaan dengan program yang berbeda, langkah 1 sampai 5 harus dilakukan ( Anda harus bisa memahami dan mengerti langkah 1 – 5 tersebut agar bisa melakukan percobaan selanjutnya ) 6. Jalankan program dengan menekan tombol a (goto 4030h) 7. Gunakan led atau logic tester atau osiloskop pada semua port P1, PA, PB, PC, laporkan hasilnya 8. Untuk menghentikan program dan kembali ke monitor (prompt*), tekan reset pada target emulator (tekan ^ I lalu tekan ^ H atau backspace) 9. Selama catu daya di target emulator tidak dimatikan, berarti program yang di download tetap ada 10. Bagaimana cara mempercepat atau memperlambat kedipan port tersebut? Buatlah programnya dan coba jalankan 11. Jika perintah AJMP XX, dirubah menjadi LJMP XX, apa yang terjadi? Jalankan program dan lihat hasilnya. Lihat perbedaan hasil data yang dikirimkan. Modul Praktikum Mikroprosesor 2009
Page 1
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
12. Jika perintah AJMP XX, dirubah menjadi SJMP XX, apa yang terjadi? Jalankan program dan lihat perbedaan hasil data yang dikirimkan. 13. Apa gunanya subrutine delay, apa pengaruhnya bila dihilangkan? (untuk menghilangkan perintah tidak usah dihapus cukup diberi tanda “ ; ”) 1.3.2 Waktu Eksekusi 1. Buat program P1.2 dengan nama siklus .asm, compile dan download 2. Jalankan program dari 4030h, ukur frekuensi (catat) dan amati gelombang (gambar) pada titik–titik; • X2 (pin 18 AT89C51) • ALE (pin 30 AT89C51) • PSEN (pin 29 AT89C51) • Salah satu Port P1 1.3.3 Level RS232 1. Jalankan program P1.3, program ini akan mengirimkan karakter A ke terminal host secara terus menerus. Amati dan gambar sinyal pada pin TXD (pin 11 AT89C51) dan TX pada IC 232 pin 14 2. Reset harware, tidak menjalankan program apa–apa. Togle DTR dengan menekan tombol Ctrl-S, ukur tegangan pin 8 IC RS232 dan pin 9 pada saat status lo dan hi. Ctrl-s akan memberikan state 0, tekan lagi state 1, tekan lagi state 0, dan seterusnya. 1.3.4 Komunikasi Serial 1. Jalankan program P1.4, ketikan karakter sebarang, warna hitam menunjukkan karakter yang dikirim dari host ke target, dan karakter merah adalah karakter yang diterima oleh target dan dikirimkan kembali ke host. Variasikan karakter yang dikirim ( 2 variasi). 2. Coba ubah baudrate dengan mengubah nilai th1. Ulangi langkah satu. 3. Jalankan program P1.5, catat apa yang ditampilkan di layar. Coba ubah tampilan dilayar sesuai dengan kehendak anda (ubah string dengan nama anda dan kelompok anda). 4. Apa guna 0dh, 0ah dan 0h pada data setelah db yang dikirimkan ? Listing Program Percobaan 1 ;======================================================= ;Program P1.1 Testppi, mengedipkan port , P1, PA, PB, PC ;P1.1 TestPPI, menegedipkan port P1, PA, PB, PC ;======================================================= $MOD51 PORTA equ 2000h PORTB equ 2001h PORTC equ 2002h PORTD equ 2003h ;register control CW EQU 80H ;control word/port ;----------------------ORG 4030H start:MOV SP,#30H MOV P1,#0FFH ACALL delay
Modul Praktikum Mikroprosesor 2009
Page 2
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;----------------------; Inisialisasi PPI 8255 ;----------------------MOV DPTR,#PORTD MOV A,#CW MOVX @DPTR,A ;-----------------------; PA,PB,PC,P1 Nyala-Mati ;-----------------------ulang:MOV A,#0FFH ;NYALA MOV DPTR,#PORTA MOVX @DPTR,A MOV DPTR,#PORTB MOVX @DPTR,A MOV DPTR,#PORTC MOVX @DPTR,A MOV P1,#0FFH ACALL delay ;------------------------MOV A,#00H ;MATI MOV DPTR,#PORTA MOVX @DPTR,A MOV DPTR,#PORTB MOVX @DPTR,A MOV DPTR,#PORTC MOVX @DPTR,A MOV P1,#00H ACALL delay ACALL ulang ;-------------------------; delay ;-------------------------delay: MOV R2,#9FFH delay1:MOV R3,#9FFH DJNZ R3,$ DJNZ R2,delay1 RET END :============================= ;Program P1.2 Squarewave di P1 ;============================= $MOD51 ORG 4030H START:MOV P1,#0FFH MOV P1,#00H SJMP START END ;========================= ;Program P1.3 level RS232 ;========================= $MOD51 ORG 4030H MOV A,#'A' START:ACALL SNDCHR SJMP START SNDCHR: CLR SCON.1
Modul Praktikum Mikroprosesor 2009
Page 3
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
MOV SBUF,A TXLOOP: JNB SCON.1,TXLOOP RET END ;============================== ;Program P1.4 Komunikasi serial ;============================== $MOD51 org 4030H Start: acall InitSer acall getchr ; acall sndchr ; sjmp start ;Inisialisasi ;using 12 MHz crystal, timer 1 for 2400 bps th1 = 0f3h ;using 11.059Mhz crystal, timer 1 for 2400 bps th1 = 0f4h initser: mov mov mov setb mov ret
pcon,#80h tmod,#22h th1,#0f4h ;ubahlah untuk 2400bps dengan mengisi th1=XXh ;catat apa yang terjadi setelah reset harware. tcon.6 scon,#052h
; subroutine sndchr sndchr: clr scon.1 mov sbuf,a txloop: jnb scon.1, txloop ret ; subroutine getchr getchr: jnb ri, getchr mov a, sbuf clr ri ret end
; clear the tx buffer full flag. ; put chr in sbuf ; wait till chr is sent
; wait till character received ; get character ; clear serial status bit
;============================== ; Program P1.5 : print to serial ;============================== $MOD51 Monitor EQU 0042h org 4030h Start: ACALL PRINT db 0dh, 0ah, 'Laboratorium Elektronika', 0h ACALL PRINT db 0dh, 0ah, 'Praktikum Mikroprosesor', 0h Ljmp monitor ;subroutine sndchr
Modul Praktikum Mikroprosesor 2009
Page 4
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
sndchr: clr scon.1 ; clear tx buffer full flag mov sbuf,a ; put chr in sbuf txloop: jnb scon.1,txloop ; wait till char sent ret ; subroutine print ; takes string immediately following the call and sends it out ; to the serial port. the string must be terminated with a null. ; this routine will ret to the instruction immediately following ; the string. print:
pop dph ; put return addr in dptr pop dpl prtstr: clr a ; set offset = 0 movc a, @a+dptr ; get char from code memory cjne a, #0h, mchrok ; if chr = FF then return (FF = '\0' ?) ljmp prtdone mchrok: ACALL sndchr inc dptr ; point at next char ljmp prtstr ;loop till end of string prtdone: mov a, #1h jmp @a+dptr end
Modul Praktikum Mikroprosesor 2009
Page 5
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN II TRANSFER DATA DAN PERCABANGAN 2.1 • •
Tujuan Percobaan Memahami proses transfer data. Memahami pencabangan bersyarat dan tidak bersyarat.
• •
Alat dan Bahan Modul utama emulator MK51 beserta perlengkapannya. PC dan software praktikum.
2.2
2.3 • • • • 2.4 •
2.5 •
Diskripsi Percobaan Untuk percobaan ini, digunakan ‘printhasil’. Setiap rutin ini dipanggil dengan perintah acall print hasil, ditampilkan isi register a, b, dan psw dilayar PC. Catat tiap – tiap hasil dan analisa, apakah cocok dengan perhitungan desimal. Selain itu gunakan perintah i untuk melihat data di internal RAM . Jangan menggunakan Bank 0 (alamat 00h – 08h) karena data yang ditampilkan akan salah. Beberapa contoh program sengaja disalahkan, cobalah cari kesalahan itu. Tugas Pendahuluan Buatlah program untuk mengisi internal memory antara 40h hingga 5fh dengan data ffh, kemudian jalankan dan periksa dengan melihat isi internal memory (menu I). Program sesingkat mungkin. Percobaan Buatlah program percobaan 2 dengan text editor (nama program terserah anda). Jalankan program dan catat hasilnya, dan analisalah untuk tiap – tiap hasil operasi. Untuk setiap perubahan nilai dalam tanyakan asisten yang bersangkutan.
Listing Program Percobaan 2 ;=========================================== ;Program P2.1 data transfer ;#22h diganti sesuai petunjuk dari assisten ;periksalah dengan baik isi internal memory, ;=========================================== $mod51 monitor equ 30H org 4030H mov psw,#08H mov R0,#22H mov R1,#22H mov R2,#22H mov R3,#22H mov R4,#22H ljmp monitor end
Modul Praktikum Mikroprosesor 2009
Page 6
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;=========================================== ;Program P2.2 data transfer ;periksalah dengan baik isi internal memory, ;setelah menjalankan program berikut ini ;=========================================== $mod51 monitor equ 30h org 4030h mov psw,#10h mov R0,#0 mov R1,#1 mov R2,#2 mov R3,#3 mov R4,#4 mov R5,#5 mov R6,#6 mov R7,#7 ljmp monitor end ;=========================================== ;Program P2.3 data transfer ;periksalah dengan baik isi internal memory, ;=========================================== $mod51 monitor equ 30h org 4030h mov psw,#18h mov R0,#AAh mov R1,#AAh mov R2,#AAh mov R3,#AAh mov R4,#AAh mov R5,#AAh mov R6,#AAh mov R7,#AAh ljmp monitor end ;===================================================================== ;Program P2.4 data transfer ;data yang diisikan ke R0(mov R0,#49h) diganti sesuai petunjuk asisten ;data yang diisikan ke R1(mov R0,#28) diganti sesuai petunjuk assisten ;periksalah dengan baik isi internal memory setelah dijalankan ;===================================================================== $mod51 monitor equ 30h org 4030h mov psw,#08H mov R0,#49H mov R1,#28 mov A,#0FEh xx: mov @R0,A inc R0 djnz R1,xx
Modul Praktikum Mikroprosesor 2009
Page 7
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
end
ljmp monitor
;===================================================================== ;Program P2.5 data transfer ;data yang diisikan ke R1(mov R0,#35) diganti sesuai petunjuk assisten ;periksalah dengan baik isi eksternal memory setelah dijalankan ;===================================================================== $mod51 monitor equ 30h org 4030h mov DPTR,#5000h mov R1,#35 mov A,#0DFh xx: movx @DPTR,A inc DPTR djnz R1,xx ljmp monitor end
Modul Praktikum Mikroprosesor 2009
Page 8
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN III PEMROSESAN BYTE DAN BIT 3.1 • • •
Tujuan Percobaan Memahami aritmatika biner 8 (byte) Memahami operasi manipulasi byte dan bit Memahami operasi logika
• •
Alat dan Bahan Modul utama emulator MK51 beserta perlengkapannya PC dan software praktikum
3.2
3.3 • •
Diskripsi Percobaan Untuk percobaan ini, digunakan ‘printhasil’. Setiap rutin ini dipanggil dengan perintah acall print hasil, ditampilkan isi register a, b, dan psw dilayar PC. Catat tiap – tiap hasil dan analisalah, apakah cocok dengan perhitungan desimal. Pada Operasi Logika
3.4
Cara Kerja
3.4.1
Operasi aritmatika 8 bit, manipulasi byte/bit dan operasi logika. • Buatlah program P3.1 dengan text editor (nama program terserah anda). Jaqlankan program dan catat hasilnya, dan analisalah untuk tiap – tiap operasi.
3.4.2
Aplikasi opersi logika Rangkaian kombinasional seperti pada gambar 1, dapat diemulasikan dengan rangkaian mikrokontroler dengan memberikan program seperti yang tercantum pada program P3.4 P1.4 P1.7 P1.5
P1.6
Gambar 3.1 Rangkaian Kombinasional
• Bualah fungsi logika rangkaian Gambar 3.1 • Jalankan progran dan tes semua kombinasi input (P1.4 – P1.6), buatlah tabel kebenarannya
Modul Praktikum Mikroprosesor 2009
Page 9
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;========================= ;Program P3.1 Proses Data ;========================= $MOD51 ; asm51 module ;------------------------------- routin address in kernel code monitor equ 30h ; * prompt prthex equ 0615h ; print hex code of a print equ 05F9h ; print word pblank equ 061Dh ; print space (blank) CRLF equ 060Ch ; print carriage return Pswtemp equ 044h ; psw temporer ;------------------------------org 4030h ; start awal mov psw,#08h lcall print ; print header db 0dh, 0ah,'A B PSW', 0h lcall crlf ;1. penjumlahan 1 mov a,#10 mov b,#15 add a,b acall printhasil ;2. penjumlahan 2 mov a,#150 mov b,#60 addc a,b acall printhasil ;3. penjumlahan 3 mov a,#200 mov b,#16 addc a,b acall printhasil ;4. pengurangan 1 clr c mov a,#0AAh mov b,#0DEh subb a,b acall printhasil ;5. pengurangan 2 setb c mov a,#0A6h mov b,#0C3h subb a,b acall printhasil ;6. pengurangan 3 clr c mov a,#0B2h mov b,#0D2h
Modul Praktikum Mikroprosesor 2009
Page 10
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
subb a,b acall printhasil
;7. pengurangan 4 clr c mov a,#60H mov b,#20H subb a,b acall printhasil ;8. perkalian 1 mov a,#0AAh mov b,#0CFh mul ab acall printhasil ;9. pembagian 1 mov a,#0DDh mov b,#02Dh div ab acall printhasil ;10. pembagian 2 mov a,#020h mov b,#010h div ab acall printhasil ;11. logical 1 mov a,#10101010b mov b,#01011100b anl a,b acall printhasil ;12. logical 2 mov a,#01010101b mov b,#11010010b orl a,b acall printhasil ;13. logical 3 mov a,#01010101b mov b,#01100110b xrl a,b acall printhasil ;14. rotate setb mov rlc acall
c a,#10101010b a printhasil
;15. swap mov a,#0FDh swap a acall printhasil
Modul Praktikum Mikroprosesor 2009
Page 11
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;16. decimal adjust mov a,#01Eh mov b,#03Dh add a,b acall printhasil da a acall printhasil mov a,#077h mov b,#0B0h add a,b da a acall printhasil ;17. complement, setb and clr mov a,#0CCh cpl a ;periksalah mov setb clr clr setb ljmp
di port P1 dengan led atau multitester program berikut P1,#0 P1.0 P1.1 P1.2 P1.3 monitor
;-------------------rutin print hasil Printhasil: mov pswtemp,psw lcall prthex lcall pblank mov a,b lcall prthex lcall pblank mov a,pswtemp lcall prthex lcall crlf ret end ;===================================================== ;Program P3.2 Emulasi Rangkaian Kombinasional gambar 1 ;===================================================== $MOD51 org 4030h mov P1,#00h loop: mov c,P1.4 cpl c anl c,P1.5 cpl c orl c,P1.6 mov P1.7,c sjmp loop end
Modul Praktikum Mikroprosesor 2009
Page 12
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN IV PENGENDALIAN RELAY SECARA PARALEL 4.1 • • •
Tujuan Percobaan Memahami hardware dan software pengaturan relay Memahami algoritma dan flowchart pemrograman Memahami program pengaturan relay (dengan indicator LED dan relay)
• • •
Alat dan Bahan Modul utama emulator MK1 beserta perlengkapannya Modul relay PC dan software praktikum
4.2
4.3
Deskripsi Percobaan Pada modul ini, digunakan suatu modul output yang terdiri dari delapan relay. Relay sering digunakan pada peralatan-peralatan elektronika dan mempunyai fungsi untuk menghubungkan dan memutuskan aliran arus listrik yang dikontrol dengan memberikan tegangan dan arus tertentu pada koilnya. Pada relay board ini, digunakan relay DC dengan tegangan koil 12 V DC, arus yang diperlukan sebesar 20-30 mA sehingga supaya bias dikendalikan langsung oleh suatu output IC TTL/CMOS perlu digunakan ULN2803A “Darlington Array” yang merupakan sekumpulan transistor dengan konfigurasi Darlington sehingga mempunyai β (penguat arus) yang cukup besar. Pada percobaan digunakan software yang merupakan suatu contoh sederhana untuk mengaktifkan atau mematikan relay dengan suatu tundaan dan mengaktifkan port 1; dan port a PPI. Pada percobaan ini disarankan untuk membuat delay lama, karena bila delaynya terlalu cepat maka relay akan bergetar (kondisi on-off relay terjadi terus menerus). Hal ini dapat menyebabkan kerusakan pada relay. 4.4 4.4.1
Cara Kerja Relay 1. Buatlah Program P4.1 dengan text editor dengan nama relxx.asm (dengan XX adalah nama kelompok anda). Default compiler tidak case sensitive, artinya penggunaan huruf besar atau huruf kecil sama saja, ‘StarT’ sama dengan ‘START’. 2. Compile relxx.asm sehingga menghasilkan file relxx.hex dan relxx.lst. Perhatikan bahwa hasil compile tidak boleh ada kesalahan. 3. Download relxx.hex dengan program aem.exe atau hyperterminal ke target emulator. 4. Verify program yang telah didownload ke target emulator dengan file relxx.hex di disk, bila OK maka teruskan percobaan. Untuk setiap percobaan dengan program yang berbeda, langkah-langkah 1 sd 4 harus dilakukan, bila ada kesalahan lihat file lstnya (di dalam text editor) kemudian
Modul Praktikum Mikroprosesor 2009
Page 13
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
amati kesalahan yang terjadi. Betulkan file asm-nya (ulangi langkah 1-4) shingga no errors found. 5. Jalankan program dengan menekan tombol a (goto 4030h). 6. Amati keadaan relay aktif/tidak (dengan melihat kondisi led indicator). 7. Untuk menghentikan program dan kembali ke monitor (prompt *), tekan reset pada target emulator. 8. Selama catu daya di target emulator tidak dimatikan, berarti program yang didownload tetap ada. 9. Dari listing program di atas dan dari pengamatan relay, buatlah algoritma dan flowchart program! 10. Jelaskan begaimana cara kerja software dan kerja hardware ! (Cari posisi led msb dan LSBnya agar jalannya program bisa dianalisa). 11. Coba buatlah suatu program sederhana yang mempunyai algoritma sebagai berikut P1.0 maka relay1 ON dan seterusnya. Buatlah pula flowchartnya dan jangan lupa kumpulkan file .asm file .hex dan file .lst-nya sebagai tugas 1! 12. Tugas 2, Buatlah program, dimana lampu led menyala bergantian dan berurutan. 13. Tugas 2 diatas juga dibuat flowchartnya dan program tersebut harus dibuktikan juga. Sertakan juga file .asm, .lst dan .hex. Listing Program Percobaan 4 ;======================== ;Program P4.1 Runing Led ;======================== $mod51 org 4030h mov a,#00000011b mov p1,a acall tunda start: rr A mov p1,a acall tunda sjmp start tunda: mov r1,#01fh tunda1: mov r2,#018h tunda2: mov r3,#018h djnz r3,$ djnz r2,tunda2 djnz r1,tunda1 ret end ;============================================ ;Program P4.2 Running Off Led
Modul Praktikum Mikroprosesor 2009
Page 14
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;program pengendalian relay melalui portb PPI ;============================================ $MOD51 PORTA EQU 4000H PORTB EQU PORTA+1H PORTC EQU PORTB+1H R_CON EQU PORTA+3H CW EQU 80H ;-----------------------ORG 4000H MOV A, #CW MOV DPTR,#R_CON MOVX @DPTR, A START: MOV A,#11111110B ACALL PIN MOV A,#11111101B ACALL PIN MOV A,#11111011B ACALL PIN MOV A,#11110111B ACALL PIN MOV A,#11101111B ACALL PIN MOV A,#11011111B ACALL PIN MOV A,#10111111B ACALL PIN MOV A,#01111111B ACALL PIN SJMP START PIN: MOV DPTR,#PORTA MOVX @DPTR,A ACALL TUNDA RET TUNDA: MOV R1,#0FFH TUNDA1: MOV R2,#0FFH TUNDA2: MOV R3,#0FFH DJNZ R3,$ DJNZ R2,TUNDA2 DJNZ R1,TUNDA RET END ;=========================================== ;Program P4.3 Dancing Led(relay) ;program pengendalian relay melalui portb P1 ;=========================================== $MOD51 org 4030h sjmp baris7 ;----------------------------Tunda: mov psw,#18h mov R1,#0ffh
Modul Praktikum Mikroprosesor 2009
Page 15
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
Tunda1: mov R2,#013h Tunda2: mov R3,#013h djnz R3,$ djnz R2,Tunda2 djnz R1,Tunda1 mov psw,#00h ret ;---------------------------baris7: mov A,#00h mov R3,#00h itung: mov A,R3 ANL A,#3 RL A ADD A,R3 mov DPTR,#Tabel jmp @A+DPTR Tabel: LJMP Rutin1 LJMP Rutin2 LJMP Rutin3 LJMP Rutin4 ;-------------------------------------Rutin1: mov A,#01h mov R1,#07h next: RL A mov P1,A acall Tunda DJNZ R1,Next ajmp Continue ;-------------------------------------Rutin2: mov A,#080h mov R1,#07h Next2: RR A mov P1,A acall Tunda djnz R1,Next2 ajmp Continue Rutin3: mov A,#81h mov P1,A acall Tunda mov A,#42h mov P1,A acall Tunda mov A,#24h mov P1,A acall Tunda mov A,#18h mov P1,A acall Tunda mov A,#24h mov P1,A
Modul Praktikum Mikroprosesor 2009
Page 16
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
acall mov mov acall mov mov acall mov mov acall mov mov acall ajmp
Tunda A,#42h P1,A Tunda A,#81h P1,A Tunda A,#00h P1,A Tunda A,#0FFh P1,A Tunda Continue
;-------------------------------------Rutin4: mov A,#0AAh mov R1,#07h Next3: mov P1,A acall Tunda XRL A,#0ffh djnz R1,Next3 sjmp $ Continue: inc R3 ljmp itung end
Modul relay yang digunakan terdiri dari 8 relay yang berfungsi untuk menampilkan kode pada terminal input ke relay, dengan spesifikasi sebagai berikut : Kompatibel dengan ddt-51 ver 3.0 8 buah relay dengan LED indicator Driver secara parallel Aktif HIGH
Modul Praktikum Mikroprosesor 2009
Page 17
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN V KEYPAD DAN SEVEN SEGMENT 5.1
Tujuan Percobaan • Memahami program pengaturan seven segmen • Memahami program pengaturan keypad
5.2
Alat dan Bahan Modul utama emulator MK51 beserta perlengkapannya Modul Keypad Modul Seven segmen PC dan software praktikum
• • • •
5.2 Cara Kerja 5.2.1 Seven Segmen A. Pengaturan Segmen Tujuan : 1) Mahasiswa mengetahui bagaimana menghidupkan masing-masing segmen dari tujuh segmen yang ada 2) Mahasiswa mampu mengembangkan program untuk membentuk karakter dari seven segment Pecobaan : 1. Buatlah program dengan text editor, dengan nama segA.asm. Default compiler tidak case sensitive, artinya penggunaan huruf besar atau huruf kecil sama saja, ‘StarT’ sama dengan ‘START’. 2. Compile segA.asm sehingga menghasilkan file segA,asm dan segA.lst. Perhatikan bahwa hasil Perhatikan bahwa hasil compile tidak boleh ada kesalahan. Catat file .asm, .lst dan .hex (bukalah dengan editor). 3. Download segA.hex dengan program aem.exe atau hyperterminal ke target emulator. 4. Verify program yang telah didownload ke target emulator dengan file segA.hex di disk, bila OK maka teruskan percobaan. 5. Jalankan program dengan menekan tombol a (goto4030h)
Modul Praktikum Mikroprosesor 2009
Page 18
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
6. Untuk menghentikan program dan kembali ke monitor (prompt *), tekan ^R pada target emulator. 7. Ulangi langkah 1-6 untuk program segB.asm, segC.asm, segD.asm, segE.asm, segF.asm, segG.asm. B. Pengaturan Display Ulangi langkah 1-6 percobaan A untuk program disp1.asm, disp2.asm, disp3.asm, disp4.asm, disp5.asm, disp6.asm. C. Scanning Display Ulangi langkah 1-6 untuk kp1.asm, kp2.asm, kp3.asm, kp4.asm, disp5.asm,
5.2.2
Keypad 1. Buatlah program dengan nama pad0.asm, compile dan download 2. Ulangi langkah 1 untuk program pad5.asm, padA.asm 3. Ulangi langkah 1 untuk program keypad.asm Listing Program Percobaan 5 ;==================== ;Program P5.1 Segmen ;==================== $mod51 PORTA EQU 2000H PORTB EQU 2001H PORTC EQU 2002H CPORT EQU 2003H CW EQU 0080H ORG 4030H ;--------------------------;INITIALIZE 8255 ;--------------------------mov DPTR,#CPORT mov A,#CW movx @DPTR,A ;--------------------------;PENGIRIMAN DATA KE PORT PPI ;--------------------------mulai: mov A,#00000001b ;ubah data ini dalam urutan seperti mov DPTR,#PORTA ;rotate left. Simpan sbg segx.asm movx @DPTR,A mov a,#0h mov DPTR,#PORTB movx @DPTR,A sjmp mulai end ;===================== ;Program P5.2 Display ;=====================
Modul Praktikum Mikroprosesor 2009
Page 19
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
$mod51
PORTA EQU 2000H PORTB EQU 2001H PORTC EQU 2002H CPORT EQU 2003H CW EQU 0080H ORG 4030H ;---------------------------;INITIALIZE 8255 ;---------------------------mov DPTR,#CPORT mov A,#CW movx @DPTR,A ;---------------------------;PENGIRIMAN DATA KE PORT PPI ;---------------------------mulai: mov A,#0ffh ;8 bertitik mov DPTR,#PORTA movx @DPTR,A mov a,#11011111b ;geser nilai nol spt logika rotate right mov DPTR,#PORTB ;simpan sbg file disp.asm movx @DPTR,A sjmp mulai end ;=========================================================== ;Menghidupkan display LED 7 segment ;untuk menampilkan angka 0 s/d F pada segment terakhir (LSB) ;data langsung dikeluarkan ke port PPI ;file name: scan.asm ;=========================================================== $MOD51 PORTA EQU 2000H PORTB EQU 2001H PORTC EQU 2002H CPORT EQU 2003H CW EQU 0080H ORG 4030H Mulai: ;---------------------------------------;INITIALIZE 8255 ;---------------------------------------MOV DPTR,#CPORT MOV A,#CW MOVX @DPTR,A ;---------------------------------------;PENGIRIMAN DATA KE PORT PPI ;---------------------------------------Mov A,#00111111b ;keluarkan kode angka 0 ke port A acall aktif ;aktifkan 7 segmen ke 6 Acall Tunda ;panggil sub routine tunda Mov Acall Acall
A,#00000110b aktif Tunda
;keluarkan kode angka 1 ke port A
Mov Acall
A,#01011011b aktif
;keluarkan kode angka 2 ke port A
Modul Praktikum Mikroprosesor 2009
Page 20
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
Acall
Tunda
Mov Acall Acall
A,#01001111b aktif Tunda
;keluarkan kode angka 3 ke port A
Mov Acall Acall
A,#01100011b aktif Tunda
;keluarkan kode angka 4 ke port A
Mov Acall Acall
A,#01101101b aktif Tunda
;keluarkan kode angka 5 ke port A
Mov Acall Acall
A,#01111101b aktif Tunda
;keluarkan kode angka 6 ke port A
Mov Acall Acall Mov Acall Acall
A,#00000111b aktif Tunda A,#01111111b aktif Tunda
;keluarkan kode angka 7 ke port A
Mov Acall Acall
A,#01101111b aktif Tunda
;keluarkan kode angka 9 ke port A
Mov Acall Acall
A,#01011111b aktif Tunda
;keluarkan kode huruf "a"
Mov Acall Acall
A,#01111100b aktif Tunda
;keluarkan kode huruf "b'
Mov Acall Acall
A,#00111001b aktif Tunda
;keluarkan kode huruf "c"
Mov Acall Acall
A,#01011110b aktif Tunda
;keluarkan kode huruf "d"
Mov Acall Acall
A,#01111011b aktif Tunda
;keluarkan kode huruf "e"
Mov Acall Acall
A,#01110001b aktif Tunda
;keluarkan kode huruf "f"
;keluarkan kode angka 8 ke port A
ljmp Mulai ;lompat ke alamat dg label Mulai ;------------------------------;sub rutin aktifkan 7segmen ke 6 ;------------------------------aktif: Mov DPTR,#PORTA Movx @DPTR,A
Modul Praktikum Mikroprosesor 2009
Page 21
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
MOv A,#0FEh Mov DPTR,#PORTB Movx @DPTR,A ret ;-----------------------------;sub routin tunda ;-----------------------------Tunda: Mov R0,#03Fh ;Isi Register R0 dengan FF (Hex) Tunda1:Mov R1,#03Fh ;Isi Register R1 dengan FF (Hex) Tunda2:Mov R2,#03Fh Djnz R2,$ ;kurangi R1 dengan 1, bila hasil belum Djnz R1,Tunda2 ;sama dgn 0 mk lompat ke perintah ini Djnz R0,tunda1 ;Kurangi R0 dengan 1, bila hasil belum Ret ;kembali ke alamat setelah perintah ;'Acall Delay' End
;=========================================== ;Program untuk menampilkan tulisan "techno" ;dengan delay time sangat cepat ;file name:scan2.asm ;R1 digunakan untuk penyimpanan data driver ;=========================================== $MOD51 PORTA EQU 2000H PORTB EQU 2001H PORTC EQU 2002H CPORT EQU 2003H CW EQU 0080H ORG 4000h ;--------initialize 8255 mov a,#cw mov dptr,#cport movx @dptr,a ;-----------------------mulai: clr A mov A,#01111000b ;mencetak hurut "t" mov DPTR,#PORTA movx @DPTR,A mov A,#11011111b ;aktifkan segmen pertama mov DPTR,#PORTB movx @DPTR,A acall delay mov mov movx mov mov movx acall
A,#01111011b DPTR,#PORTA @DPTR,A A,#11101111b DPTR,#PORTB @DPTR,A delay
;data untuk huruf "e" ;kirim alamat port a ke data pointer ;kirim data huruf "e" ke port a
mov
A,#00111001b
;data untuk huruf "c"
;aktifkan segmen kedua
Modul Praktikum Mikroprosesor 2009
Page 22
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
mov movx Mov mov movx acall
DPTR,#PORTA @DPTR,A A,#11110111b DPTR,#PORTB @DPTR,A delay
;kirim alamat port a ke data pointer ;kirim data huruf "c" ke port a
mov mov movx Mov Mov movx acall mov
A,#01110100b DPTR,#PORTA @DPTR,A A,#11111011b DPTR,#PORTB @DPTR,A delay R1,A
;data untuk huruf "h" ;kirim alamat port a ke data pointer ;kirim data huruf "h" ke port a
mov mov movx Mov mov movx acall mov mov movx Mov mov movx acall mov djnz
A,#00110111b DPTR,#PORTA @DPTR,A A,#11111101b DPTR,#PORTB @DPTR,A delay A,#00111111b DPTR,#PORTA @DPTR,A A,#11111110b DPTR,#PORTB @DPTR,A delay R2,#06h R2,mulai
;data untuk huruf "n" ;kirim alamat port a ke data pointer ;kirim data huruf "n" ke port a
;aktifkan segmen ketiga
;aktifkan segmen keempat ;kembalikan data driver
;aktifkan segmen kedua ;data untuk huruf "o" ;kirim alamat port a ke data pointer ;kirim data huruf "o" ke port a ;aktifkan segmen kedua
delay: Mov Tunda1: Mov Tunda2: Mov Djnz Djnz Djnz Ret end
R0,#01h
;isi Register R0 dengan FF (Hex)
R1,#01h
;isi Register R1 dengan FF (Hex)
R2,#01h R2,$
;kurangi R1 dengan 1, bila hasil belum ;sama dengan 0 maka lompat ke perintah ini
R1,Tunda2 R0,tunda1 ;kurangi R0 dengan 1, bila hasil belum ;kembali ke alamat setelah perintah ;'Acall Delay'
;=========================== ;program penyapuan keypad ;file name:keypad.asm ;=========================== $mod51 porta equ 2000h portb equ 2001h portc equ 2002h cport equ 2003h cw equ 80h ;-----------------------org 4030h
Modul Praktikum Mikroprosesor 2009
Page 23
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
mov a,#cw mov dptr,#cport movx @dptr,a ;-----------------------;scan baris pertama ;-----------------------mulai: mov a,#11111011b mov dptr,#portc movx @dptr,a mov p1,#0ffh angka0: jb p1.3,angka1 tampil0: mov a,#03fh acall aktif jnb p1.3,tampil0 angka1: jb p1.4,angka2 tampil: mov a,#6h acall aktif jnb p1.4,tampil1 angka2: jb p1.5,angka3 tampil2: mov a,#5bh acall aktif jnb p1.5,tampil2 angka3: jb p1.6,angka4 tampil3: mov a,#4fh acall aktif jnb p1.6,tampil3 ;-----------------------;scan baris kedua ;-----------------------angka4: mov a,#11111101b mov dptr,#portc movx @dptr,a jb p1.3,angka5 tampil4: mov a,#66h acall aktif jnb p1.3,tampil4 angka5: jb p1.4,angka6 tampil5: mov a,#6dh acall aktif jnb p1.4,tampil5 angka6: jb p1.5,angka7 tampil6: mov a,#7dh acall aktif jnb p1.5,tampil6 angka7: jb p1.6,angka8 tampil7: mov a,#7h acall aktif jnb p1.6,tampil7 ;----------------------
Modul Praktikum Mikroprosesor 2009
Page 24
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
;scan baris ketiga ;---------------------angka8: mov a,#11111110b mov dptr,#portc movx @dptr,a jb p1.3,angka9 tampil8: mov a,#7fh acall aktif jnb p1.3,tampil8 angka9: jb p1.4,hurufa tampil9: mov a,#6fh acall aktif jnb p1.4,tampil9 hurufa: jb p1.5,hurufb tampila: mov a,#5fh acall aktif jnb p1.5,tampila hurufb: jb p1.6,clear tampilb: mov a,#7ch acall aktif jnb p1.6,tampilb clear: mov a,#0h mov dptr,#porta movx @dptr,a ljmp mulai aktif: mov dptr,#porta movx @dptr,a] mov a,#11011111b mov dptr,#portb movx @dptr,a ret end
Modul Praktikum Mikroprosesor 2009
Page 25
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
PERCOBAAN VI PENGENDALIAN MOTOR STEPPER 6.1 • • •
Tujuan Percobaan Memahami hardware dan software pengaturan motor stepper Memahami algoritma dan flowchart pemrograman Memahami program pengaturan gerakan motor stepper
• • •
Alat dan Bahan Modul utama emulator MK51 beserta perlengkapannya Modul driver dan motor stepper PC dan software praktikum
6.2
6.3
Deskripsi Percobaan Pada modul ini digunakan suatu modul output yang terdiri dari sebuah motor stepper. Motor stepper sering digunakan pada peralatan – peralatan elektronika dan mempunyai fungsi untuk mengatur gerakan “plant/hardware”, juga banyak digunakan pada robot – robot baik industri maupun robot pada laboratorium. Keunggulan motor stepper dibandingkan dengan motor yang lain adalah motor stepper mampu memberikan gerakan “langkah per langkah” sehingga baik untuk operasi plant/hardware yang mengutamakan ketepatan posisi. Sesuatu yang perlu diperhatikan dalam menjalankan motor stepper adalah motor tersebut dapat berjalan dengan memberikan suatu tegangan logika yang tentunya telah melalui driver motor terlebih dahulu.
Modul Praktikum Mikroprosesor 2009
Page 26
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
Phase 1
Phase 2
Phase 3
Phase 4
Gambar 6.1 logika penggerakan motor stpper
Adapun tabel logika tegangannya (fullstep) adalah sebagai berikut: Step 1 Step 2 Step 3 Step 4 Phase 1 1 0 0 0 Phase 2 0 1 0 0 Phase 3 0 0 1 0 Phase 4 0 0 0 1 Logika di atas adalah untuk 4 step dan dengan torsi kecil. Adapun bila kita ingin menghasilkan torsi yang besar maka kita harus mengubah logikanya menjadi sebagai berikut: Step 1 Step 2 Step 3 Step 4 Phase 1 1 1 0 0 Phase 2 0 1 1 0 Phase 3 0 0 1 1 Phase 4 1 0 0 1 Untuk menghasilakan torsi yang lebih besar: Phase 1 Phase 2 Phase 3 Phase 4
Step 1 1 0 1 1
Step 2 1 1 0 1
Step 3 1 1 1 0
Step 4 0 1 1 1
NB: yang perlu diperhatikan disini adalah bahwa motor stepper tersebut butuh catu antara 8-12 Volt. Bila diberi tegangan terlalu kecil maka motor tersebut tidak mau berputar. Pada percobaan digunakan software yang merupakan suatu contoh sederhana untuk mengaktifkan motor stepper dengan suatu tundaan dan mengaktifkan port 1; dan port a PPI. Pada percobaan ini disarankan untuk membuat delay lama, karena bila delaynya terlalu cepat maka motor stepper akan bergetar (kondisi on-off motor stepper terjadi terus menerus). Hal ini dapat menyebabkan kerusakan pada motor stepper. Modul Praktikum Mikroprosesor 2009
Page 27
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
Selain metode full step, motor stepper juga dapat dikendalikan dengan metode half step sehingga gerakan motor dapat lebih halus. 6.4 Cara Kerja 6.4.1 Full Step 1. Buatlah program P6.1 dengan text editor dengan nama MotAxx.asm (dengan xx adalah nama kelompok anda). Default compiler tidak case sensitive, artinya penggunaan huruf besar atau huruf kecil sama saja, ‘StarT’ sama dengan ‘START’. 2. Compile MotAxx.asm sehingga menghasilkan file MotAxx.hex dan MotAxx.lst. Perhatikan bahwa hasil compile tidak boleh ada kesalahan. 3. Download MotAxx.hex dengan program aem.exe atau hyperterminal ke target emulator. 4. Verivy program yang telah didownload ke target emulator dengan file MotAxx.hex di disk, bila verivy ok maka teruskan percobaan. Untuk setiap percobaan dengan program yang berbeda, langkah – langkah 1 s/d 4 harus dilakukan, bila ada kesalahan lihat file .lst-nya (di dalam text editor) kemudian amati kesalahan yang terjadi. Betulkan file asm-nya (ulangi langkah 1 s/d 4), sehingga no error found. 5. Jalankan program dengan menekan tombol a (goto 4030h) 6. Amati arah dan gerakan motor stepper, hitung jumlah gerakan dan sudut yang ditempuh. 7. Untuk menghentikan program dan kembali ke monitor (prompt*), tekan reset pada target emulator. 8. Selama catu daya di target emulator tidak dimatikan, berarti program yang didownload tetap ada. 9. Dari listing program di atas dan dari pengamatan gerakan motor, buatlah algoritma dan flowchart program ! 10. Jelaskan bagaimana cara kerja software dan cara kerja hardware ! 6.4.2
Half Step Lakukan langkah-langkah percobaan A terhadap program P6.2 dan simpan file dengan nama MotBxx.asm, jumlah gerakan dihitung hingga dicapai sudut yang sama dengan percobaan A. Bandingkan! Dari data percobaan hitung sudut gerakan motor untuk setiap langkah. Buat program sederhana untuk menggerakkan motor stepper kekanan kemudian kekiri dengan susut tertentu yang berbeda dengan metode yang berbeda pula. Analisa program tersebut!
Modul Praktikum Mikroprosesor 2009
Page 28
LABORATORIUM ELEKTRONIKA DAN MIKROPROSESOR
Listing program percobaan 6 ;========================================= ;P6.1 Pengendalian Motor Stepper Full Step ;========================================= $MOD51 org 4030h mov A,#10001000b ;or 11001100b or 11101110b start: rl A ;diganti dengan rr mov P1,A acall tunda sjmp start tunda: mov R0,#0FFh tunda1: mov R1,#03Fh tunda2: mov R2,#03Fh djnz R2,$ djnz R1,tunda2 djnz R0,tunda1 ret end ;========================================= ;P6.2 Pengendalian Motor Stepper Half Step ;========================================= $MOD51 org 4030h mov A,#10001000b mulai: mov P1,A acall tunda mov B,A rr A ;diganti dengan r1 orl B,A mov P1,B acall tunda sjmp start tunda: mov R0,#0FFh tunda1: mov R1,#03Fh tunda2: mov R2,#03Fh djnz R2,$ djnz R1,tunda2 djnz R0,tunda1 ret end
Modul Praktikum Mikroprosesor 2009
Page 29