Anda di halaman 1dari 30

LAPORAN PRAKTIKUM MIKROPROSESOR

PROGRAM PEMBANGKIT GELOMBANG

TANGGAL PERCOBAAN : 12 Desember 2014


NAMA : Dessy Iztamia Shema (131331043)
PARTNER : Ajeung Mustika S. (131331036)
Andika Himawan E. (131331039)
KELAS : 2 TC B

PROGRAM STUDI D3-TEKNIK TELEKOMUNIKASI


POLITEKNIK NEGERI BANDUNG
2014
PROGRAM PEMBANGKIT GELOMBANG

I. Tujuan
 Membuat program untuk membangkitkan gelombang sinus dengan amplitudo dan
frekuensi tertentu.
 Membuat program untuk membangkitkan gelombang modulasi AM dengan
amplitudo dan frekuensi tertentu.

II. Landasan Teori


Sebagian sinyal langsung ditemui dalam ilmu dan teknik yang terus menerus:
intensitas cahaya yang berubah dengan jarak, tegangan yang bervariasi dari waktu ke
waktu, sebuah reaksi kimia tingkat yang tergantung pada temperatur, dll Analog-to-
Digital Konversi (ADC) dan Digital-to Analog-Konversi (DAC) adalah proses yang
memungkinkan komputer digital untuk berinteraksi dengan sinyal-sinyal sehari-hari.
Informasi digital berbeda dari rekan terus-menerus dalam dua hal penting: itu
sampel, dan terkuantisasi. Kedua membatasi berapa banyak informasi sinyal digital
dapat berisi. Bab ini adalah tentang manajemen informasi: memahami informasi apa
yang Anda butuhkan untuk mempertahankan, dan informasi apa yang Anda mampu
untuk kehilangan. Pada gilirannya, ini menentukan pemilihan frekuensi sampling, jumlah
bit, dan jenis penyaringan analog yang diperlukan untuk mengkonversi antara alam
analog dan digital.
Salah satu komponen penting dalam sistem akuisisi data adalah pengubah besaran
analog ke digital atau disebut juga ADC (Analog to Digital Converter).Pengubah ini akan
mengubah besaran - besaran analog menjadi bilangan-bilangan digital sehingga bisa diproses dengan
komputer. IC ADC 0804 dianggap dapat memenuhi kebutuhan dari rangkaian yang akan
dibuat. IC jenis ini bekerja secaracermat dengan menambahkan sedikit komponen sesuai
dengan spesifikasi yangharus diberikan dan dapat mengkonversikan secara cepat suatu
masukan tegangan.

Hal-hal yang juga perlu diperhatikan dalam penggunaan ADC ini adalahtegangan
maksimum yang dapat dikonversikan oleh ADC dari rangkaian pengkondisi sinyal,
resolusi, pewaktu eksternal ADC, tipe keluaran, ketepatan dan waktu konversinya. Beberapa
karakteristik penting ADC :
1. Waktu konversi
2. Resolusi
3. Ketidaklinieran
4. Akurasi
Contoh aplikasi ADC ini bisa kita lihat misalnya pada voltmeter digital, sampling
suara dengan komputer, sehingga suara dapat disimpan secara digital dalam disket, dan
kamera digital. Konsep pengubah analog ke digital ini adalah sampling (mengambil
contoh dalam waktu tertentu) kemudian mewakilinya dengan bilangan digital dengan
batas yang sudah diberikan.
Ada banyak cara yang dapat digunakan untuk mengubah sinyal analogmenjadi
sinyal digital yang nilainya proposional. Jenis ADC yang biasadigunakan dalam
perancangan adalah jenis successive approximation convertionatau pendekatan bertingkat
yang memiliki waktu konversi jauh lebih singkat dan tidak tergantung pada nilai masukan
analognya atau sinyal yang akan diubah.

III. Alat yang Digunakan


 Trainer Midicom 8085
 Set monitor
 Set keyboard
IV. Langkah Kerja
1. Buat flowchart dan program untuk membangkitkan gelombang sinus dengan
amplitudo 7 Vpp dan frekuensi 125 Hz (T = 8 ms), seperti berikut:

Tegangan (V)

+7

