laporan praktikum mikroprosesor

19
1 LAPORAN PRAKTIKUM SISTEM MIKROPROSESOR Nama : Asep Syarif Hidayat NIM : 2405308004 MODUL I Program Latihan 1 1. ORG 0000H ; Program ditempatkan di alamat 0000h MOV P0,#10010011b ; led di P0 yaitu L3,L4,L6 dan L7 nyala JMP $ END Pada program Ini L3,L4,L6 dan L7 Menyala berarti disini Logik 1 menjadikan Led Menyala 2. ORG 0000H ; Program ditempatkan di alamat 0000h MOV SP,#10H ; register SP diset pada alamat 10h MOV A,#10010011b ; Isi accumulator dengan alamat 10010011 MOV 10H,A ; isi Stack pointer dg nilai yang ada di Accumulator yaitu 10010011 POP P0 ; ambil data yg ada di stack JMP $ Pointer END Pada program ini nyala led sama yaitu 10010011b 3 ORG 0000H ; Program ditempatkan di alamat 0000h POP P0 JMP $ END Pada program ini Led Nyala semua Perintah POP adalah perintah yang Berfungsi untuk mengambil data dari stack Pointer 4 REG_TUNDA1 EQU 30h REG_TUNDA2 EQU 31h ORG 0000H ; Program disimpan dialamat 0000h MOV P0,#10010011b ; P0 diisi dengan alamat 10010011 PUSH P0 ; Data di disimpan di P0 CALL DELAY ; panggil Sub rutin delay CALL DELAY CALL DELAY CALL DELAY MOV P0,#0FFh ; isi P0 dengan Nilai 0FFh CALL DELAY ; panggil subrutin delay CALL DELAY POP P0 ; ambil data dari P0 JMP $ ; ;SUBRUTIN DELAY 1/4 DETIK DELAY: MOV REG_TUNDA1,#250 TD: MOV REG_TUNDA2,#250 ULANG: NOP NOP DJNZ REG_TUNDA2,ULANG DJNZ REG_TUNDA1,TD RET END Pada saat led menyala pada logik 10010011 led menyala selama 1 detik dan ketika led mati atau pada logik 11111111b (0FFh) led matinya sekitar ½ detik. 5 REG_TUNDA1 EQU 30h REG_TUNDA2 EQU 31h ORG 0000H ; Program disimpan Di 0000h MOV P0,#10010011b ; P0 diisi dengan 10010011b PUSH P0 ; simpan data di P0 CALL DELAY ; Panggil Sub rutin delay CALL DELAY CALL DELAY CALL DELAY

Upload: assyarifhasepsyarifhidayat

Post on 19-Jun-2015

622 views

Category:

Documents


2 download

DESCRIPTION

LAPORAN PRAKTIKUM MIKROPROSESOR adalah sebuah resume yang berisi laporan-laporan yang berhubungan dengan mata kuliah mikroprosessor atau mikrokontroller

TRANSCRIPT

Page 1: LAPORAN PRAKTIKUM MIKROPROSESOR

1

LAPORAN PRAKTIKUM SISTEM MIKROPROSESOR Nama : Asep Syarif Hidayat NIM : 2405308004

MODUL I

Program Latihan 1

1. ORG 0000H ; Program ditempatkan di alamat 0000h

MOV P0,#10010011b ; led di P0 yaitu L3,L4,L6 dan L7 nyala

JMP $

END

Pada program Ini L3,L4,L6 dan L7 Menyala berarti disini Logik 1 menjadikan Led Menyala 2. ORG 0000H ; Program ditempatkan di alamat 0000h

MOV SP,#10H ; register SP diset pada alamat 10h

MOV A,#10010011b ; Isi accumulator dengan alamat 10010011

MOV 10H,A ; isi Stack pointer dg nilai yang ada di

Accumulator yaitu 10010011

POP P0 ; ambil data yg ada di stack

JMP $ Pointer

END

Pada program ini nyala led sama yaitu 10010011b 3 ORG 0000H ; Program ditempatkan di alamat 0000h

POP P0

JMP $

END

Pada program ini Led Nyala semua Perintah POP adalah perintah yang Berfungsi untuk mengambil data dari stack Pointer

4 REG_TUNDA1 EQU 30h

REG_TUNDA2 EQU 31h

ORG 0000H ; Program disimpan dialamat 0000h

MOV P0,#10010011b ; P0 diisi dengan alamat 10010011

PUSH P0 ; Data di disimpan di P0

CALL DELAY ; panggil Sub rutin delay

CALL DELAY

CALL DELAY

CALL DELAY

MOV P0,#0FFh ; isi P0 dengan Nilai 0FFh

CALL DELAY ; panggil subrutin delay

CALL DELAY

POP P0 ; ambil data dari P0

JMP $

;

;SUBRUTIN DELAY 1/4 DETIK

DELAY: MOV REG_TUNDA1,#250

TD: MOV REG_TUNDA2,#250

ULANG: NOP

NOP

DJNZ REG_TUNDA2,ULANG

DJNZ REG_TUNDA1,TD

RET

END

Pada saat led menyala pada logik 10010011 led menyala selama 1 detik dan ketika led mati atau pada logik 11111111b (0FFh) led matinya sekitar ½ detik.

5 REG_TUNDA1 EQU 30h

REG_TUNDA2 EQU 31h

ORG 0000H ; Program disimpan Di 0000h

MOV P0,#10010011b ; P0 diisi dengan 10010011b

PUSH P0 ; simpan data di P0

CALL DELAY ; Panggil Sub rutin delay

CALL DELAY

CALL DELAY

CALL DELAY

Page 2: LAPORAN PRAKTIKUM MIKROPROSESOR

2

MOV P0,#0FFh ; isi P0 dengan 0FFh

CALL DELAY ; Panggil; subrutin delay

CALL DELAY

MOV P0,#7FH ; isi P0 dengan 07Fh

POP P0 ; Ambil data dari P0

JMP $

;

;SUBRUTIN DELAY 1/4 DETIK

DELAY: MOV REG_TUNDA1,#250

