57
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”,
58 ORG 0000H JMP MULAI ;=============== ;LCD KONSTANTA ;===============
DISPCLR EQU 00000001B ;Perintah u/ menghapus layar LCD
FUNCSET EQU 00111000B ;Perintah u/ konfigurasi mode=8bit, 2baris,font=5x7
ENTRMOD EQU 00000110B ;Perintah u/ menggeser posisi kursor ke arah kanan
DISPON EQU 00001100B ;Perintah u/ mengaktifkan Display ;========== ;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 ;============================================================ ============= ;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
59
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
60
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 ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
MOV DPTR,#TXT_1_2 ;PINDAHKAN TXT_9 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_2
JNB TB_UP,S_120 ;CEK TOMBOL UP,JIKA DI TEKAN LOMPAT KE S_60
JNB TB_DOWN,S_30 ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT KE S_30
JNB TB_ENT,OK_2 ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT KE OK_2
JMP S_60 S_120 :
MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
MOV DPTR,#TXT_1_3 ;PINDAHKAN TXT_9 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_3
JNB TB_UP,S_180 ;CEK TOMBOL UP,JIKA DI TEKAN LOMPAT KE S_180
JNB TB_DOWN,S_60 ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT KE S_60
JNB TB_ENT,OK_3 ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT KE OK_3
JMP S_120 S_180 :
MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
61
MOV DPTR,#TXT_1_4 ;PINDAHKAN TXT_9 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_4
JNB TB_DOWN,S_120 ;CEK TOMBOL DOWN,JIKA DI TEKAN LOMPAT KE S_120
JNB TB_ENT,OK_4 ;CEK TOMBOL ENTER,JIKA DI TEKAN LOMPAT KE OK_4 JMP S_180 ;====================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 ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
MOV DPTR,#TXT_1_2 ;PINDAHKAN TXT_1_2 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_2
CALL PANAH2
MOV R1,#0A5H ;ISI REGISTER R1 DENGAN A5H MOV R2,#0DAH ;ISI REGISTER R2 DENGAN DAH SJMP SIAP
OK_3 :
CALL PROSES
MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
MOV DPTR,#TXT_1_3 ;PINDAHKAN TXT_1_3 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_3
CALL PANAH2
MOV R1,#67H ;ISI REGISTER R1 DENGAN 67H MOV R2,#0EDH ;ISI REGISTER R2 DENGAN EDH SJMP SIAP
62 OK_4 :
CALL PROSES
MOV A,#0C5H ;CETAK DI BARIS BAWAH LCD (5 SPASI) CALL LCDINS
MOV DPTR,#TXT_1_4 ;PINDAHKAN TXT_1-4 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_1_4
CALL PANAH2
MOV R1,#0A9H ;ISI REGISTER R1 DENGAN A9H MOV R2,#0F3H ;ISI REGISTER R2 DENGAN F3H SJMP SIAP
;===================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 DENGAN TIMER 1 MODE
1======================= JEDA :
MOV TL1,R1 ;ISI TL1 DENGAN DATA DI R1 MOV TH1,R2 ;ISI TH1 DENGAN DATA DI R2
CLR TF1 ;MATIKAN FLAG LIMPAHAN TIMER1 SECARA
MANUAL
SETB TR1 ;HIDUPKAN TIMER 1
TUNGGU:
JNB TF1,TUNGGU ;TUNGGU HINGGA MELIMPAH
CLR TR1 ;MATIKAN TIMER 1
RET
;=========CETAKAN SAAT
63 PROSES:
CALL INITLCD
MOV A,#080H ;CETAK DI BARIS ATAS
CALL LCDINS
MOV DPTR,#TXT_2_3 ;PINDAHKAN TXT_2_3 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2_3
CALL PANAH RET
PANAH: MOV A,#0C0H ;CETAK DI BARIS BAWAH (GDA SPASI) CALL LCDINS
MOV DPTR,#TXT_2_4 ;PINDAHKAN TXT_2_4 KE DATAPOINTER CALL LCDSTRING ;CETAK TXT_2_4
RET
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 ;CEK TOMBOL ENTER/STOP,JIKA DI TEKAN LOMPAT KE STOP
RET 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
64
;=================PROSEDUR CETAK
STRING=========================== 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 ke sub.PRINTSTRINGLOOP
RET
;=======PROSEDUR KONTROL BYTE OPERASI PADA
LCD==================== 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
65 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
DJNZ R4,$ ;kurangi 1 nilai R4,jika belum nol ulangi 256x
DJNZ R3,MUTER ;kurangi 1 nilai R3,jika belum nol kembali ke sub.MUTER
RET ;kembali ke program Utama
;============ SIAP CETAK KE LCD =================================== 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
66 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 DATA
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
67