DAFTAR PUSTAKA
Dr.Sjukri Karim, Dr Peter Kabo, EKG dan Penanggulangan beberapa penyakit jantung untuk dokter umum, Fakultas Kedokteran Unversitas Indonesia, 1996. Hendra Marwazi ST. MT , Anshor Usman Ibrahim ST. MT , Adisman Drs, BE , LAPORAN AKHIR PENELITIAN RISET PEMBINAAN TENAGA KESEHATAN Pengujian Akurasi Gelombang Fisiologi dari Rancang Bangun Simulator Electrocardiograph (ECG) Terhadap Sinyal Input Jenis Gelombang Simulasi Fisiologi Electrocardiograph. Departemen Kesehatan RI POLITEKNIK KESEHATAN JAKARTA II Jurusan Teknik Elektromedik, 2007. Agfianto Eko Putra, BELAJAR MIKROKONTROLLER AT89C51/52/53, Gava Media, 2005. Anisa Nova Yanti, SIMULATOR ECG , Departemen Kesehatan RI POLITEKNIK KESEHATAN JAKARTA II Jurusan Teknik Elektromedik, 2008 Couglin, Rober F., Frederick F. Driscoll, Penguat Operasional dan Rangkaian Terpadu Linear, Erlangga, 1992. ” Teori OP-AMP “, http//abonk.blog.unsoed.ac.id/files/2009/06/02_op-amp.pdf, 12-11-2010. Triwiyanto, “ DEVELOPMENT BOARD MIKROKONTROLER 89S51”, http:// www.mytutorialcafe.com, 18-10-2010.
57
ORG 0000H JMP MULAI
;=============== ;LCD KONSTANTA ;=============== DISPCLR EQU 00000001B FUNCSET EQU 00111000B ENTRMOD EQU
00000110B
DISPON EQU 00001100B ;========== ;PORT LCD ;========== LCDE BIT P1.1 LCDRS BIT P1.0 PLCD EQU P0 TB_ENT BIT P3.5 TB_UP BIT P3.6 TB_DOWN BIT P3.7 ;======================== PUTR EQU 70H
;Perintah u/ menghapus layar LCD ;Perintah u/ konfigurasi mode=8bit, 2baris,font=5x7 ;Perintah u/ menggeser posisi kursor ke arah kanan ;Perintah u/ mengaktifkan Display
;============================================================ ============= ;PROGRAM UTAMA ;============================================================ ============= MULAI : MOV P2,#00 ;KOSONGKAN DAC MOV TMOD,#00010000B ;AKTIFKAN TIMER1 MODE1 CALL INITLCD ;INISIALISASI LCD MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_1 ;PINDAHKAN TXT_1 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1 MOV A,#0C0H ;CETAK DI BARIS BAWAH LCD CALL LCDINS MOV DPTR,#TXT_2 ;PINDAHKAN TXT_2 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2 MOV A,#03 CALL DELAY3 ;PANGGIL DELAY 58
CALL INITLCD ;INISIALISASI LCD MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_3 ;PINDAHKAN TXT_1 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1 MOV A,#03 CALL DELAY3 ;PANGGIL DELAY CALL INITLCD MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_4 ;PINDAHKAN TXT_3 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_3 MOV A,#0C0H ;CETAK DI BARIS BAWAH LCD CALL LCDINS MOV DPTR,#TXT_5 ;PINDAHKAN TXT_4 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_4 MOV A,#03 CALL DELAY3 ;PANGGIL DELAY CALL INITLCD MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_6 ;PINDAHKAN TXT_5 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_5 MOV A,#0C0H ;CETAK DI BARIS BAWAH LCD CALL LCDINS MOV DPTR,#TXT_7 ;PINDAHKAN TXT_6 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_6 MOV A,#03 CALL DELAY3 ;PANGGIL DELAY CALL INITLCD MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_8 ;PINDAHKAN TXT_7 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_7 MOV A,#0C0H ;CETAK DI BARIS BAWAH LCD CALL LCDINS MOV DPTR,#TXT_9 ;PINDAHKAN TXT_8 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_8 MOV A,#03 CALL DELAY3 ;PANGGIL DELAY LAGI: CALL INITLCD 59
MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_1_0 ;PINDAHKAN TXT_9 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_9 S_30: MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS MOV DPTR,#TXT_1_1 ;PINDAHKAN TXT_9 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_1 JNB TB_UP,S_60 ;CEK TOMBOL UP,JIKA DI TEKAN LOMPAT KE S_60 JNB TB_ENT,OK_1 ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT KE OK_1 JMP S_30 S_60 : MOV A,#0C5H CALL LCDINS MOV DPTR,#TXT_1_2 CALL LCDSTRING JNB TB_UP,S_120 S_60 JNB TB_DOWN,S_30 KE S_30 JNB TB_ENT,OK_2 KE OK_2 JMP S_60 S_120 : MOV A,#0C5H CALL LCDINS MOV DPTR,#TXT_1_3 CALL LCDSTRING JNB TB_UP,S_180 S_180 JNB TB_DOWN,S_60 KE S_60 JNB TB_ENT,OK_3 KE OK_3 JMP S_120 S_180 : MOV A,#0C5H CALL LCDINS
;CETAK DI BARIS BAWAH LCD (5 SPASI) ;PINDAHKAN TXT_9 KE DATAPOINTER ;CETAK TXT_1_2 ;CEK TOMBOL UP,JIKA DI TEKAN LOMPAT KE ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT
;CETAK DI BARIS BAWAH LCD (5 SPASI) ;PINDAHKAN TXT_9 KE DATAPOINTER ;CETAK TXT_1_3 ;CEK TOMBOL UP,JIKA DI TEKAN LOMPAT KE ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT
;CETAK DI BARIS BAWAH LCD (5 SPASI)
60
MOV DPTR,#TXT_1_4 CALL LCDSTRING JNB TB_DOWN,S_120 KE S_120 JNB TB_ENT,OK_4 KE OK_4 JMP S_180
;PINDAHKAN TXT_9 KE DATAPOINTER ;CETAK TXT_1_4 ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT
;====================ISI KOEFISIEN ECG================================== OK_1 : CALL PROSES MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS MOV DPTR,#TXT_1_1 ;PINDAHKAN TXT_1_1 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_1 CALL PANAH2 MOV R1,#23H ;ISI REGISTER R1 DENGAN 23H MOV R2,#0B5H ;ISI REGISTER R2 DENGAN B5H SJMP SIAP OK_2 : CALL PROSES MOV A,#0C5H CALL LCDINS MOV DPTR,#TXT_1_2 CALL LCDSTRING CALL PANAH2 MOV R1,#0A5H MOV R2,#0DAH SJMP SIAP OK_3 : CALL PROSES MOV A,#0C5H CALL LCDINS MOV DPTR,#TXT_1_3 CALL LCDSTRING CALL PANAH2 MOV R1,#67H MOV R2,#0EDH SJMP SIAP
;CETAK DI BARIS BAWAH LCD (5 SPASI) ;PINDAHKAN TXT_1_2 KE DATAPOINTER ;CETAK TXT_1_2
;ISI REGISTER R1 DENGAN A5H ;ISI REGISTER R2 DENGAN DAH
;CETAK DI BARIS BAWAH LCD (5 SPASI) ;PINDAHKAN TXT_1_3 KE DATAPOINTER ;CETAK TXT_1_3
;ISI REGISTER R1 DENGAN 67H ;ISI REGISTER R2 DENGAN EDH
61
OK_4 : CALL PROSES MOV A,#0C5H CALL LCDINS MOV DPTR,#TXT_1_4 CALL LCDSTRING CALL PANAH2 MOV R1,#0A9H MOV R2,#0F3H SJMP SIAP
;CETAK DI BARIS BAWAH LCD (5 SPASI) ;PINDAHKAN TXT_1-4 KE DATAPOINTER ;CETAK TXT_1_4
;ISI REGISTER R1 DENGAN A9H ;ISI REGISTER R2 DENGAN F3H
;===================KELUARKAN 96 DATA ECG============================ SIAP: MOV R4,#96 ;R4 DIISI DATA MOV DPTR,#TABEL_ECG ;PINDAHKAN DATA ECG KE Data Pointer LUUP : CLR A ;KOSONGKAN AKUMULATOR MOVC A,@A+DPTR ;NAIKAN 1 DATA ECG MOV P2,A ;KELUARKAN DATA ECG DI P.2 ACALL JEDA ;PANGGIL DELAY TIMER INC DPTR ;NAIKAN 1 DATA ECG DJNZ R4,LUUP ;KURANGI 1 DATA DI R4 CALL INTER ;CEK TOMBOL ENTER/STOP SJMP SIAP ;KELUARKAN LAGI DATA ECG ;==================DELAY 1======================= JEDA : MOV TL1,R1 MOV TH1,R2 CLR TF1 MANUAL SETB TR1 TUNGGU: JNB TF1,TUNGGU CLR TR1
DENGAN
TIMER
1
MODE
;ISI TL1 DENGAN DATA DI R1 ;ISI TH1 DENGAN DATA DI R2 ;MATIKAN FLAG LIMPAHAN TIMER1 SECARA ;HIDUPKAN TIMER 1
;TUNGGU HINGGA MELIMPAH ;MATIKAN TIMER 1
RET ;=========CETAKAN PROSES======================================== 62
SAAT
PROSES: CALL INITLCD MOV A,#080H CALL LCDINS MOV DPTR,#TXT_2_3 CALL LCDSTRING CALL PANAH RET PANAH: MOV A,#0C0H CALL LCDINS MOV DPTR,#TXT_2_4 CALL LCDSTRING RET
;CETAK DI BARIS ATAS ;PINDAHKAN TXT_2_3 KE DATAPOINTER ;CETAK TXT_2_3
;CETAK DI BARIS BAWAH (GDA SPASI) ;PINDAHKAN TXT_2_4 KE DATAPOINTER ;CETAK TXT_2_4
PANAH2: MOV A,#0CEH ;CETAK DI BARIS BAWAH (SPASI KE 14) CALL LCDINS MOV DPTR,#TXT_2_5 ;PINDAHKAN TXT_2_5 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2_5 RET ;===================JIKA SELESAI================================ INTER : JNB TB_ENT,STOP LOMPAT KE STOP RET
;CEK TOMBOL ENTER/STOP,JIKA DI TEKAN
STOP: MOV P2,#00 ;KOSONGKAN DAC MOV A,#DISPCLR CALL LCDINS CALL DELAY2 MOV A,#080H ;CETAK DI BARIS ATAS LCD CALL LCDINS MOV DPTR,#TXT_2_1 ;PINDAHKAN TXT_2_1 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2_1 MOV A,#0C0H ;CETAK DI BARIS BAWAH LCD CALL LCDINS MOV DPTR,#TXT_2_2 ;PINDAHKAN TXT_2_2 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2_2 MOV A,#04 CALL DELAY3 LJMP MULAI
63
;=================PROSEDUR STRING===========================
CETAK
PRINTSTRINGLOOP: CALL LCDDAT ;panggil Subrutin LCDDAT INC DPTR ;Naikkan 1 datapointer LCDSTRING: CLR A ;kosongkan akumulator MOVC A,@A+DPTR ;pindahkan isi datapointer ke akumulator JNZ PRINTSTRINGLOOP ;jika belum kosong kembali sub.PRINTSTRINGLOOP RET ;=======PROSEDUR KONTROL LCD====================
BYTE
OPERASI
ke
PADA
LCDINS: MOV PLCD,A ;isi akumulator dikeluarkan di port.0 CLR LCDRS ;RS=0 ,data sebagai perintah SJMP LCDOUT ;lompat ke Subrutin LCDOUT LCDDAT: MOV PLCD,A ;isi akumulator dikeluarkan di port.0 SETB LCDRS ;RS=1 , data ditampilkan ke layar LCD LCDOUT: SETB LCDE ;E=1 ,mengirim data ke LCD CALL DELAY ;panggil delay CLR LCDE ;E=0 , berhenti mengirim data ke LCD CALL DELAY ;panggil Delay RET ;kembali ke program Utama ;=======PROSEDUR INISIALISASI LCD================================= INITLCD: MOV A,#DISPCLR ;Perintah menghapus layar LCD,dimasukan ke akumulator CALL LCDINS ;panggil subrutin LCDINS CALL DELAY ;panggil delay MOV A,#FUNCSET ;Perintah Function Setting ,dimasukan ke akumulator CALL LCDINS ;panggil subrutin LCDINS CALL DELAY ;Panggil Delay MOV A,#DISPON ;Perintah Mengaktifkan display,dimasukan ke akumulator CALL LCDINS ;panggil LCDINS CALL DELAY ;Panggil Delay MOV A,#ENTRMOD ;Perintah Geser kursor, dimasukan ke akumulator CALL LCDINS ;panggil LCDINS CALL DELAY ;Panggl Delay MOV A,#DISPCLR ;Perintah menghapus layar LCD,dimasukan ke akumulator 64
CALL LCDINS ;panggil subrutin LCDINS CALL DELAY2 ;panggil subrutin delay2 RET ;kembali ke program Utama ;=======PROSEDUR DELAY============================================ DELAY3: MOV PUTR,A ;isi akumulator dimasukan ke alamat 70H MUTERZ: CALL DELAY2 ;Panggil Delay2 DJNZ PUTR,MUTERZ ;JIka isi di 70H belum nol kembali ke sub.MUTERZ RET ;kembali ke program Utama DELAY2: MOV R5,#94 ;Isi R5 dengan nilai 95 MUTERX: MOV R6,#250 ;Isi R6 dengan nilai 250 CALL DELAY ;panggil delay DJNZ R6,$ ;kurangi 1 nilai R6,jika belum nol ulangi 256x DJNZ R5,MUTERX ;kurangi 1 nilai R5,jika belum kembali ke sub.MUTERX RET ;kembali ke program Utama DELAY: MOV R3,#08 ;Isi R3 dengan nilai 8 MUTER: MOV R4,#0240 ;Isi R4 dengan nilai 240 DJNZR4,$ ;kurangi 1 nilai R4,jika belum nol ulangi 256x DJNZR3,MUTER ;kurangi 1 nilai R3,jika belum nol kembali ke sub.MUTER RET ;kembali ke program Utama ;============ SIAP CETAK =================================== TXT_1 : DB ' SIMULASI ',0 TXT_2 : DB ' PEMBANGKIT ',0 TXT_3: DB ' SINYAL JANTUNG ',0 TXT_4 : DB ' IWAN MUSTOFA L ',0 TXT_5 : DB ' 4141011051 ',0 TXT_6 : DB ' FTI ELEKTRO ',0 TXT_7 : DB ' 2010 ',0 TXT_8 : DB ' UNIVERSITAS ',0 TXT_9 : DB ' MERCU BUANA ',0 TXT_1_0 : DB ' SETTING BPM:',0 TXT_1_1 : DB ' 30BPM ',0 TXT_1_2 : DB ' 60BPM ',0 65
KE
LCD
TXT_1_3 : DB ' 120BPM ',0 TXT_1_4 : DB ' 180BPM ',0 TXT_2_1 : DB ' S T O P',0 TXT_2_2 : DB 'C O M P L E T E',0 TXT_2_3 : DB ' OUTPUT DATA : ',0 TXT_2_4 : DB '>>',0 TXT_2_5 : DB '<<',0 ;==========LOKUP TABLE ECG=================================== TABEL_ECG: DB 28,28,28,28,28,28,28,28,28,28,28,28 DB 31,35,40,45,46,45,39,32,30,29,28,28 DB 28,28,28,28,24,19,53,87,122,73,22,25 DB 26,27,28,28,28,28,28,28,28,28,28,28 DB 32,36,40,44,48,51,54,60,62,63,61,58 DB 50,41,35,31,29,28,28,28,28,28,28,28 DB 28,28,28,28,28,28,28,28,28,28,28,28 DB 28,28,28,28,28,28,28,28,28,28,28,28 END
66
DATA
67