Rabu, 27 April 2016

Mikrokontroler AT89C51/52/55

"Postingan ini dibuat dalam rangka memenuhi tugas Mikroproseso dan Antarmuka"


* Rangkaian dan Program Aplikasi Menghidupkan LED Melalui Kanal Paralel


; LAMPU FLIP-FLOP PADA PORT 1
;
 ORG 0H  ;PROGRAM DITEMPATKAN PADA LOKASI 0000H
MULAI : MOV P1,#00001111B ;LED P1.4 S/D P1.7 NYALA(HEKSA= #0FH)
 ACALL DELAY  ;LAKUKAN PENUNDAAN SESAAT (SUB. DELAY)
 MOV P1,#11110000B ;LED P1.0 S/D P1.3 NYALA (HEKSA= #0F0H)
 ACALL DELAY  ;LAKUKAN PENUNDAAN SESAAT (SUB. DELAY)
 SJMP MULAI  ;ULANGI DARI AWAL
; -SUBRUTIN DELAY
;
; SUBRUTIN INI HANYA SEKEDAR MELAKUKAN PENUNDAAN SESAAT
; DENGAN CARA MENGULANGI PROSES (PENGURANGAN ISI REGISTER)
; HINGGA DICAPAI SUATU KONDISI TERTENTU
;
;
DELAY  : MOV R0,#5H  ;ISI REGISTER R0 DENGAN 5 (5x ULANG)
DELAY1 : MOV R1,#0FFH ;ISI REGISTER R1 DENGAN 255 (255x ULANG)  
DELAY2 : MOV R2,#0  ;ISI REGISTER R2 DENGAN 0 (256x ULANG) 
  DJNZ R2,$  ;R2=R2-1, JIKA R2 BELUM 0 ULANGI LAGI
  DJNZ R1,DELAY2 ;R1=R1-1, JIKA R1 BELUM 0 ULANGI DELAY 2
  DJNZ R0,DELAY1 ;R0=R0-1, JIKA RO BELUM 0 ULANGI DELAY 1
  RET   ;KEMBALI KE PEMANGGIL SUBRUTIN DELAY
  END

* Rangkaian Aplikasi Penggerak 7-Segment


; MENGHIDUPKAN DISPLAY LED 7 SEGMENT UNTUK MENAMPILKAN ANGKA 0 S/D 9
; CARA 1 : DATA LANGSUNG DIKELUARKAN KE PORT YANG BERSANGKUTAN
;
;---
 ORG 0H
;
MULAI:
 MOV P0,#0C0H ;KELUARKAN KODE ANGKA 0 PORT 0
 ACALL DELAY
 MOV P0,#0f9H ;KELUARKAN KODE ANGKA 1 PORT 0
 ACALL DELAY
 MOV P0,#0a4H ;KELUARKAN KODE ANGKA 2 PORT 0
 ACALL DELAY
 MOV P0,#0B0H ;KELUARKAN KODE ANGKA 3 PORT 0
 ACALL DELAY
 MOV P0,#99H  ;KELUARKAN KODE ANGKA 4 PORT 0
 ACALL DELAY
 MOV P0,#92H  ;KELUARKAN KODE ANGKA 5 PORT 0
 ACALL DELAY
 MOV P0,#82H  ;KELUARKAN KODE ANGKA 6 PORT 0
 ACALL DELAY
 MOV P0,#0F8H ;KELUARKAN KODE ANGKA 7 PORT 0
 ACALL DELAY
 MOV P0,#80H  ;KELUARKAN KODE ANGKA 8 PORT 0
 ACALL DELAY
 MOV P0,#90H  ;KELUARKAN KODE ANGKA 9 PORT 0
 ACALL DELAY
 SJMP  MULAI  ;MULAI LAGI DARI AWAL