t (ms)

0 4 8

-7

Hal pertama yang harus dilakukan adalah menyimpan data titik-titik pembentuk
gelombang sinus di lokasi memori, dalam hal ini disimpan di D000. Kemudian data
tersebut di-outputkan ke port DAC satu persatu dengan delay tertentu yang dihitung
berdasarkan perioda atau frekuensi yang diinginkan.
∆˚ = 5˚
Dari 0˚ - 90˚ = 18 langkah
t = 6134 Tc
∆t = 6134 : 18 = 341 Tc
Dari 0˚ - 90˚ = 19 titik
Dari 95˚ - 175˚ = 17 titik
Total 36 titik

Data di Memori
ALAMAT DATA ALAMAT DATA
D000 8 D012 57
D001 0F D013 56
D002 17 D014 55
D003 1E D015 52
D004 25 D016 4F
D005 2C D017 4C
D006 25 D018 48
D007 38 D019 43
D008 3E D01A 3E
D009 43 D01B 38
D00A 48 D01C 32
D00B 4C D01D 2C
D00C 4F D01E 25
D00D 52 D01F 1E
D00E 55 D020 17
D00F 56 D021 0F
D010 57 D022 8
D011 58 D023 0

8 𝑚𝑠 Delay x = Delay y
= 2450 𝑇𝑐
0,326 𝜇𝑠 (39+x)36 = 12259 Tc
1 Tc  24540 Tc 1404 + 36x = 12259 Tc
21 Tc - x = 301,52 ≈ 301 Tc
24519 Tc
P/2  12259,5 Tc ≈ 12259 Tc

Delay 1R
14n + 32 = 301 Jika n = 18
n = 19,21 ≈ 19(10) = 13(16) Delay = 14 x 18 + 32 = 284 Tc
Delay = 14 x 19 + 32 = 298 Tc Kekurangan = 301 – 284 = 17 Tc
Kekurangan = 301 – 298 = 3 Tc Sisipan = LXI dan MVI

Data yang diisikan di alamat memori diperoleh dengan mengalikan sinus sudut titik
dengan tegangan maksimal yang dihasilkan berdasarkan amplitudo yang telah
ditentukan. Data tersebut adalah titik-titik pembentuk gelombang sinus setengah
periode pertama. Untuk setengah periode berikutnya didapat dari data sebelumnya
yang diinvertkan terlebih dahulu, sehingga akan dihasilkan setengah gelombang
yang berkebalikan dengan gelombang sebelumnya.
Flowchart

START DELAY X

A  A2 B  13
PORT 53  A
A  08
PORT 53  A BB-1
A  04
PORT 52  A
Y
Z=0
SP  FFFF T
D0
HL  D023 DE  0

AM RET
PORT 50  A

DELAY X

NOP
NOP
LL-1

Y
S=0

T
L  23

AM
AĀ
AA+1
PORT 50  A

DELAY Y

LL-1

Y
S=0

T
Program Utama

Address Hex. Code Mnemonics Keterangan


7000 3E A2 MVI A,A2
7002 D3 53 OUT 53
7004 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
7006 D3 53 OUT 53 ADC.
7008 3E 04 MVI A,04
700A D3 52 OUT 52
700C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
700F 21 23D0 LXI H,D023 gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
7012 7E MOV A,M ditunjukkan reg HL
7013 D3 50 OUT 50 Menampilkan data melalui port 50
7015 CD CDAB CALL ABCD Memanggil subrutin delay
7018 0 NOP
Instruksi sisipan agar delay seimbang
7019 0 NOP
701A 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
701B F2 1270 JP 7012
belum mencapai alamat negatif
701E 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
7020 7E MOV A,M ditunjukkan reg HL
7021 2F CMA Meng-invert-kan data pada reg A
7022 3C INR A Menambahkan data reg A dengan 1
7023 D3 50 OUT 50 Menampilkan data melalui port 50
7025 CD CDAB CALL ABCD Memanggil subrutin delay
7028 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
7029 F2 2070 JP 7020
belum mencapai alamat negatif
702C C3 0C70 JMP 700C Loop gelombang

Program Subrutin

Address Hex. Code Mnemonics Keterangan