TD: MOV REG_TUNDA2,#250

ULANG: NOP

NOP

DJNZ REG_TUNDA2,ULANG

DJNZ REG_TUNDA1,TD

RET

END

Pada program 4 dan program 5 Nyala led sama Perintah POP berfungsi untuk mengambil data dari register Perintah PUSH Berfungsi untuk menyimpan data ke register

6 REG_TUNDA1 EQU 30h

REG_TUNDA2 EQU 31h

ORG 0000H ; Program disimpan Di 0000h

MOV A,#7AH ; isi Accumulator dengan Alamat 7Ah

(01111010) L8,L3 dan L1 Nyala

MOV P0,A ; isi P0 dg nilai Yg ada di Accumulator

MOV B,#05H ; isi Register B dg Nilai 05h

(00000101b)L8,L7,L6,L5,L4 dan L2 nyala

PUSH P0 ; simpan data di P0

CALL DELAY ; Panggil Subrutin Delay

CALL DELAY

CALL DELAY

XCH A,B ; tukar Data di Accumulator dengan data

Yang ada Di Register B

MOV P0,A ; tampilkan nilai Accumulator yang Baru

Di P0

JMP $

;

;SUBRUTIN DELAY 1/4 DETIK

DELAY: MOV REG_TUNDA1,#250

TD: MOV REG_TUNDA2,#250

ULANG: NOP

NOP

DJNZ REG_TUNDA2,ULANG

DJNZ REG_TUNDA1,TD

RET

END

Nyala led yang pertama adalah pada logic 01111010 (07Ah) lalu ketika register B diisi dengan logic 000000101(05h) setelah ada perintah XCH A,B maka Nilai di Accumulator di ganti dengan nilai yang ada di register B.

Page 3: LAPORAN PRAKTIKUM MIKROPROSESOR

3

MODUL II

1 ORG 00H ; program ditempatkan dialamat 00h

LAT1: MOV P0,#0FH ; isi P0 dg nilai 0Fh (00001111b)

; L5, L6, L7 dan L8 nyala led lainya mati

JMP $

end

ORG 00H ; program ditempatkan dialamat 00h

LAT1.2: MOV P0,#0F0H ; isi P0 dg nilai 0f0h (11110000b)

; L1,L2,L3 dan L4 nyala nyala led lainya mati

JMP $,

end

ORG 00H ; program ditempatkan dialamat 00h

LAT1.3: MOV P0,#21H ; isi P0 dg nilai 21h (000100001b)

; L2, L3, L4, L5 L7 dan L8 nyala

JMP $

End

Pada listing program diatas nyala led terjadi karena led diberi ”logik 0” Rangkaian hardware display lednya ( dg konfigurasi common Anode) ditunjukan oleh gambar berikut ini :

2 ORG 00H ; program ditempatkan dialamat 00h

LAT2: MOV P0,P2 ; isi P0 dengan nilai dari P2

JMP LAT2 ; kembali ke label lat2

end

Ketika Dip Sw1, Sw 2 dan 3 di on-kan maka L1, L2, L3 nyala Ketika Dip Sw6 dan Sw 8 di on-kan maka L6 dan L8 Nyala Ketika Dip Sw1, Sw 2 dan Sw 5 dan Sw 7 di on-kan maka L1. L2 dan L5, L7 Nyala

Display yang terjadi tergantung dari pemberian nilai logik pada Port 2 (dg meng On-kan Switch)

Page 4: LAPORAN PRAKTIKUM MIKROPROSESOR

4

Gambar rangkaian Dip Switch :

3 ORG 00H ; program ditempatkan dialamat 00h

LAT3: MOV A,P2 ; isi accumulator dg nilai yg ada di P2

SWAP A ; tukar nibel accumulator

MOV P0,A ; isi P0 dg nilai Accumulator

JMP LAT3 ; lompat ke label LAT3

end

ketika dip switch 1, 2, dan 3 di on-kan led yang menyala adalah L5, L6, dan L7 ketika dip switch 6 dan 8 di on-kan led yang menyala adalah L2 dan L4

ketika dip switch 1, 2, 5 dan 7 di on-kan led yang menyala adalah L1, L3, L5 dan L6 Posisi penekanan Dip Switch sama tetapi nyala Led berbeda karena pada Program diatasnya tidak memakai perintah Swap. Perintah Swap A adalah perintah untuk menukar nibel dari accumulator

4 ORG 00H ; program ditempatkan dialamat 00h LAT4: MOV A,P2 ; isi accumulator dg nilai yg ada di P2

CPL A ; Complementkan (NOT) nilai Accumulator

MOV P0,A ; isi P0 dg nilai Accumulator

JMP LAT4 ; lompat ke label LAT4

End

Ketika dip switch 1, 2, dan 3 di on-kan led yang menyala adalah L4,L5, L6, L7, L8

(00000111b) Ketika dip switch 6 dan 8 di on-kan led yang menyala adalah L1, L2, L3, L4 ,L5 , L7 (10100000b) Ketika dip switch 1, 2, 5 dan 7 di on-kan led yang menyala adalah L3, L4, L6 dan L8

(01010011b) Posisi penekanan Dip Switch sama tetapi nyala Led berbeda karena pada Program diatasnya tidak memakai perintah CPL. Perintah CPL A adalah perintah untuk Menotkan(sbg Inverter) accumulator

5 ORG 00H ; program ditempatkan dialamat 00h

LAT5: MOV A,P2 ; isi accumulator dg nilai yg ada di P2

CLR A ; nolkan nilai Accumulator

MOV P0,A ; isi P0 dg nilai Accumulator

JMP LAT5 ; lompat ke label LAT5

end

Ketika dip switch 1, 2, dan 3 di on-kan led yang menyala adalah semua led (00000000b) Ketika dip switch 6 dan 8 di on-kan led yang menyala adalah semua led (00000000b) Ketika dip switch 1, 2, 5 dan 7 di on-kan led yang menyala adalah semua led (00000000b) Posisi penekanan Dip Switch sama tetapi nyala Led berbeda karena pada Program diatasnya tidak memakai perintah CLR. Perintah CLR A adalah perintah untuk Membersihkan nilai Accumulator