;
;-SUBRUTIN DELAY
;
; SUBRUTIN INI HANYA SEKEDAR MELAKUKAN PENUNDAAN SESAAT
; DENGAN CARA MENGULANGI PROSES (PENGURANGAN ISI REGISTER) HINGGA
; DICAPAI SUATU KONDISI TERTENTU
;
;---
DELAY: MOV R0,#2  ; ISI REGISTRI R0 DENGAN 2 (2X ULANG)
DELAY1: MOV R1,#0FFH ; ISI REGISTRI R1 DENGAN FF (255X ULANG)
DELAY2: MOV R2,#0  ; ISI REGISTRI R2 DENGAN 0 (256X ULANG)
 DJNZ R2,$
 DJNZ R1,DELAY2  
 DJNZ R0,DELAY1
 RET
END

* Rangkaian Aplikasi Untuk Masukan atau Keluaran Penggerak LED


; SIMUASI PENEKANAN TOMBOL PD P3.0 UNTUK MENGHIDUPKAN
; DAN P3.1 UNTUK MEMATIKAN LED PADA PORT 1
;
;---
 ORG 0H
;
MULAI:
 MOV A,P3  ;BACA PORT 3 DAN SIMPAN ISINYA KE AKUMULATOR
 CJNE A,#0FEH,TERUS ;APAKAH ISI AKUMULATOR =11111110B (P3.0 DITEKAN) TIDAK! LOMPAT KE TERUS
 MOV P1,#0  ;YA! HIDUPKAN LAMPU LED DI PORT 1
 SJMP MULAI  ;ULANGI LAGI DARI AWAL (MULAI)
TERUS:
 CJNE A,#0FDH,MULAI ;APAKAH ISI AKUMULATOR =11111101B (P3.1 DITEKAN) TIDAK! LOMPAT KE AWAL (MULAI)
 MOV P1,#0FFH ;YA! MATIKAN LAMPU LED DI PORT 1
 SJMP  MULAI  ;ULANGI LAGI DARI AWAL (MULAI)
 END

* Rangkaian dan Program Aplikasi Masukan atau Keluaran Penggerak Penampil 7-Segment


; PENEKANAN TOMBOL PADA P3 DAN HASIL PENEKANAN
; DITAMPILKAN PADA DISPLAY 7 SEGMENT DI PORT 0
;
;---
 ORG 0H
;
MULAI:
 MOV A,P3   ;BACA ISI STATUS TOMBOL PADA PORT 3 KE AKUMULATOR
 CJNE A,#0FEH,BANDING1 ;APAKAH P3.0 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 1
 MOV P0,#0F9H  ;YA, KELUARKAN KODE ANGKA 1 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING1:
 CJNE A,#0FDH,BANDING2 ;APAKAH P3.1 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 2
 MOV P0,#0A4H  ;YA, KELUARKAN KODE ANGKA 2 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING2:
 CJNE A,#0FBH,BANDING3 ;APAKAH P3.2 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 3
 MOV P0,#0B0H  ;YA, KELUARKAN KODE ANGKA 3 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING3:
 CJNE A,#0F7H,BANDING4 ;APAKAH P3.3 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 4
 MOV P0,#99H   ;YA, KELUARKAN KODE ANGKA 4 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING4:
 CJNE A,#0EFH,BANDING5 ;APAKAH P3.4 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 5
 MOV P0,#92H   ;YA, KELUARKAN KODE ANGKA 5 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING5:
 CJNE A,#0DFH,BANDING6 ;APAKAH P3.5 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 6
 MOV P0,#82H   ;YA, KELUARKAN KODE ANGKA 6 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING6:
 CJNE A,#0BFH,BANDING7 ;APAKAH P3.6 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 7
 MOV P0,#0F8H  ;YA, KELUARKAN KODE ANGKA 7 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
BANDING7:
 CJNE A,#07FH,MULAI  ;APAKAH P3.7 DITEKAN?
     ;TIDAK, CEK LAGI KE BANDING 8
 MOV P0,#80H   ;YA, KELUARKAN KODE ANGKA 8 7SEGMEN KE PORT 0
 SJMP MULAI   ;ULANGI LAGI DARI MULAI
;
END

* Rangkaian dan Program Aplikasi Tombol Tekan Matriks dan Penampil 7-Segment