Mengisi register B dengan nilai n yang sudah dihitung
ABCD 06 13 MVI B,13
sebelumnya
ABCF 5 DCR B Mengurangi register B
ABC0 C2 CFAB JNZ ABCF Menguji apakah B sudah mencapai 0 atau belum
ABC3 11 0000 MVI D,00
Sisipan instruksi untuk delay 17 Tc
ABC6 47 LXI D,0000
ABC7 C9 RET Kembali ke program utama
Hasil pada osiloskop

2. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini dengan amplitudo 4 Vp.

Tegangan (V)

t(mS)
0 4 8 12

Karena gelombang yang diinginkan berbeda amplitudonya, maka berbeda pula titik-
titik pembentuk gelombangnya. Oleh karena itu kita harus kembali mengisikan
memori dengan data yang sesuai. Program ini lebih pendek dari program sebelumnya
karena hanya akan menampilkan setengah gelombang saja kemudian diulang.

Data di Memori
ALAMAT DATA ALAMAT DATA
A000 8 A012 57
A001 0F A013 56
A002 17 A014 55
A003 1E A015 52
A004 25 A016 4F
A005 2C A017 4C
A006 32 A018 48
A007 38 A019 43
A008 3E A01A 3E
A009 43 A01B 38
A00A 48 A01C 32
A00B 4C A01D 2C
A00C 4F A01E 25
A00D 52 A01F 1E
A00E 55 A020 17
A00F 56 A021 0F
A010 57 A022 9
A011 58 A023 0

Flowchart
START

SP  FFFF
A  A2
PORT 53  A
A  08
PORT 53  A
A  04
PORT 52  A

HL  A023

AM
PORT 50  A

DELAY X

LL-1

Y
S=0

Program Utama
Address Hex. Code Mnemonics Keterangan
8000 3E A2 MVI A,A2
8002 D3 53 OUT 53
8004 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
8006 D3 53 OUT 53 ADC.
8008 3E 04 MVI A,04
800A D3 52 OUT 52
800C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
800F 21 23A0 LXI H,A023 gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
8012 7E MOV A,M ditunjukkan reg HL
8013 D3 50 OUT 50 Menampilkan data melalui port 50
8015 CD CDAB CALL ABCD Memanggil subrutin delay
8018 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
8019 F2 1280 JP 8012
belum mencapai alamat negatif
801C C3 0C80 JMP 800C Loop gelombang

Hasil pada osiloskop

3. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.

Tegangan (V)

2
t(mS)
0 4 8 12 16

Gelombang yang diinginkan berbeda amplitudo yang berarti kita harus mengisikan
data di alamat memori yang sesuai dengan amplitudo yang diinginkan. Namun
karena gelombang yang diinginkan cukup banyak dan semuanya berbeda amplitudo
maka akan banyak menghabiskan memori apabila kita memasukkan satu persatu
data yang dibutuhkan. Disini kita bisa menyiasatinya dengan cara memanipulasi data
gelombang sebelumnya yang memiliki amplitudo 4 Vp. Untuk menghasilkan
gelombang dengan 2 Vp, maka kita harus membagi 2 data gelombang yang ada
dengan perintah RAR (geser kanan). Sedangkan untuk menghasilkan 8 Vp dilakukan
dengan menggandakan data.

Flowchart

START X

SP  FFFF L  23
A  A2
PORT 53  A
A  08 AM
PORT 53  A AA+A
A  04 PORT 50  A
PORT 52  A
Y
DELAY X
HL  A023

LL-1
AM
A  A + 00
RAR Y
PORT 50  A S=0

T
DELAY X L  23

LL-1 AM
A  A + 00
RAR
Y AA+M
S=0
PORT 50  A
T

L  23 DELAY X

AM LL-1
PORT 50  A
Y
S=0
DELAY X
T

LL-1 Y

Y
S=0

