logo

Select Sidearea

Populate the sidearea with useful widgets. Itโ€™s simple to add images, categories, latest post, social media icon links, tag clouds, and more.
[email protected]
+1234567890
 

Tutorial Microcontroller MCS-51 ATMEL ISP

Tutorial Microcontroller MCS-51 ATMEL ISP


image

Microcontroller Kits

Programmer and Target 89s51
image

Simple Mikrokontroller 89s51 Trainer
image

Standart
Mikrokontroller 89s51 Trainer
image

Super Mikrokontroller Trainer 89s51
image

Dot matrix Trainer
ATMEGA8

image

All Kits

Programmer via USB Port

image

ย 

Percobaan 5.3. Aplikasi program komparator dengan memanfaatkan instruksi aritmatika dan instruksi lompatan untuk pengaturan suhu dengan display LCD Karakter

Dalam dunia elektronika, rangkaian komparator, umumnya diwujudkan dengan memanfaatkan rangkaian op-amp yang dibangun sebagai komparator. Sesuai dengan prinsip kerja komparator, membandingkan dua buah tegangan yang masuk pada input INV dan NON INV, untuk menghasilkan suatu output tegangan saturasi. Dengan memanfaatkan instruksi aritmatika SUBB dan instruksi lompatan JZ dan JC, maka rangkaian analog ini dapat digantikan dengan menggunakan pemrograman assembly.

Gambar 5.10 Rangkaian komparator analog dengan IC OP-AMP

Apabila tegangan yang masuk pada VREF lebih besar daripada tegangan yang masuk pada VIN maka VOUT akan mengeluarkan tegangan ~0 volt. Dan sebaliknya bila tegangan yang masuk pada VREF lebih kecil dari pada VIN maka VOUT akam mengeluarkan tegangan VSAT.

ControlSuhu:    mov a,dataSetting ; contoh dataSetting=50    mov b,dataADC ; contoh dataADC=30    clr c    subb a,b     jnz OnHeater    retOnHeater:    jc OffHeater    call HeaterOn ;Instruksi hidupkan heater    retOffHeater:    Call HeaterOff ;Instruksi matikan heater    ret;

Pada instruksi tersebut diambil selisih antara dataSetting dan dataADC dengan menggunakan instruksi SUBB, pengurangan ini akan menghasilkan tiga keadaan yaitu: NOL, NEGATIF atau POSITIF. Hasil-hasil inilah yang harus dideteksi, keadaan NEGATIF dapat dideteksi dengan memantau bit C (carry ), keadaan NOL dapat dideteksi dengan memantau register A (accumulator).

Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=30
SUBB A,B
A=50-30 =20 (keadaan POSITIF)
Sesuai dengan instruksi diatas maka program akan menuju ke Ret OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan POSITIF maka C=0 (clear) sehingga program akan memanggil HeaterOn

Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=50
SUBB A,B
A=50-50 =00 (keadaan NOL)
Sesuai dengan instruksi diatas maka program akan menuju ke Ret.

Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=51
SUBB A,B
A=50-51 =-1 (keadaan NEGATIF)
Sesuai dengan instruksi diatas maka program akan menuju ke OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan NEGATIF maka C=1 (clear) sehingga program akan memanggil label OffHeater

Pada percobaan 5.3. ini indikator heater On dan Off, ditunjukkan pada layar LCD Karakter pada baris 1. seperti yang ditunjukkan pada pemrograman berikut ini:

1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG
2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0
3. Hubungkan modul Microcontroller Trainer dengan power supply +5V
4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program (download file prog53a.asm

Gambar 5.11. Diagram alir (a) rutin utama (b) subrutin kontrol suhu pada percobaan 5.3.

dataSetting equ 30hdataADC equ 31hratusan equ 32hpuluhan equ 33hsatuan equ 34h      org 0h      mov dataSetting,#50d; contoh datasetting=50      call init_lcdstart:call ADC      call ControlSuhu      call bin2dec      call Display2LCD      sjmp start           ;ControlSuhu:      mov a,dataSetting ; contoh dataSetting=50      mov b,dataADC ; contoh dataADC=30      clr c      subb a,b       jnz OnHeater      retOnHeater:      jc OffHeater      call HeaterOn ;Instruksi hidupkan heater      retOffHeater:      Call HeaterOff ;Instruksi matikan heater      ret           ;HeaterOn:      mov R1,#80h      call write_inst      mov R1,#'O'      call write_data           ;      mov R1,#81h      call write_inst      mov R1,#'n'      call write_data           ;      mov R1,#82h      call write_inst      mov R1,#' '      call write_data      retHeaterOff:      mov R1,#80h      call write_inst      mov R1,#'O'      call write_data           ;      mov R1,#81h      call write_inst      mov R1,#'f'      call write_data           ;      mov R1,#82h      call write_inst      mov R1,#'f'      call write_data      ret;=======================================;Subrutin ini untuk merubah data biner ke desimal;menjadi 3 digit = ratusan-puluhan-satuan;=======================================Bin2Dec:      mov A,dataADC      mov b,#100d      div ab      mov ratusan,a      mov a,b      mov b,#10d      div ab      mov puluhan,a      mov satuan,b      ret ;=================================================;Subrutin untuk menampilkan data ke LCD character 2 x16;pada DDRAM 0C9 0CA 0CB untukratusan, puluhan, and satuan;=================================================Display2LCD:           mov r1,#0c0h           call write_inst           mov a,ratusan           add a,#30h           mov r1,a           call write_data           ;           mov r1,#0c1h           call write_inst           mov a,puluhan           add a,#30h           mov r1,a           call write_data           ;           mov r1,#0c2h           call write_inst           mov a,satuan           add a,#30h           mov r1,a           call write_data            ret;=======================================;Subrutin ini digunakan untuk mengambil data ADC;========================================ADC: clr P3.3     nop     nop     nop     setb P3.3eoc: jb P3.2,eoc     clr P3.4     mov A,P1     mov dataADC,A     setb P3.4     ret            ;Init_lcd:   mov r1,#00000001b ;Display clear   call write_inst    mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7   call write_inst    mov r1,#00001100b ;Display on, cursor off,cursor blink off   call write_inst   mov r1,#00000110b ;Entry mode, Set increment   call write_inst   ret;write_inst:           clr P3.6 ; RS = P2.0 = 0, write mode instruction           mov P0,R1 ; D7 s/d D0 = P0 = R1           setb P3.7 ; EN = 1 = P2.1            call delay ; call delay time           clr P3.7 ; EN = 0 = P2.1           ret           ;Write_data:           setb P3.6 ; RS = P2.0 = 1, write mode data           mov P0,R1 ; D7 s/d D0 = P0 = R1           setb P3.7 ; EN = 1 = P2.1           call delay ; call delay time           clr p3.7 ; EN = 0 = P2.1           ret           ;           delay: mov R0,#0           delay1:mov R2,#0fh           djnz R2,$           djnz R0,delay1           ret           end

6. Simpanlah program yang anda ketik dan beri nama : prog53a.asm
7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
9. Lakukan modifikasi pada program tersebut dengan manambahkan kata SUHU: , pada Baris 2 diikuti dengan data ADC.

BACKNEXT

Komentar, pertanyaan dan diskusi tentang topik tersebut. Klik disini

ย 

HARDWARE
1.Target
2.Programmer


DASAR TEORI
1.Organisasi Mem
1.1. Mem.Data
1.2. Mem.Prog
1.4. SFR2.Pengalamatan3.Set Instruksi
3.1.Copy Data
3.2.Aritmatika
3.3.Logika
3.4.Lompatan4.Interupsi5.Timer Counter6.Serial Kom.7.Bahasa Assemb.8.Perangkat LunakMIDE dan ISP Soft.

PERCOBAAN 1
LED

PERCOBAAN 2
SAKLAR

PERCOBAAN 3
7 Segmen

PERCOBAAN 4
LCD Character

PERCOBAAN 5
ADC

PERCOBAAN 6
DAC

PERCOBAAN 7
Keypad

PERCOBAAN 8
Motor Stepper

PERCOBAAN 9
Timer Counter

PERCOBAAN 10
Komunikasi Serial

PERCOBAAN 11
Interupsi

PERCOBAAN 12
Keyboard PC

PERCOBAAN 13
Printer Dot Matr.

PERCOBAAN 14
RTC12C887

PERCOBAAN 15
P W M

APLIKASI

ย 

ย 

imageimageimageimage