; PROGRAM UNTUK MEMBACA TOMBOL YANG DISUSUN SECARA MATRIK,
; MASUKAN KE TOMBOL PADA PORT 3, KELUARAN DIBACA PADA PORT 2, DAN
; HASIL DITAMPILKAN PADA 7 SEG DI PORT 0
;
;---
 ORG 0H
;
MULAI:
 MOV P2,#0FEH  ;BUAT P2.0=0
 JB P3.7,KEY1  ;APAKAH TOMBOL 'C' DITEKAN?
     ;TIDAK, CEK TOMBOL LAIN DI KEY1
 MOV P0,#0AAH  ;YA, KELUARKAN KODE HURUF 'C' KE PORT 0
 SJMP  MULAI   ;ULANGI LAGI DARI MULAI
KEY1:

 JB P3.6,KEY2  ;APAKAH TOMBOL 'B' DITEKAN?
     ;TIDAK, CEK TOMBOL LAIN DI KEY2
 MOV P0,#38H   ;YA, KELUARKAN KODE HURUF 'B' KE PORT 0
 SJMP  MULAI   ;ULANGI LAGI DARI MULAI
KEY2:
 JB P3.5,KEY3  ;APAKAH TOMBOL 'A' DITEKAN?
     ;TIDAK, CEK TOMBOL LAIN DI KEY3
 MOV P0,#60H   ;YA, KELUARKAN KODE HURUF 'A' KE PORT 0
 SJMP  MULAI   ;ULANGI LAGI DARI MULAI
KEY3:
 JB P3.4,KEY4  ;APAKAH TOMBOL '0' DITEKAN?
     ;TIDAK, CEK TOMBOL LAIN DI KEY4
 MOV P0,#22H   ;YA, KELUARKAN KODE HURUF 'A' KE PORT 0
 SJMP  MULAI   ;ULANGI LAGI DARI MULAI
KEY4:
 JB P3.3,KEY5  ;APAKAH TOMBOL F4 DITEKAN?
     ;TIDAK, CEK TOMBOL LAIN DI KEY5
 MOV P0,#70H   ;YA, KELUARKAN KODE HURUF '' KE PORT 0
 SJMP  MULAI   ;ULANGI LAGI DARI MULAI
KEY5:
 MOV P2,#0FDH  ;BUAT P2.1=0
 JB P3.7,KEY6  
 MOV P0,#34H 
 SJMP  MULAI 
KEY6:
 JB P3.6,KEY7
 MOV P0,#25H  
 SJMP  MULAI   
KEY7:
 JB P3.5,KEY8       
 MOV P0,#0A4H  
 SJMP  MULAI   
KEY8:
 JB P3.4,KEY9  
 MOV P0,#77H 
 SJMP  MULAI  
KEY9:
 JB P3.3,KEY10  
 MOV P0,#22H  
 SJMP  MULAI   
KEY10:
 MOV P2,#0FBH  ;BUAT P2.2=0 (UNTUK BACA TOMBOL 4,5,6,K,F2)
 JB P3.7,KEY11  
 MOV P0,#0A8H  
 SJMP  MULAI   
KEY11:
 JB P3.6,KEY12  
 MOV P0,#28H  
 SJMP  MULAI   
KEY12:
 JB P3.5,KEY13  
 MOV P0,#29H  
 SJMP  MULAI   
KEY13:
 JB P3.4,KEY14  
 MOV P0,#71H  
 LJMP  MULAI   
KEY14:
 JB P3.3,KEY15  
 MOV P0,#22H  
 LJMP  MULAI   
KEY15:
 MOV P2,#0F7H  ;BUAT P2.3=0
 JB P3.7,KEY16  
 MOV P0,#0E8H  
 LJMP  MULAI   
KEY16:
 JB P3.6,KEY17
 MOV P0,#21H
 LJMP  MULAI 
KEY17:
 JB P3.5,KEY18
 MOV P0,#20H
 LJMP  MULAI
KEY18:
 JB P3.4,KEY19
 MOV P0,#57H
 LJMP  MULAI
KEY19:
 JB P3.3,KEY20
 MOV P0,#0E0H
KEY20:
 LJMP  MULAI   ;ULANGI LAGI DARI MULAI
 END

* Rangkaian dan Program 8x7-Segment