X
Program Utama
Address Hex. Code Mnemonics Keterangan
9000 3E A2 MVI A,A2
9002 D3 53 OUT 53
9004 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
9006 D3 53 OUT 53 ADC.
9008 3E 04 MVI A,04
900A D3 52 OUT 52
900C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
900F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
9012 7E MOV A,M ditunjukkan reg HL
9013 C6 00 ADI 00 Menambahkan reg A dengan 0 untuk clear carry flag
9015 1F RAR Menggeser data ke kanan untuk membagi 2 data
9016 D3 50 OUT 50 Menampilkan data melalui port 50
9018 CD CDAB CALL ABCD Memanggil subrutin delay
901B 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
901C F2 1290 JP 9012 belum mencapai alamat negatif
901F 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
9021 7E MOV A,M
ditunjukkan reg HL
9022 D3 50 OUT 50 Menampilkan data melalui port 50
9024 CD CDAB CALL ABCD Memanggil subrutin delay
9027 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9028 F2 2190 JP 9021
belum mencapai alamat negatif
9029 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
902D 7E MOV A,M
ditunjukkan reg HL
902E 87 ADD A Menggandakan data di reg A
902F D3 50 OUT 50 Menampilkan data melalui port 50
9031 CD CDAB CALL ABCD Memanggil subrutin delay
9034 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9035 F2 2D90 JP 902D
belum mencapai alamat negatif
9038 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
903A 7E MOV A,M ditunjukkan reg HL
903B C6 00 ADI 00 Menambahkan reg A dengan 0 untuk clear carry flag
903D 1F RAR Menggeser data ke kanan untuk membagi 2 data
Menambahkan reg A dengan data M agar didapatkan
903E 86 ADD M data dengan amplitudo 6 V
903F D3 50 OUT 50 Menampilkan data melalui port 50
9041 CD CDAB CALL ABCD Memanggil subrutin delay
9044 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9045 F2 3A90 JP 903A
belum mencapai alamat negatif
9048 C3 0F90 JMP 900F Loop gelombang

Hasil pada osiloskop

4. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.

Tegangan (V)

2
t(mS)
0 4 8 12 16

Untuk menghasilkan gelombang seperti gambar diatas pada prinsipnya sama seperti
pada point sebelumnya. Perbedaannya pada bentuk gelombang yang terbalik kita
harus menyisipkan invert data register A pada masing-masing prosesnya. Namun
gelombang yang dihasilkan akan berada dibawah 0 V sehingga kita harus menaikkan
gelombang tersebut sebesar 8 V. Caranya data ditambahkan 65 yang merupakan
jumlah step dari 8 V yang ditambahkan dengan komplemen data.
Flowchart

START X

SP  FFFF L  23
A  A2
PORT 53  A
A  08 AM
PORT 53  A AA+A
A  04 AĀ
PORT 52  A A  A + 65
Y PORT 50  A

HL  A023
DELAY X

AM
A  A + 00 LL-1
RAR
AĀ
A  A + 65 Y
PORT 50  A S=0
T

DELAY X L  23

LL-1 AM
A  A + 00
RAR
Y AA+M
S=0 AĀ
A  A + 65
T
PORT 50  A
L  23
DELAY X
AM
AĀ
LL-1
A  A + 65
PORT 50  A
Y
S=0
DELAY X
T

Y
LL-1

Y
S=0