6 ORG 00H ; program ditempatkan dialamat 00h

LAT6: MOV A,P2 ; isi accumulator dg nilai yg ada di P2

Page 5: LAPORAN PRAKTIKUM MIKROPROSESOR

5

RL A ; Geser ke kiri nilai yang ada di accumulator

MOV P0,A ; isi P0 dg nilai accumulator

JMP LAT6 ; lompat ke label LAT6

end

Ketika dip switch 1, 2, dan 3 di on-kan led yang menyala adalah L2,L3, L4 (11110001) Ketika dip switch 6 dan 8 di on-kan led yang menyala adalah L1, L7 (10111110)

Ketika dip switch 1, 2, 5 dan 7 di on-kan led yang menyala adalah L2, L3, l6, L8 (01011001) Posisi penekanan Dip Switch sama tetapi nyala Led berbeda karena pada Program diatasnya Tidak memakai perintah RL (Rotate Left). Perintah RL A adalah perintah untuk Memutar ke kiri isi accumulator

7 ORG 00H ; program ditempatkan dialamat 00h

LAT7: MOV A,P2 ; isi accumulator dg nilai yg ada di P2

RR A ; Geser ke kiri nilai yang ada di accumulator

MOV P0,A ; isi P0 dg nilai accumulator

JMP LAT7 ; lompat ke label LAT7

end

Ketika dip switch 1, 2, dan 3 di on-kan led yang menyala adalah L1,L2, L8 (01111100) Ketika dip switch 6 dan 8 di on-kan led yang menyala adalah L5, L7 (10101111)

Ketika dip switch 1, 2, 5 dan 7 di on-kan led yang menyala adalah L1, L4, L6 dan L8 (01010110) Posisi penekanan Dip Switch sama tetapi nyala Led berbeda karena pada Program diatasnya Tidak memakai perintah RR (Rotate Right). Perintah RR A adalah perintah untuk Memutar ke kanan isi accumulator

Page 6: LAPORAN PRAKTIKUM MIKROPROSESOR

6

MODUL III

LATIHAN 1 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#0FFH : isi P0 dengan nilai FFh

CLR L1 : bersihkan L1

CLR L5 : bersihkan L5

JMP $ : lompat

END

Pada program diatas L1 dan L5 Nyala yang lainya padam LATIHAN 2 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#00H ; isi P0 dengan nilai 00h

SETB L1 ; beri L1 logic 1

SETB L5 ; beri l5 logic 1

JMP $ ; lompat

END

Pada Program Diatas L1 Dan L5 Padam yang lainnya nyala LATIHAN 3 ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#10101010B ; isi P0 dengan nilai 10101010b

JMP $ ; lompat

END

Pada Program Diatas L1,L3,L5,L7 nyala yang lainya padam L1 EQU 80H

L2 EQU 81H

L3 EQU 82H

L4 EQU 83H

L5 EQU 84H

L6 EQU 85H

L7 EQU 86H

L8 EQU 87H

ORG 00H

STAR: MOV P0,#00H

SETB L2

SETB L4

SETB L6

SETB L8

JMP $

END

LATIHAN 4 ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#00100100B ; isi p0 dengan nilai 00100100b

JMP $ ; lompat

END

Pada Program Diatas L3,L6 padam yang lainya nyala

Page 7: LAPORAN PRAKTIKUM MIKROPROSESOR

7

L1 EQU 80H

L2 EQU 81H

L3 EQU 82H

L4 EQU 83H

L5 EQU 84H

L6 EQU 85H

L7 EQU 86H

L8 EQU 87H

ORG 00H

STAR: MOV P0,#00H

SETB L3

SETB L6

JMP $

END

LATIHAN 5 ORG 00H ; Program ditempatkan di alamat 0000h

LAT5: MOV P0,P2 ; isi P0 dengan nilai dari p2

JMP LAT5 ; lompat

END

Saat Sw1 On L1 Nyala yang lainnya Padam Saat Sw6 On L6 Nyala yang lainnya Padam

LATIHAN 6 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

;dip switcth tersambung dg register P2 (bit addresible) dan alamat setiap bitnya

adalah

SW1 EQU A0H ; SW1 = alamat A0h (P2.0)

SW2 EQU A1H ; SW2 = alamat A1h (P2.1)

SW3 EQU A2H ; SW3 = alamat A2h (P2.2)

SW4 EQU A3H ; SW4 = alamat A3h (P2.3)

SW5 EQU A4H ; SW5 = alamat A4h (P2.4)

SW6 EQU A5H ; SW6 = alamat A5h (P2.5)

SW7 EQU A6H ; SW7 = alamat A6h (P2.6)