; PROGRAM UNTUK MENGHIDUPKAN TAMPILAN 8 X 7SEG
; UNTUK MENAMPILKAN TULISAN -ELINS--
;
;---
 ORG 0H
;
MULAI:
 MOV DPTR,#ELINS ;ISI DATA POINTER DENGAN ALAMAT DATA "-ELINS--"
 MOV R6,#08H  ;R6=8=JUMLAH DIGIT 7 SEGMENT
 MOV R1,#7FH  ;R1=UNTUK COMMON
ULANG:
 CLR A  ;ISI AKUMULATOR DG 0
 MOVC A,@A+DPTR ;PINDAHKAN DATA KE N KE A
 INC DPTR  ;DPTR MENUNJUK KE DATA BERIKUTNYA
 MOV P0,A  ;KELUARKAN DATA KE A KE PORT 0
 MOV A,R1  ;KIRIMKAN DATA COMMON KE
 MOV P1,A  ;PORT 1 MELALUI AKUMULATOR
 RR A  ;PUTAR DESER KE KANAN PER BIT ISI AKUMULATOR
 MOV R1,A  ;KEMBALI ISI R1
;
 MOV R2,#0FFH ;LAKUKAN PENUNDAAN
DELAY:
 DJNZ R2,DELAY ;SESAAT (ULANG 255X)
 MOV P0,#0FFH ;BUAT P0 BERLOGIKA 1
 DJNZ R6,ULANG ;ULANGI SAMPAI 8X
 JMP MULAI  ;ULANGI LAGI DARI AWAL
;---
; DATA AREA
;---
ELINS:
;
; '-' 'E' 'L' 'I' 'N' 'S' '-' '-'
;
 DB 0FDH,0A0H,0BAH,77H,62H,29H,0FDH,0FDH
 END

* Rangkaian dan Program Aplikasi Menyalakan/Mematikan LED


; PROGRAM MENYALAKAN/MEMATIKAN LED SETELAH PENEKANAN TOMBOL
; PADA P1,4 SEBANYAK 5 KALI DENGAN MENGGUANAKAN TIMER
;
; -------------------------------------------------------------------
;
CACAH  EQU -5 ; CACAH = 5
 ORG 0H
;
 MOV TMOD,#0Eh  ; GUNAKAN TIMER 0 MODE 8 BIT ISI-ULANG OTOMATIS
LAGI:
 MOV TH0,#CACAH ; ISI THO DENGAN #CACAH
 MOV TL0,#CACAH ; ISI TL0 DENGAN # CACAH
 SETB TR0  ; AKTIFKAN TIMER 0
CEK:
 JNB TF0,$  ; TUNGGU HINGGA MELIMPAH
 CLR P1.0  ; HIDUPKAN P1.0 SETELAH 5 KALI
    ; PENEKANAN TOMBOL PADA T0 (P1.4)
 CLR TF0  ; BERSIHKAN FLAG LIMPAHAN TIMER 0 SECARA MANUAL
CEK1:
 JNB TF0,$  ; TUNGGU HINGGA OVER FLOW
 SETB P1.0  ; MATIKAN P1.0 SETELAH 5 KALI
    ; PENEKANAN TOMBOL PADA T0 (P1.4)
 CLR TF0  ; BERSIHKAN FLAG LIMPAHAN TIMER 0 SEARA MANUAL
 SJMP  CEK  ; ULANGI LAGI DARI AWAL
 END

* Rangkaian dan Program Membunyikan Speaker


; PROGRAM MEMBUNYIKAN SPEAKER DENGAN FREKUENSI 500 H
;
; ------------------------------------------------------------------------------
;
ASIK EQU -1000  ; NILAI INI ULANG 1000
     ORG 0H
;
 MOV TMOD,#01H ; MENGGUNAKAN TIMER 0 MODE 16 BIT (OOOO OOO1)
KALANG:
 MOV TH0,#HIGH ASIK ; SIAPKAN NIALI ISIS ULANG PADA 2-SIKLUS
 MOV TL0,#LOW ASIK ; TH0 DAN TL0 (TIMER 0) 2-SIKLUS
 SETB TR0  ; HIDUPKAN TIMER 0