X
Program
Address Hex. Code Mnemonics Keterangan
9000 3E A2 MVI A,A2
9002 D3 53 OUT 53
9004 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
9006 D3 53 OUT 53 ADC.
9008 3E 04 MVI A,04
900A D3 52 OUT 52
900C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
900F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
9012 7E MOV A,M ditunjukkan reg HL
9013 C6 00 ADI 00 Menambahkan reg A dengan 0 untuk clear carry flag
9015 1F RAR Menggeser data ke kanan untuk membagi 2 data
9016 2F CMA Meng-invert-kan data pada reg A
Menambahkan data reg A dengan 65 agar gelombang
9017 C6 65 ADI 65
naik 8 V
9019 D3 50 OUT 50 Menampilkan data melalui port 50
901B CD CDAB CALL ABCD Memanggil subrutin delay
901E 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
901F F2 1290 JP 9012
belum mencapai alamat negatif
9022 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
9024 7E MOV A,M
ditunjukkan reg HL
9025 2F CMA Meng-invert-kan data pada reg A
Menambahkan data reg A dengan 65 agar gelombang
9026 C6 65 ADI 65 naik 8 V
9028 D3 50 OUT 50 Menampilkan data melalui port 50
902A CD CDAB CALL ABCD Memanggil subrutin delay
902D 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
902E F2 2590 JP 9024
belum mencapai alamat negatif
9031 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
9033 7E MOV A,M ditunjukkan reg HL
9034 87 ADD A Menggandakan data reg A
9035 2F CMA Meng-invert-kan data pada reg A
Menambahkan data reg A dengan 65 agar gelombang
9036 C6 65 ADI 65 naik 8 V
9038 D3 59 OUT 50 Menampilkan data melalui port 50
903A CD CDAB CALL ABCD Memanggil subrutin delay
903D 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
903E F2 3490 JP 9033
belum mencapai alamat negatif
9041 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
9043 7E MOV A,M ditunjukkan reg HL
9044 C6 00 ADI 00 Menambahkan reg A dengan 0 untuk clear carry flag
9046 1F RAR Menggeser data ke kanan untuk membagi 2 data
Menambahkan reg A dengan data M agar didapatkan
9047 86 ADD M data dengan amplitudo 6 V
9048 2F CMA Meng-invert-kan data pada reg A
Menambahkan data reg A dengan 65 agar gelombang
9049 C6 65 ADI 65
naik 8 V
904B D3 50 OUT 50 Menampilkan data melalui port 50
904D CD CDAB CALL ABCD Memanggil subrutin delay
9050 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9051 F2 4490 JP 9043 belum mencapai alamat negatif
9054 C3 0FD JMP 900F Loop gelombang

Hasil pada osiloskop

5. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.
Tegangan (V)

0 8 12 t(mS)
4

-4
Untuk menghasilkan gelombang modulasi dengan frekuensi tinggi seperti gambar
diatas, dibuat dengan cara mengisikan data di register A dengan 0 kemudian
dikurangi dengan data yang disimpan di memori agar gelombang bergerak ke bawah.
Proses ini dilakukan di setiap stepnya sebelum data di loop kembali ke step
berikutnya. Agar periode satu gelombangnya sesuai maka delay harus dibagi 2 dari
delay sebelumnya.
Delay x/2 = 301/2 Tc = 150,5 ≈ 150 Tc
Delay 1R
14n + 32 = 150
n = 8,42 ≈ 8(10) = 08(16)
Delay = 14 x 8 + 32 = 144 Tc
Kekurangan = 150 – 144 = 6 Tc
Sisipan = DCX
Flowchart

START DELAY X

SP  FFFF B  08
A  A2
PORT 53  A
A  08 BB-1
PORT 53  A
A  04
PORT 52  A Y
Z=0

T
HL  A023
DE  DE - 1

AM
PORT 50  A
RET

DELAY P

A0
AA–M
PORT 50  A

DELAY P

LL-1

Y
S=0

T
Program Utama
Address Hex. Code Mnemonics Keterangan
8500 3E A2 MVI A,A2
8502 D3 53 OUT 53
8504 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
8506 D3 53 OUT 53 ADC.
8508 3E 04 MVI A,04
850A D3 52 OUT 52
850C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
850F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
8512 7E MOV A,M ditunjukkan reg HL
8513 D3 50 OUT 50 Menampilkan data melalui port 50
8515 CD CDAB CALL ABCD Memanggil subrutin delay
8518 3E 00 MVI A,00 Mengisi data reg A dengan 00
Mengurangkan reg A dengan data di M untuk bagian
851A 96 SUB M
gelombang di bawah 0 V
851B D3 50 OUT 50 Menampilkan data melalui port 50
851D CD CDAB CALL ABCD Memanggil subrutin delay
8520 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
8521 F2 1285 JP 8512
belum mencapai alamat negatif
8524 C3 0F85 JMP 850F Loop gelombang

Program Subrutin

Address Hex. Code Mnemonics Keterangan


Mengisi register B dengan nilai n yang sudah dihitung
ABCD 06 08 MVI B,08 sebelumnya
ABCF 5 DCR B Mengurangi register B
ABC0 C2 CFAB JNZ ABCF Menguji apakah B sudah mencapai 0 atau belum
ABC3 1B DCX D Sisipan instruksi
ABC4 C9 RET Kembali ke program utama
Hasil pada osiloskop

6. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.

Tegangan (V)

t(mS)

0 4 8 12

Sama seperti pada point sebelumnya, namun pada program ini ada penambahan saat
gelombang berada pada 0 V. Register A diisikan 0 kemudian ditampilkan selama
delay yang ditentukan. Delay tersebut diulang sebanyak 72 kali agar periodenya
seimbang dengan gelombang yang dihasilkan.
Flowchart

START

SP  FFFF
A  A2
PORT 53  A
A  08
PORT 53  A
A  04
PORT 52  A

HL  A023

AM
PORT 50  A

DELAY P

A0
AA–M
PORT 50  A

DELAY P

LL-1

Y
S=0

T
A0
PORT 50  A

C  48

DELAY P

CC-1

Y
Z=0
T
Program
Address Hex. Code Mnemonics Keterangan
8500 3E A2 MVI A,A2
8502 D3 53 OUT 53
8504 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
8506 D3 53 OUT 53 ADC.
8508 3E 04 MVI A,04
850A D3 52 OUT 52
850C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
850F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
8512 7E MOV A,M ditunjukkan reg HL
8513 D3 50 OUT 50 Menampilkan data melalui port 50
8515 CD CDAB CALL ABCD Memanggil subrutin delay
8518 3E 00 MVI A,00 Mengisi data reg A dengan 00
Mengurangkan reg A dengan data di M untuk bagian
851A 96 SUB M
gelombang di bawah 0 V
851B D3 50 OUT 50 Menampilkan data melalui port 50
851D CD CDAB CALL ABCD Memanggil subrutin delay
8520 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
8521 F2 1285 JP 8512
belum mencapai alamat negatif
8524 3E 00 MVI A,00 Mengisi data reg A dengan 00
8526 D3 50 OUT 50 Menampilkan data melalui port 50
8528 0E 48 MVI C,48 Mengisi reg C dengan 48 sebagai loop delay
852A CD CDAB CALL ABCD Memanggil subrutin delay
852D 0D DCR C Mengurangkan reg C
852E C2 2A85 JNZ 852A Menguji apakah C sudah mencapai 0 atau belum
8531 C3 0F85 JMP 850F Loop gelombang

Hasil pada osiloskop


7. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di
bawah ini.
Tegangan (V)

t(mS)

0 4 8 12

Sama seperti pembuatan gelombang modulasi di point 5, perbedaannya hanya letak


gelombangnya. Data di register A ditambahkan dengan 32 untuk menghasilkan
gelombang naik sebesar 4 V dan dikurangkan dengan 32 untuk menghasilkan
gelobang turun sebesar 4 V di bawah 0 V.

Flowchart
START X

SP  FFFF L  23
A  A2
PORT 53  A
A  08 AM
PORT 53  A A  A - 32
A  04 PORT 50  A
PORT 52  A DELAY P
Y
HL  A023 A0
AA-M
A  A - 32
AM PORT 50  A
A  A + 32 DELAY P
PORT 50  A
DELAY P
LL-1

A0 Y
AA-M S=0
A  A + 32
PORT 50  A T
DELAY P
Y

LL-1

Y
S=0

X
Program
Address Hex. Code Mnemonics Keterangan
9500 3E A2 MVI A,A2
9502 D3 53 OUT 53
9504 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
9506 D3 53 OUT 53 ADC.
9508 3E 04 MVI A,04
950A D3 52 OUT 52
950C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
950F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
9512 7E MOV A,M ditunjukkan reg HL
Menambahkan data di reg A dengan 32 agar
9513 C6 32 ADI 32 gelombang naik 4 V
9515 D3 50 OUT 50 Menampilkan data melalui port 50
9517 CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
951A 3E 00 MVI A,00 kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
951C 96 SUB M gelombang di bawah 0 V
Menambahkan data di reg A dengan 32 agar
951D C6 32 ADI 32
gelombang naik 4 V
951F D3 50 OUT 50 Menampilkan data melalui port 50
9521 CD CDAB CALL ABCD Memanggil subrutin delay
9524 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9525 F2 1295 JP 9512
belum mencapai alamat negatif
9528 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
952A 7E MOV A,M
ditunjukkan reg HL
Mengurangkan data di reg A dengan 32 agar
952B D6 32 SUI 32
gelombang turun 4 V
952D D3 50 OUT 50 Menampilkan data melalui port 50
952F CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
9532 3E 00 MVI A,00
kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
9534 96 SUB M
gelombang di bawah 0 V
Mengurangkan data di reg A dengan 32 agar
9535 D6 32 SUI 32 gelombang turun 4 V
9537 D3 50 OUT 50 Menampilkan data melalui port 50
9539 CD CDAB CALL ABCD Memanggil subrutin delay
953C 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
953D F2 2A95 JP 952A belum mencapai alamat negatif
9540 C3 0F95 JMP 950F Loop gelombang