SW8 EQU A7H ; SW8 = alamat A7h (P2.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

STAR: MOV P0,#0FFH ; isi P0 dengan nilai FFh

JNB SW1,L1NYALA ; apakah SW1 ditekan/tidak jika ya lompat ke

; L1 Nyala

SETB L1 ; beri logic 1 pada L1

JMP STAR ; lompat ke label star

L1NYALA: CLR L1 ; bersihkan L1

JMP STAR ; lompat ke label star

END

Saat Sw1 On L1 Nyala yang lainnya Padam LATIHAN 7 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

;dip switcth tersambung dg register P2 (bit addresible) dan alamat setiap bitnya

adalah

SW1 EQU A0H ; SW1 = alamat A0h (P2.0)

SW2 EQU A1H ; SW2 = alamat A1h (P2.1)

Page 8: LAPORAN PRAKTIKUM MIKROPROSESOR

8

SW3 EQU A2H ; SW3 = alamat A2h (P2.2)

SW4 EQU A3H ; SW4 = alamat A3h (P2.3)

SW5 EQU A4H ; SW5 = alamat A4h (P2.4)

SW6 EQU A5H ; SW6 = alamat A5h (P2.5)

SW7 EQU A6H ; SW7 = alamat A6h (P2.6)

SW8 EQU A7H ; SW8 = alamat A7h (P2.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

STAR: MOV P0,#0FFH

JB SW6,L6PADAM ; Apakah SW6 ditekan/tidak jika tidak lompat ke

; L6 padam

CLR L6 ; bersihkan L6

JMP STAR ; lompat ke label star

L6PADAM: SETB L6 ; beri logic 1 L6

JMP STAR ; lompat ke label star

END

Saat Sw6 On L6 Nyala

LATIHAN 8.1 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

SW1 EQU A0H ; SW1 = alamat A0h (P2.0)

SW2 EQU A1H ; SW2 = alamat A1h (P2.1)

SW3 EQU A2H ; SW3 = alamat A2h (P2.2)

SW4 EQU A3H ; SW4 = alamat A3h (P2.3)

SW5 EQU A4H ; SW5 = alamat A4h (P2.4)

SW6 EQU A5H ; SW6 = alamat A5h (P2.5)

SW7 EQU A6H ; SW7 = alamat A6h (P2.6)

SW8 EQU A7H ; SW8 = alamat A7h (P2.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#0FFH ; isi P0 dengan nilai FFh

COBA1: JNB SW8,L8NYALA ; apakah SW8 ditekan/tidak jika ya lompat ke

; L8 Nyala

SETB L8 ; Beri logic 1 pada L8

JMP COBA2 ; lompat ke label coba2

L8NYALA: CLR L8 ; bersihkan L8

COBA2: JNB SW1,L1NYALA ; apakah SW1 ditekan/tidak jika ya lompat ke

; L1 Nyala

SETB L1 ; Bersihkan L1

JMP COBA1 ; Lompat Ke label Coba1

L1NYALA: CLR L1 ; Bersihkan L1

JMP COBA1 ; Lompat Ke label Coba1

END

Pada program diatas ketika SW1 dan SW8 On maka L1 dan L8 nyala yang lainnya padam L1 EQU 80H

L2 EQU 81H

L3 EQU 82H

L4 EQU 83H

L5 EQU 84H

L6 EQU 85H

L7 EQU 86H

L8 EQU 87H

SW1 EQU A0H

SW2 EQU A1H

SW3 EQU A2H

SW4 EQU A3H

SW5 EQU A4H

SW6 EQU A5H

SW7 EQU A6H

SW8 EQU A7H

ORG 00H

START: MOV P0,#0FFH

CEK1: JNB SW8,L8NYALA

SETB L8

Page 9: LAPORAN PRAKTIKUM MIKROPROSESOR

9

JMP CEK2

L8NYALA: CLR L8

CEK2: JNB SW1,L1NYALA

SETB L1

JMP CEK1

L1NYALA: CLR L1

JMP CEK1

END

LATIHAN 8.2 L1 EQU 80h ; L1 = alamat 80h (P0.0)

L2 EQU 81h ; L2 = alamat 81h (P0.1)

L3 EQU 82h ; L3 = alamat 82h (P0.2)

L4 EQU 83h ; L4 = alamat 80h (P0.3)

L5 EQU 84h ; L5 = alamat 80h (P0.4)

L6 EQU 85h ; L6 = alamat 80h (P0.5)

L7 EQU 86h ; L7 = alamat 80h (P0.6)

L8 EQU 87h ; L8 = alamat 80h (P0.7)

;

SW1 EQU A0H ; SW1 = alamat A0h (P2.0)

SW2 EQU A1H ; SW2 = alamat A1h (P2.1)

SW3 EQU A2H ; SW3 = alamat A2h (P2.2)

SW4 EQU A3H ; SW4 = alamat A3h (P2.3)

SW5 EQU A4H ; SW5 = alamat A4h (P2.4)

SW6 EQU A5H ; SW6 = alamat A5h (P2.5)

SW7 EQU A6H ; SW7 = alamat A6h (P2.6)

SW8 EQU A7H ; SW8 = alamat A7h (P2.7)

;

ORG 00H ; Program ditempatkan di alamat 0000h

MULAI: MOV P0,#0FFH ; isi P0 dengan nilai FFh

COBA1: JNB SW1,LGANJILNYALA ; apakah SW1 ditekan/tidak jika ya lompat ke

; LganjilNyala

SETB L1 ; beri logic 1 pada L1

SETB L3 ; Beri Logic 1 pada L3

SETB L5 ; Beri Logic 1 pada L5

SETB L7 ; Beri Logic 1 pada L7

JMP COBA2

LGANJILNYALA:

CLR L1 ; Bersihkan L1

CLR L3 ; bersihkan L3

CLR L5 ; Bersihkan L5

CLR L7 ; Bersihkan L7

COBA2: JNB SW2,LGENAPNYALA ; apakah SW8 ditekan/tidak jika ya lompat ke

; L8 Nyala

SETB L2 ; beri logic 1 pada L2

SETB L4 ; Beri Logic 1 pada L4

SETB L6 ; Beri Logic 1 pada L6

SETB L8 ; Beri Logic 1 pada L8

JMP COBA1 ; lompat ke Label Coba1

LGENAPNYALA:CLR L2 ; Bersihkan L2

CLR L4 ; bersihkan L4

CLR L6 ; Bersihkan L6

CLR L8 ; Bersihkan L8

JMP COBA1 ; lompat ke Label Coba1

END

Pada program diatas ketika SW1 on maka Led dengan posisi ganjil menyala Pada program diatas ketika SW2 on maka Led dengan posisi genap menyala L1 EQU 80H

L2 EQU 81H

L3 EQU 82H

L4 EQU 83H

L5 EQU 84H

L6 EQU 85H

L7 EQU 86H

L8 EQU 87H

SW1 EQU A0H

SW2 EQU A1H

SW3 EQU A2H

SW4 EQU A3H

SW5 EQU A4H

SW6 EQU A5H

Page 10: LAPORAN PRAKTIKUM MIKROPROSESOR

10

SW7 EQU A6H

SW8 EQU A7H

ORG 00H

START: MOV P0,#0FFH

CEK1: JNB SW2,L8NYALA

SETB L8

SETB L6

SETB L4

SETB L2

JMP CEK2

L8NYALA: CLR L8

CLR L6

CLR L4

CLR L2

CEK2: JNB SW1,L1NYALA

SETB L1

SETB L3

SETB L5

SETB L7

JMP CEK1

L1NYALA: CLR L1

CLR L3

CLR L5

CLR L7

JMP CEK1

END

Page 11: LAPORAN PRAKTIKUM MIKROPROSESOR

11

MODUL IV

LATIHAN 1

1. Org 00h ; program ditempatkan dialamat 00h

Lat1.1:MOV p0,#0Fh ; Isi P0 dengan nilai 0Fh

JMP $ ; Lompat ditempat

END

2.

Org 00h ; program ditempatkan dialamat 00h

Lat1.2:MOV p0,#0F0h ; Isi P0 dengan nilai 0F0h

JMP $ ; Lompat ditempat

END

; Pada Program lat1.1 led yang menyala adalah L5-L8 yang lainnya padam

; Pada Program lat1.2 led yang menyala adalah L1-L4 yang lainnya padam

LATIHAN 2 Org 00h ; program ditempatkan dialamat 00h

lat2: mov p0,#0Fh ; Isi P0 dengan nilai 0Fh

lat21: mov p0,#0F0h ; isi P0 Dengan nilai 0F0h

lat22: mov p0,#0AAh ; isi P0 dengan nilai 0AAh

jmp lat2 ; lompat ke label lat2

end

pada program diatas yang terdisplay Adalah led nyala semua karena laju mikro sangat cepat sehingga

;yang terjadi hanya terdisplay adalah nyalanya semua Led padahal yang sebenarnya uP mengerjakan perintah dari tiga label program

LATIHAN 3 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

ORG 00H ; simpan Program di alamat 00h

LAT3: MOV P0,#0FH ; Isi P0 dengan nilai 0Fh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

ULANG: NOP ; No Operation

DJNZ REG_TUNDA1,ULANG ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi ulang

LAT31: MOV P0,#0F0H ; isi P0 Dengan nilai 0F0h

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

ULANG1: NOP ; No Operation

DJNZ REG_TUNDA1,ULANG1 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi

ulang1

LAT32: MOV P0,#0AAH ; isi P0 dengan nilai 0AAh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

ULANG2 NOP ; No Operation

DJNZ REG_TUNDA1,ULANG2 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi

ulang2

JMP LAT3 ; lompat ke label lat3

END

Display Yang terlihat pada program diatas adalah 1 display yaitu led nyala semua ini terjadi karena subrutin delay sangat cepat

; LATIHAN 4 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

ORG 00H ; simpan Program di alamat 00h

LAT3: MOV P0,#0Fh ; Isi P0 dengan nilai 0Fh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi ulang

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

LAT31:MOV P0,#0F0h ; Isi P0 dengan nilai 0F0h

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD1: MOV REG_TUNDA2,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

ULANG1:NOP ; No Operation

NOP ; No Operation

Page 12: LAPORAN PRAKTIKUM MIKROPROSESOR

12

DJNZ REG_TUNDA2,ULANG1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang1

DJNZ REG_TUNDA1,TD1 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD1

LAT32:MOV P0,#0AAh ; Isi P0 dengan nilai 0AAh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD2: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG1:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG2 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang2

DJNZ REG_TUNDA1,TD2 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD2

JMP LAT3 ; lompat ke label lat3

END

Pada program diatas yang terlihat adalah 3 display bedanya dengan latihan II dan III diatas adalah lamanya delay pada program ini delay agak lama jika dibandingkan dengan kedua program sebelumnya

LATIHAN 5

REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

ORG 00H ; simpan Program di alamat 00h

LAT3: MOV P0,#0FEh ; Isi P0 dengan nilai 0FEh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi ulang

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

LAT31:MOV P0,#0FDh ; Isi P0 dengan nilai 0FDh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD1: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG1:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang1

DJNZ REG_TUNDA1,TD1 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD1

LAT32:MOV P0,#0FBh ; Isi P0 dengan nilai 0FBh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD2: MOV REG_TUNDA2,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

ULANG1:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG2 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang2

DJNZ REG_TUNDA1,TD2 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD2

LAT33:MOV P0,#0F7h ; Isi P0 dengan nilai 0F7h

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD3: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG3:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG3 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang3

DJNZ REG_TUNDA1,TD3 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD3

LAT34:MOV P0,#0EFh ; Isi P0 dengan nilai 0EFh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD4: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG4:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG4 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang4

DJNZ REG_TUNDA1,TD4 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD4

LAT35:MOV P0,#0DFh ; Isi P0 dengan nilai 0DFh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD5: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG5:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG5 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang5

DJNZ REG_TUNDA1,TD5 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD5

LAT36:MOV P0,#0BFh ; Isi P0 dengan nilai 0BFh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD6: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG6:NOP ; No Operation

NOP ; No Operation

Page 13: LAPORAN PRAKTIKUM MIKROPROSESOR

13

DJNZ REG_TUNDA2,ULANG6 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang6

DJNZ REG_TUNDA1,TD6 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD6

LAT37:MOV P0,#07Fh ; Isi P0 dengan nilai 07Fh

MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD7: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG7:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG7 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi

ulang7

DJNZ REG_TUNDA1,TD7 ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD7

JMP LAT3

END

Pada program diatas led menyala berjalan dari L1 ke L8 dan kembali lagi ke L1 begitu seterusnya

LATIHAN 6 Perintah jump adalah perintah yang kita gunakan pada suatu rutin untuk lompat ke alur program lain

misalnya dari akhir program ke awal program atau dari tengah program ke akhir program.

LATIHAN 7 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

ORG 00H ; simpan Program di alamat 00h

LAT3: MOV P0,#0Fh ; isi P0 dengan nilai 0Fh

CALL DELAY ; panggil Subrutin Delay

LAT31: MOV P0,#0F0h ; isi P0 dengan nilai 0F0h

CALL DELAY ; Panggil Subrutin Delay

LAT32: MOV P0,#0AAh ; isi P0 dengan nilai 0AAh

CALL DELAY ; Panggil Subrutin Delay

JMP LAT3 ; Lompat ke label Lat3

;---------------------------------------------------------------------------------

-

; Sub rutin Delay

;---------------------------------------------------------------------------------

-

DELAY:MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi ulang

DJNZ REG_TUNDA1,TD ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

LATIHAN 8 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

ORG 00H ; simpan Program di alamat 00h

LAT8: MOV P0,#0FEh ; isi P0 dengan nilai 0FEh

CALL DELAY ; Panggil Subrutin Delay

LAT81: MOV P0,#0FDh ; isi P0 dengan nilai 0FDh

CALL DELAY ; Panggil Subrutin Delay

LAT82: MOV P0,#0FBh ; isi P0 dengan nilai 0FBh

CALL DELAY ; Panggil Subrutin Delay

LAT83: MOV P0,#0F7h ; isi P0 dengan nilai 0F7h

CALL DELAY ; Panggil Subrutin Delay

LAT84: MOV P0,#0EFh ; isi P0 dengan nilai 0EFh

CALL DELAY ; Panggil Subrutin Delay

LAT85: MOV P0,#0DFh ; isi P0 dengan nilai 0DFh

CALL DELAY ; Panggil Subrutin Delay

LAT86: MOV P0,#0BFh ; isi P0 dengan nilai 0BFh

CALL DELAY ; Panggil Subrutin Delay

LAT87: MOV P0,#07Fh ; isi P0 dengan nilai 07Fh

CALL DELAY ; Panggil Subrutin Delay

JMP LAT8

;---------------------------------------------------------------------------------

-

; Sub rutin Delay

Page 14: LAPORAN PRAKTIKUM MIKROPROSESOR

14

;---------------------------------------------------------------------------------

-

DELAY:MOV REG_TUNDA1,#250 ; isi REG_TUNDA1 Dengan 250 (250x ulang)

TD: MOV REG_TUNDA2,#250 ; isi REG_TUNDA2 Dengan 250 (250x ulang)

ULANG:NOP ; No Operation

NOP ; No Operation

DJNZ REG_TUNDA2,ULANG ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi ulang

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Program diatas disederhanakan dari program latihan 5 yaitu dengan membuat subrutin delay.

REG_TUNDA1 EQU 30H

REG_TUNDA2 EQU 31H

ORG 00H

LAT8: MOV P0,#3FH

CALL DELAY

;

LAT81: MOV P0,#0CFH

CALL DELAY

;

LAT82: MOV P0,#0F3H

CALL DELAY

;

LAT83: MOV P0,#0FCH

CALL DELAY

JMP LAT8

;

;Sub_Rutinewaktu tunda 1/4 detik

;----------------------------------

DELAY: MOV REG_TUNDA1,#250

TD: MOV REG_TUNDA2,#250

ULANG: NOP

NOP

DJNZ REG_TUNDA2,ULANG

DJNZ REG_TUNDA1,TD

RET

;

END

LATIHAN 9 REG_TUNDA1 EQU 30H

REG_TUNDA2 EQU 31H

ORG 00H

LAT9: MOV P0,#81H

CALL DELAY

;

LAT91: MOV P0,#3CH

CALL DELAY

;

LAT92: MOV P0,#0C3H

CALL DELAY

;

LAT93: MOV P0,#00H

CALL DELAY

JMP LAT9

;

;Sub_Rutinewaktu tunda 1/4 detik

;----------------------------------

DELAY: MOV REG_TUNDA1,#250

TD: MOV REG_TUNDA2,#250

ULANG: NOP

NOP

DJNZ REG_TUNDA2,ULANG

DJNZ REG_TUNDA1,TD

RET

;

END

Page 15: LAPORAN PRAKTIKUM MIKROPROSESOR

15

MODUL V

1. ORG 00H ; program ditempatkan dialamat 00h

MOV A,#0FH ; Isi P0 dengan nilai 0Fh

MOV P0,A ; isi p0 dengan nilai yang ada di akumulator

JMP $ ; Lompat

END ; Pada Program Diatas Led yang menyala adalah L5-L8 yang lainnya padam

2. ORG 00H ; Program ditempatkan dialamat 00h

MOV A,#0FH ; Isi P0 dengan nilai 0Fh

CPL A ; Complement Kan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari Acumulator

JMP $ ; Lompat

END ;

Pada Program Diatas Led yang menyala adalah L1 s/dL4 yang lainnya padam Pada kedua program diatas terjadi beda display karena adanya perintah Komplemen yaitu menginverterkan Nilai

3 ORG 00H ; Program di tempatkan di alamat 00h

MOV A,#0FH ; Isi Acumulator dengan Nilai 0Fh

CPL A ; Complemenkan Akumulator

ANL A,#0AAH ; And kan nilai 0AAh dengan Nilai yang ada diacumulator (0Fh)

MOV P0,A ; Isi P0 dengan Nilai dari accumulator (hasil And)

JMP $ ; lompat

END

Display pada latihan di atas beda dengan display pada latihan 2 karena ada tambahan perintah untuk meng And kan

4 ORG 00H ; Program di tempatkan di alamat 00h

DIP: MOV A,P2 ; Isi Acumulator dengan Nilai dari P2

CPL A ; Complement Kan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari akumulator

JMP DIP ; Lompat ke label DIP

END

Pada Program Diatas ketika SW1 dinyalakan maka L1 Mati begitu juga dengan SW dan led Yang lainnya

5. ORG 00H ; Program di tempatkan di alamat 00h

DIP: MOV A,P2 ; Isi Acumulator dengan Nilai dari P2

CPL A ; Complement Kan Akumulator

ANL A,#0FH ; And kan nilai dari P2 dengan Nilai yang ada diacumulator (0Fh)

CPL A ; Complement Kan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari Akumulator

JMP DIP ; Lompat ke label DIP

END

Pada program diatas ketika SW di Onkan hanya pada SW1 s/d SW4 yang direspon Pada Kedua program Diatas ada perbedaan yaitu setelah akumulatro di Complemenkan lalu diberi perintah And dengan nilai 0Fh dan setelah Di and kan lalu dikomplemenkan Lagi.

6. ORG 00H ; Program di tempatkan di alamat 00h

MOV A,#0FH ; Isi Acumulator dengan Nilai 0Fh

CPL A ; Complement Kan Akumulator

ORL A,#0AAH ; Or kan nilai dari akumulator dengan nilai 0AAh

MOV P0,A ; Isi P0 dengan nilai dari P0

Page 16: LAPORAN PRAKTIKUM MIKROPROSESOR

16

JMP $ ; Lompat

END

Pada Program Diatas yang menyala haya pada L1 dan L3

7 ORG 00H ; Program di tempatkan di alamat 00h

DIP: MOV A,P2 ; Isi A dengan Nilai dari P2

CPL A ; Complemenkan Acumulator

ORL A,#0FH ; Or kan Nilai di Acumulator dengan nilai dari 0Fh

CPL A ; Complemenkan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari Acumulator

JMP DIP ; Lompat ke Label DIP

END

Pada program Ketika SW dionkan Hanya Pada SW5 s/d SW8 yang direspon yaitu oleh L5 s/d L8 Perbedaan display yang terjadi adalah karena perbedaan perintah antara di ANL dan Di ORL kan.

8 ORG 00H ; Program di tempatkan di alamat 00h

DIP: MOV A,P2 ; Isi A dengan Nilai dari P2

CPL A ; Complemenkan Acumulator

ANL A,#055H ; AND kan Nilai di Acumulator dengan nilai dari 055h

MOV P0,A ; Complemenkan Akumulator

JMP DIP ; Isi P0 dengan nilai dari Acumulator

END Lompat ke Label DIP

Pada program Diatas yang memblokir Saklar genap adalah Dengan dengan Menga AND kan Yang diberikan Dan Program Diatas Merupakan salah satu dari Implementasi Dari AND gate

9 ORG 00H ; Program di tempatkan di alamat 00h

DIP: MOV A,P2 ; Isi A dengan Nilai dari P2

CPL A ; Complemenkan Acumulator

ORL A,#0F7H ; OR kan Nilai di Acumulator dengan nilai dari 0F7h

CPL A ; Complemenkan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari Acumulator

JMP DIP ; Lompat ke Label DIP

END

Page 17: LAPORAN PRAKTIKUM MIKROPROSESOR

17

MODUL VI

Latihan 1 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

ORG 00H ; Program ditempatkan di alamat 00h

LAT1: MOV P0,#00h ; Isi P0 dengan nilai 00h

MOV A,P0 ; Isi A dengan nilai dari P0

ULANG: CALL DELAY ; Panggil delay

INC A ; Incrementkan Akumulator

MOV P0,A ; Isi P0 dengan nilai dari A

JMP ULANG ; lompat Ke label ulang

;WAKTU_TUNDA

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 10 (10x ulang)

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 250 (250x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA1-1, jika belum 0 ulangi

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi TD1

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Pada Program Diatas adalah Program yang merupakan implementasi dari Perintah INC yang menambah 1 nilai acumulator display yang terjadi nyala LED Berurutan dari Nyala dengan Logic 00000000b, 00000001b,00000010b,000000011, begitu seterusnya sampai Led Mati Semua atau 11111111b.

Latihan 2 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

ORG 00H ; Tempatkan Program Dialamat 00h

LAT2: MOV P0,#0FFh ; Isi P0 dengan nilai 0FFh

MOV A,P0 ; Isi Akumulator dengan nilai dar P0

ULANG: CALL DELAY ; panggil Delay

DEC A ; Decremenkan Akumulator

MOV P0,A ; isi P0 dengan Nilai Dari akumulator

JMP ULANG ; lompat Ke label Ulang

;WAKTU_TUNDA

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 10 (10x ulang)

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 250 (250x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA1-1, jika belum 0 ulangi

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi TD1

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Pada Program Diatas adalah Program yang merupakan implementasi dari Perintah DEC yang Mengurangi acumulator display yang terjadi nyala LED Berurutan dari Nyala dengan Logic 1111111b, 11111110b,11111101b,111111100b, begitu seterusnya sampai Led nyala Semua atau 00000000b. Beda Display yang terjadi Karena Adanya Perintah INC dan DEC.

Latihan 3 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

ORG 00H ; Program Disimpan di alamat 00H

LAT3: MOV P0,P2 ; Isi P0 dari P2

CALL DELAY ; Pangggil Delay

MOV A,P0 ; isi Acumulator Dengan Nilai Dari P0

CPL A ; Complemenkan Acumulator

INC A ; Tambah Nilai Akumulator

CPL A ; Complemenkan Akumulator

MOV P0,A ; isi P0 dengan Nilai Dari Acumulator

CALL DELAY ; panggil Delay

CALL DELAY ; panggil Delay

MOV P0,#0FFH ; Isi P0 dengan nilai 0FFh

CALL DELAY ; panggil Delay

JMP LAT3 ; Lompat Ke Lat3

;WAKTU_TUNDA

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 10 (10x ulang)

Page 18: LAPORAN PRAKTIKUM MIKROPROSESOR

18

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 250 (250x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA1-1, jika belum 0 ulangi

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi TD1

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Pada Program tersebut diatas yang terjadi adalah ketika SW1 On maka L1 & L2 nyala Bergantian Membentuk nilai 00000001b, 00000010b, 00000011b dan ketika SW2 di onkan juga kombinasi Yang terjadi adalah Display Pada nilai 0FCh, 0FBh dan 0FFh begitu juga dengan switch yang lainnya, Hal ini karena adanya perintah INC

Latihan 4 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

ORG 00H ; Program Disimpan di alamat 00H

LAT4: MOV P0,P2 ; Isi P0 dari P2

CALL DELAY ; Pangggil Delay

MOV A,P0 ; isi Acumulator Dengan Nilai Dari P0

CPL A ; Complemenkan Acumulator

DEC A ; Kurangi Nilai Akumulator

CPL A ; Complemenkan Akumulator

MOV P0,A ; isi P0 dengan Nilai Dari Acumulator

CALL DELAY ; panggil Delay

CALL DELAY ; panggil Delay

MOV P0,#0FFH ; Isi P0 dengan nilai 0FFh

CALL DELAY ; panggil Delay

JMP LAT4 ; Lompat Ke Lat4

;WAKTU_TUNDA

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 10 (10x ulang)

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 250 (250x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA1-1, jika belum 0 ulangi

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA1-1, jika belum 0 ulangi TD1

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Ketika SW tidak Di Onkan Led Menyala Pada Nilai 00h dan FFh, tapi Ketika SW1 Di onkan Led yang Menyala Adalah Pada nilai FEh dan FFh, dan Ketika Ditambah Dengan meng Onkan SW2 yang terjadi Adalah nyala pada Nilai FCh, FDh dan FFh, ketika Ditambah SW3 yang di Onkan Led Yang menyala Adalah Pada Nilai F8h, F9h dan FFh begitu seterusnya seseuai dengan Led SW yang Di Onkan.

Latihan 5 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

BILANGAN1 EQU 33H ; Bilangan1 = Alamat 33h

BILANGAN2 EQU 34H ; Bilangan2 = Alamat 34h

ORG 00H ; Program Disimpan di alamat 00H

LAT5: MOV P0,P2 ; Isi P0 dari P2

MOV A,P2 ; Isi A dari P2

CPL A ; Complemenkan Acumulator

MOV BILANGAN1,A ; Isi Blangan1 (=33h) dengan Nilai Dari Acumulator

CALL DELAY3 ; Panggil Dellay

MOV P0,P2 ; Isi P0 dari P2

MOV A,P2 ; isi Acumulator Dari P2

CPL A ; Complemenkan Acumulator

MOV BILANGAN2,A ; Isi Bilangan2 (34h) dari Acumulaor

CALL DELAY ; Panggil Delay

ADD A,BILANGAN1 ; tambah Acumulator dengan Nilai dari Bilangan1

CPL A ; Complemenkan Acumulator

MOV P0,A ; Isi P0 dengan Nilai dari Aumulator

CALL DELAY ; Panggil Delay

CALL DELAY ; Panggil Delay

MOV P0,#0FFH ; isi P0 dengan Nilai FFh

CALL DELAY3 ; panggil Delay3

CALL DELAY3 ; panggil Delay3

JMP LAT5 ; Lompat Ke lat5

;WAKTU_TUNDA

Page 19: LAPORAN PRAKTIKUM MIKROPROSESOR

19

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 30 (30x ulang)

JUMP TD

DELAY3: MOV REG_TUNDA1,#30 ; isi REG_TUNDA1 Dengan 30 (30x ulang)

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 250 (250x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA3-1, jika belum 0 ulangi

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA2-1, jika belum 0 ulangi TD1

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi TD

RET ; kembali dari subrutin ke program utama (pemanggil)

END

Program Diatas adalah sebagai Implementasi Dari Fungsi Bil1 + bil2 = Hasil Pada Hasil Penekanan Pertama SW1 Di Onkan Dan Penekanan Kedua Tetap SW1 hasil yang terdisplay Adalah Pada nilai 00000010b, begitu juga Pada Percobaan kedua pada SW2 di Onkan dan penekanan Kedua SW2 Di Onkan hasil yang terdisplay adalah nilai 00000100b

Latihan 6 REG_TUNDA1 EQU 30H ; REG_TUNDA1 = alamat 30h

REG_TUNDA2 EQU 31H ; REG_TUNDA2 = alamat 31h

REG_TUNDA3 EQU 32H ; REG_TUNDA3 = alamat 32h

ORG 00H ; Program Disimpan di alamat 00H

LAT6: MOV P0,P2 ; Isi P0 dengan Nilai dari P2

MOV A,P2 ; isi Acumulator Dengan nilai dari P2

CPL A ; Complemenkan Acumulator

CALL DELAY ; panggil Delay

MOV P0,#0FEH ; Isi P0 dengan nilai 0FEh

MOV A,#0FEH ; isi Acumulator Dengan Nilai 0FEh

CPL A ; Complemenkan Acumulator

CALL DELAY ; panggil delay

MOV P0,#11110101B ; Isi P0 dengan Nilai 11110101b

CALL DELAY ; Panggil delay

ADD A,#10 ; tambahkan Acumulator Dengan nilai 10

CPL A ; Complemenkan Acumulator

MOV P0,A ; isi p0 dengan Nilai dari Acumulator

CALL DELAY3 ; panggil Delay

JMP LAT6 ; lompat Ke Lat6

;WAKTU_TUNDA

DELAY: MOV REG_TUNDA1,#10 ; isi REG_TUNDA1 Dengan 10 (10x ulang)

JMP TD ; lompat ke TD

DELAY3: MOV REG_TUNDA1,#30 ; isi REG_TUNDA1 Dengan 30 (30x ulang)

TD: MOV REG_TUNDA2,#200 ; isi REG_TUNDA2 Dengan 200 (200x ulang)

TD1: MOV REG_TUNDA3,#250 ; isi REG_TUNDA3 Dengan 10 (10x ulang)

DJNZ REG_TUNDA3,$ ; REG_TUNDA3=REG_TUNDA1-1, jika belum 0 ulang terus

DJNZ REG_TUNDA2,TD1 ; REG_TUNDA2=REG_TUNDA2-1, jika belum 0 ulangi

DJNZ REG_TUNDA1,TD ; REG_TUNDA1=REG_TUNDA1-1, jika belum 0 ulangi

RET

END

Program Diatas adalah sebagai Implementasi Dari Fungsi A-1 + 10 = Hasil Pada Hasil Penekanan Pertama SW2 Di ON-kan yang terdisplay pertama Adalah 00000010b dan Display kedua adalah 00000001b dan Display Ketiga adalah 00001010b dan Display yang ke 4 adalah 00001011b hal Itu berarti = 2-1+10=11