TUNGGU:
 JNB TF0, TUNGGU ; TUNGGU HINGGA MELIMPAH
 CLR TR0  ; HENTIKAN TIMER 0  1-SIKLUS
 CLR TF0  ; NON-KAN FLAG OVERFLOW  1-SIKLUS
 CPL P1.0  ; 'TOGGLE' PADA P1.0  1-SIKLUS
 SJMP KALANG  ; ULANGI LAGI DARI AWAL  2-SIKLUS
 END

* Rangkaian dan Program Alarm dan Lampu Flip-Flop


; ALARM DAN LAMPU FLIP-FLOP DENGAN SELANG WAKTU MENGGUNAKAN 
; INTRUPSI TIMER 1 SPEAKER DIPASANG PADA P1.0 SEDANGKAN
; LAMPU FLIP-FLOP (LED) DIPASANG PADA PORT 0 BIT 1,2,4 DAN 5
;
;-----------------------------------------------------------------------------------
 ORG 0H
;
 LJMP MULAI
 ORG 1BH  ; ALAMAT UNTUK INTERUPSI TIMER 1
 LJMP  TIMER_1  ; KARENA SUBRUTIN INI PANJANG PINDAHKAN
    ; KE LAIN TEMPAT DENGAN LJMP
;-----------------------------------------------------------------------------------
; SUB RUTIN DELAY PENDEK DELAY
;-----------------------------------------------------------------------------------
DELAY:
 MOV R6,#0
DELAY1:
 NOP   ; 1 SIKLUS
 DJNZ  R6,DELAY1 ; 2 SIKLUS
 RET
;
;-----------------------------------------------------------------------------------
; SUB RUTIN DELAY PANJANG LDELAY
;-----------------------------------------------------------------------------------
LDELAY:
 MOV R7,#0  
LD1: ACALL DELAY
 ACALL DELAY
 DJNZ R7,LD1  ; ULANGI SEBANYAK 256x
 RET
;
;-----------------------------------------------------------------------------------
; SUBRUTIN INTERUPSI TIMER 1
; PENGHASIL PULSA PADA PORT 1 BIT KE 0
;-----------------------------------------------------------------------------------
TIMER_1:
 CLR TR1  ; HENTIKAN TIMER 1
 CJNE R0,#0,TONE1 ; APAKAH STATUS KELUARAN (R0) = LOW
 SETB P1.0  ; YA! BUAT P.1 BERLOGIKA 1
 MOV R0,#1  ;  UBAH STATUS KELUARAN HIGH -> 1
 SJMP TONE2  ;  BUNYIKAN NADA 750/500 HZ
TONE1:
 CLR P1.0  ; TIDAK! BUAT P1.0 BERLOGIKA 0
 MOV R0,#0  ; UBAH STATUS KELUARAN -> LOW
    ;
TONE2:
 CJNE R1,#0,TONE3 ; APAKAH POLA PENYALAAN MODE-1?
 MOV TL1,#LOW (-655) ; YA! TONE 750 HZ = PULSA PER 655 UD
 MOV TH1,#HIGH (-655)
 SJMP TONE4
TONE3:
 MOV TL1,#LOW (-1000) ; TIDAK! TONE 500 HZ = PULSA ER 1000 UD
 MOV TH1,#HIGH (-1000) 
TONE4:
 SETB TR1  ; HIDUPKAN TIMER-1
 RETI
;-----------------------------------------------------------------------------------
; AWAL DARI PROGRAM
;-----------------------------------------------------------------------------------
MULAI:
 CLR A  ; NOLKAN AKUMULATOR
 MOV IE,A  ; MATIKAN SEMUA INTERUPSI
 SETB  IE.7  ; AKTIFKAN INTERUPSI GLOBAL
 SETB IE.3  ; AKTIFKAN INTERUPSI TIMER 1
 MOV TCON,A  ; BERSIHKAN TCON
 MOV TMOD,#11H ; MODE TIMER 16 BIT
 SETB TR1  ; JALANKAN TIMER 1