Hasil pada osiloskop

8. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.

Tegangan (V)

+4

270 t(mS)

0 90 180 360

-4

Program ini menggunakan penggabungan prinsip gelombang gelombang sinus dan


gelombang modulasi. Pada setengah periode gelombang pertama, data akan terus
naik turun dibatasi pada 0 V. Kemudian pada setengah periode ke-2 ada beberapa
cara untuk membuatnya, yaitu dengan menginvertkan data dan dengan
mengurangkan A yang berisi 0 dengan data tersebut.
Flowchart
START

SP  FFFF
A  A2
PORT 53  A
A  08
PORT 53  A
A  04
PORT 52  A

HL  A023

AM
PORT 50  A
DELAY X
A0
PORT 50  A
DELAY X
LL-1

Y
S=0

L  23

A0
AA–M
PORT 50  A
DELAY X
A0
PORT 50  A
DELAY X
LL-1

Y
S=0

Program
Address Hex. Code Mnemonics Keterangan
8200 3E A2 MVI A,A2
8202 D3 53 OUT 53
8204 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
8206 D3 53 OUT 53 ADC.
8208 3E 04 MVI A,04
820A D3 52 OUT 52
820C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
820F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
8212 7E MOV A,M ditunjukkan reg HL
8213 D3 50 OUT 50 Menampilkan data melalui port 50
8215 CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
8218 3E 00 MVI A,00 kembali ke 0 V
821A D3 50 OUT 50 Menampilkan data melalui port 50
821C CD CDAB CALL ABCD Memanggil subrutin delay
821F 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
8220 F2 1282 JP 8212
belum mencapai alamat negatif
8223 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi data reg A dengan 00 agar gelombang
8225 3E 00 MVI A,00 kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
8227 96 SUB M gelombang di bawah 0 V
8228 D3 50 OUT 50 Menampilkan data melalui port 50
822A CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
822D 3E 00 MVI A,00 kembali ke 0 V
822F D3 50 OUT 50 Menampilkan data melalui port 50
8231 CD CDAB CALL ABCD Memanggil subrutin delay
8234 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
8235 F2 2682 JP 8225
belum mencapai alamat negatif
8238 C3 0F82 JMP 820F Loop gelombang

Hasil pada osiloskop

9. Buat flowchart dan program untuk membangkitkan gelombang seperti gambar di


bawah ini.
t(mS)
0 4 8 12 16

Flowchart

START X

SP  FFFF A0
A  A2 AA–M
PORT 53  A PORT 50  A
A  08 DELAY P
PORT 53  A
A  04
PORT 52  A LL-1
Z

HL  A023 Y
S=0 Y

T
AM
A  A + 32 L  23
PORT 50  A
DELAY P
AM
A  A - 32
A0 PORT 50  A
AA-M DELAY P
A  A + 32
PORT 50  A
DELAY P A0
AA-M
A  A - 32
LL-1 PORT 50  A
DELAY P

Y
S=0
LL-1
T
L  23 Y
S=0
Y
T
AM
PORT 50  A Z
DELAY P