;
TUNGGU:
 MOV R1,#0  ; R1 SEBAGAI TANDA UNTUK TONE 750 HZ
 SETB P1.6
 SETB P1.7
 CLR  P1.4
 CLR P1.5
 LCALL LDELAY
 MOV R1,#1  ; R1 SEBAGAI TANDA UNTUK TONE 500 HZ
 SETB P1.4
 SETB P1.5
 CLR P1.6
 CLR P1.7
 LCALL LDELAY
 SJMP TUNGGU  ; ULANGI TERUS MENERUS
;
 END

* Rangkaian dan Program Aplikasi Komunikasi Serial Menggunakan Komputer


; SEMUA MENGGUNAKAN INTERUPSI, TIDAK ADA PROGRAM UTAMA,
; KECUALI INISIALISASI BAUD RATE DAN INTERUPSI
; PROGRAM AKAN MENERIMA KARAKTER (HURUF), KEMUDIAN MENGIRIM -
; KANNYA KEMBALI KE PENGIRIM BERUPA HURUF BESAR (KODE ASCII - 32)
; KRISTAL DIGUNAKAN 11. 0592 MHZ
;
;----------------------------------------------------------------------------
 ORG 00H
;
 SJMP  MAIN  ; LOMPAT KE PROGRAM UTAMA
;----------------------------------------------------------------------------
; ISI VEKTOR INTERUPSI PORT SERIAL DENGAN RLI
;
 ORG 23H  ; LOKASI VEKTRO INTERUPSI PORT SERIAL
 SJMP SERINT  ; KARENA PANJANG LOMPAT KE SERINT
;----------------------------------------------------------------------------
;
 ORG 030H  ; PROGRAM UTAMA MULAI DI SINI
MAIN:
 MOV TMOD,#20H ; TIMER 1 MODE 2 (8-BIT, ISI ULANG OTOMATIS)
 MOV TH1,#0F4H ; 2400 BAUD RATE
 MOV SCON,#50H ; MODE SERIAL 8-BIT UART
 SETB TR1  ; JALANKAN TIMER 1
 MOV R0,#60H  ; PENUNJUK TAMPILAN
 MOV SP,#10H  ; DEFINISIKAN LOKASI STACK
;----------------------------------------------------------------------------
;INISIALISASI INTERUPSI
;
 SETB ES
 SETB EA
;----------------------------------------------------------------------------
; INTERUPSI SEKARANG AKTIF
;
DEAD: SJMP DEAD  ; PERULANGAN TERUS MENERUS
;----------------------------------------------------------------------------
; PENANGANAN INTERUPSI
; SAAT PENGGUNA MENEKAN SUATU TOMBOL DI KOMPUTER, PROGRAM TERMINAL
; AKAN MENGIRIMKAN KARAKTER TOMBOL TSB. KE MCS-51 MELALUI KANAL SERIAL
;----------------------------------------------------------------------------
SERINT:    ; PERIKSA APA YANG MENYEBABKAN INTERUPSI
;
 JB RI,RCV_CH ; APAKAN RI=1 (DATA DITERIMA)?
    ; YA! ADA KARAKTER DI SBUF LOMPAT KE RCV_CH
 CLR TI  ; TIDAK! HAPUS TI
 RETI
;----------------------------------------------------------------------------
; PENANGANAN INTERUPSI PENERIMAAN
;----------------------------------------------------------------------------
RCV_CH:
 PUSH PSW  ; SIMPAN REGISTER-REGISTER PENTING (ACC DAN PSW)
 PUSH ACC 
 MOV A,SBUF  ; BACA KARAKTER YANG DITERIMA
 CLR RI  ; KOSONGKAN RI (AGAR BISA TERIMA DATA LAGI)
 SUBB A,#32  ; KONVERSI KE HURUF BESAR (ASCII-32)
 MOV SBUF,A  ; KIRIMKAN KEMBALI
;
EXIT:
 POP ACC  ; AMBIL ACC KEMBALI (DARI STACK)
 POP PSW  ; DAN JUGA PSW
 RETI
 END

Untuk mengunduh rangkaian dan programnya, klik disini.


Tidak ada komentar:

Posting Komentar