X
Program
Address Hex. Code Mnemonics Keterangan
9700 3E A2 MVI A,A2
9702 D3 53 OUT 53
9704 3E 08 MVI A,08 Mengalihkan port 50 dan 51 yang tadinya digunakan
untuk input saklar dan output LED menjadi DAC dan
9706 D3 53 OUT 53 ADC.
9708 3E 04 MVI A,04
970A D3 52 OUT 52
970C 31 FFFF LXI SP,FFFF Inisialisasi stack pointer
Mengisi reg HL dengan alamat akhir tempat data
970F 21 23A0 LXI H,A023
gelombang sinus yang akan ditampilkan
Mengisi reg A dengan data pada alamat yang
9712 7E MOV A,M ditunjukkan reg HL
Menambahkan data di reg A dengan 32 agar
9713 C6 32 ADI 32 gelombang naik 4 V
9715 D3 50 OUT 50 Menampilkan data melalui port 50
9717 CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
971A 3E 00 MVI A,00 kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
971C 96 SUB M gelombang di bawah 0 V
Menambahkan data di reg A dengan 32 agar
971D C6 32 ADI 32
gelombang naik 4 V
971F D3 50 OUT 50 Menampilkan data melalui port 50
9721 CD CDAB CALL ABCD Memanggil subrutin delay
9724 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9725 F2 1297 JP 9712
belum mencapai alamat negatif
9728 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
972A 7E MOV A,M
ditunjukkan reg HL
972B D3 50 OUT 50 Menampilkan data melalui port 50
972D CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
9730 3E 00 MVI A,00
kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
9732 3E 00 SUB M
gelombang di bawah 0 V
9733 D3 50 OUT 50 Menampilkan data melalui port 50
9735 CD CDAB CALL ABCD Memanggil subrutin delay
9738 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9739 F2 2A97 JP 972A belum mencapai alamat negatif
973C 2E 23 MVI L,23 Mengisi reg L dengan alamat akhir data
Mengisi reg A dengan data pada alamat yang
973E 7E MOV A,M ditunjukkan reg HL
Mengurangkan data di reg A dengan 32 agar
973F D6 32 SUI 32 gelombang turun 4 V
9741 D3 50 OUT 50 Menampilkan data melalui port 50
9743 CD CDAB CALL ABCD Memanggil subrutin delay
Mengisi data reg A dengan 00 agar gelombang
9746 3E 00 MVI A,00 kembali ke 0 V
Mengurangkan reg A dengan data di M untuk bagian
9748 96 SUB M
gelombang di bawah 0 V
Mengurangkan data di reg A dengan 32 agar
9749 D6 32 SUI 32
gelombang turun 4 V
974D CD CDAB CALL ABCD Memanggil subrutin delay
9750 2D DCR L Mengurangkan L untuk menunjuk ke data selanjutnya
Kembali ke proses pengisian data reg A, apabila L
9751 F2 3E97 JP 973E
belum mencapai alamat negatif
9754 C3 0F97 JMP 970F Loop gelombang

Hasil pada osiloskop


V. Kesimpulan
Kesimpulan yang dapat ditarik dari praktikum diatas adalah:
 Pada saat kita membuat program untuk menampilkan gelombang atau pulsa harus
selalu ada ke 6 instruksi awal, karena 6 instruksi awal itu berfungsi mengalih
fungsikan menjadi ADC atau DAC.
 Untuk membuat gelombang sinus, berbeda dengan gelombang kotak atau segitiga.
Kita harus mencari satu persatu titik yang membentuk gelombang sinus tersebut
kemudian disimpan pada suatu alamat memori tertentu. Apabila kita ingin
menampilkan gelombang tersebut, dilakukan dengan cara memanggil data yang
sudah kita simpan di memori tadi.
 Titik-titik gelombang sinus akan berbeda tergantung pada amplitudo gelombang.
Namun kita bisa memanipulasinya dengan cara menggandakan, mengurangi atau
menambahkan data untuk menghasilkan gelombang sinus yang berbeda
amplitudonya dalam satu kali tampil.
 Delay harus diperhatikan karena akan sangat berpengaruh terhadap frekuensi
gelombang yang akan ditampilkan.
 Untuk membuat gelombang modulasi, dilakukan dengan cara mengisi register A
dengan 0 atau mengurangi datanya pada setiap step sebelum melakukan loop ke
proses selanjutnya. Sehingga akan terbentuk gelombang yang terus naik turun
dengan frekuensi tinggi.

Anda mungkin juga menyukai