™Hacker Evolution Indonesia™
SELAMAT DATANG DI FORUM NYA ILMU COMPUTING
DAN JANGAN LUPA UNTUK MENDAFTAR TERLEBIH DAHULU
DAN SLAMAT BERGABUNG
™Hacker Evolution Indonesia™
SELAMAT DATANG DI FORUM NYA ILMU COMPUTING
DAN JANGAN LUPA UNTUK MENDAFTAR TERLEBIH DAHULU
DAN SLAMAT BERGABUNG
™Hacker Evolution Indonesia™
Would you like to react to this message? Create an account in a few clicks or log in to continue.

™Hacker Evolution Indonesia™

CYBER HACKER FORUM INDONESIA
 
IndeksHellcome PortalLatest imagesPendaftaranLogin
Selamat Datang Di Evolution.lifeme.net >>>> Dan Selamat Bergabung Di Hacke Evolution Indonesia<<<< Dan Silahkan Berbagi Ilmu Di Dalam Hal Yg Positif ( Semangat Evolution)
Silahkan Berbagi Ilmu Sepuas Nya Disini , Asalkan Sopan Dan Santun >>>> Dan Untuk Yang Ingin Share Ilmu Nya Diharapkan Tidak Menyalahi Aturan Hacking Dan Cracking , Agar Forum Ini Aman Dan Nyaman >>>> The Legion

 

 Robot Walking

Go down 
PengirimMessage
RYANZ SAN RAKAGI
*~*|~ADMINISTATOR'~|*~*
*~*|~ADMINISTATOR'~|*~*
RYANZ SAN RAKAGI


Jumlah posting : 115
Point Forum : 58599
Join date : 28.06.11
Age : 29
Lokasi : CIREBON

Aktifitas
WARNING LEVEL WARNING LEVEL:
Robot Walking Left_bar_bleue100/100Robot Walking Empty_bar_bleue  (100/100)
KEAHLIAN KEAHLIAN:
Robot Walking Left_bar_bleue100/100Robot Walking Empty_bar_bleue  (100/100)
MEDAL MEDAL: ™CEO™ ™CEO™

Robot Walking Empty
PostSubyek: Robot Walking   Robot Walking EmptySat Aug 25, 2012 8:17 pm

Nih hasta karya ku yang kedua .. hahahahaxxx..:smangat
[Only admins are allowed to see this image]
Walking Robot adalah sebuah robot yang dapat bergerak menyerupai prinsip gerakan manusia yang lebih sederhana. Robot ini dikendalikan oleh control berupa Mikrokontroller AT89C52. Pada robot memiliki lengan ayun dan telapak kaki yang menyerupai seperti paha dan telapak kaki manusia. Hal ini dalam proses pergerakkannya menggunakan dua buah actuator, yaitu menggunakan motor servo. Robot ini terdapat LCD sebagai penampil informasi – informasi saat sistem berjalan. Selain itu memiliki lima buah sensor yang digunakan dalam mempermudah pengoperasiannya. Sensor – sensor tersebut adalah :
1. Sensor Condesor Mic ( Sensor suara ) digunakan untuk mengaktifkan dan meng-nonaktifkan system dari robot.
2. Sensor Ultra Sonic digunakan untuk mendeteksi ketinggian dari robot ( asumsi robot berada di pinggir meja )
3. Sensor phototransistor I digunakan mendeteksi penghalang yang berada di depan robot.
4. Sensor phototransistor II digunakan mendeteksi penghalang yang berada di kiri robot.
5. Sensor phototransistor III digunakan mendeteksi penghalang yang berada di kanan robot.
Ane hanya buat yang simple dan bentuknya lucu..
[Only admins are allowed to see this image]
CARA KERJA
ada 4 tipe cara kerja dari robot ini..
[Only admins are allowed to see this image]
1. Robot jalan lurus
2. Robot belok kekiri
3. Robot belok ke kanan
4. Robot jalan kebelakang
5. Robot saat berada di Tepi Meja

FLOWCHART
[Only admins are allowed to see this image]

Program: Inisialisasi


Code:
$MOD51
SERVO_ATAS   EQU   3BH         ;POSISI SERVO YANG DIINGINKAN
SERVO_BAWAH   EQU   3CH         ;POSISI SERVO YANG DIINGINKAN
SERVO_COUNTL   EQU   3DH         ;COUNTER 20MS LOW BYTE
SERVO_COUNTH   EQU   3EH         ;COUNTER 20MS HIGH BYTE
SERVO_REFRESH   EQU   3FH         ;KONSTANTA 20MS HIGH
SERVO_TIMES   EQU   40H         ;KONSTANTA 20MS LOW
      ORG   0000H         ;Simpan perinta mulai pada memory 0000H
      LJMP   mulai         ;Panggil subrutin mulai
      ORG    000BH         ;Simpan perinta INT_T0 pada memory 000BH
      LJMP   INT_T0      ;Panggil subrutin INT_T0
      ORG   0100H         ;Simpan perinta pada memory 0100H
      NOP
;-------------- INISIALISASI ---------------------------
INIT:       MOV    SERVO_ATAS,#30      ;POSISI TENGAH 1500 US
   MOV   SERVO_BAWAH,#30   ;POSISI TENGAH 1500 US
      MOV    SERVO_COUNTL,#00H
      MOV    SERVO_COUNTH,#00H
      MOV    SERVO_TIMES,#4
      MOV    SERVO_REFRESH,#100
      MOV    IE,#82H
      MOV    TMOD,#02H
      MOV    TH0,#-100
      MOV    TL0,#-100
      SETB    TR0
      RET
;-------------- INTERRUPT TIMER0 SERVICE ROUTINE --------
;-------------- DIPAKAI UNTUK SCAN SERVO ----------------
INT_T0:    PUSH    ACC
   INC    SERVO_COUNTL
   MOV    A,SERVO_COUNTL
   CJNE    A,SERVO_REFRESH,INT_T00
   MOV    SERVO_COUNTL,#00H
   INC    SERVO_COUNTH
   MOV    A,SERVO_COUNTH
   CJNE    A,SERVO_TIMES,INT_T00
   MOV    SERVO_COUNTH,#00H
   MOV    A,#00H         ;Isi akumulator dengan 00H
   SETB    P3.0            ;Aktifkan P3.0
   SETB   P3.2            ;Aktifkan P3.2
INT_T00:    CJNE    A,SERVO_ATAS,INT_T01   ;Bandingkan A jika = SERVO_ATAS,maka teruskan program dibawah
   CLR    P3.0            ;Clear P3.0
INT_T01:   CJNE   A,SERVO_BAWAH,INT_T02; Bandingkan A jika = SERVO_BAWAH,maka teruskan program dibawah
   CLR   P3.2            ;Clear P3.2
INT_T02:    POP    ACC
   RETI               ;kembali ke INT_T0

;-------------- DELAY SUBROUTINE -----------------------
TUNDA:    MOV    R7,#0FFH   ;Isi R7 dengan 255
TUNDA1:    MOV    R6,#0FFH   ;Isi R6 dengan 255
TUNDA2:    MOV    R5,#10      ;Isi R5 dengan 10
   DJNZ    R5,$      ;R5=R5-1,jika R5 belum 0,maka ulangi lagi
   DJNZ    R6,TUNDA2   ;R6=R6-1,jika R6 belum 0,ulangi TUNDA2
   DJNZ    R7,TUNDA1   ;R7=R7-1,jika R7 belum 0,ulangi TUNDA1
   RET         ;Kembali ke program awal

Main Program: MAju dan Mundur
Code:
;-------------- MAIN PROGRAM -------------------------
START:   CLR   A      ;Clear Akumulator
   MOV   R1,A      ;Isi R1 dengan A
   MOV   R2,A      ;Isi R2 dengan A
   MOV   R3,A      ;Isi R3 dengan A
   MOV   R4,A      ;Isi R4 dengan A
   MOV   R5,A      ;Isi R5 dengan A
   JNB   P2.3,BABI   ;Cek Sensor Suara
   LJMP   STOP      ;Lompat ke subrutin STOP

START1:   CLR   A      ;Clear Akumulator
   MOV   R5,A      ;Isi R5 dengan A
      mov   R1,#03Fh   ;Isi R1 dengan decimal 18
      acall   write_inst   ;Panggil subrutin write_inst
      acall   write_inst   ;Panggil subrutin write_inst
      mov   R1,#0Dh   ;Isi R1 dengan decimal 13
      acall   write_inst   ;Panggil subrutin write_int
      mov   R1,#06h   ;Isi R1 dengan decimal 6
      acall   write_inst   ;Panggil subrutin write_inst
      mov   R1,#01h   ;Isi R1 dengan decimal 1
      acall   write_inst   ;Panggil subrutin write_int
      mov   R1,#0Ch   ;Isi R1 dengan decimal 12
      acall   write_inst   ;Panggil subrutin write_inst
      acall   tulisan1   ;Panggil subrutin tulisan1
                  
BABI:      LCALL TUNDA      ;Panggil subrutin TUNDA
      LCALL INIT         ;Panggil subrutin INIT
      LCALL TUNDA      ;Panggil subrutin TUNDA
   MOV    SERVO_ATAS,#30      ;UBAH KE POSISI 90 DERAJAT
   MOV   SERVO_BAWAH,#30    ;UBAH KE POSISI 90 DERAJAT
      LCALL TUNDA      ;Panggil subrutin TUNDA
      CLR   A         ;Clear Akumulator
   MOV   R1,A         ;Isi R1 dengan A
   MOV   R2,A         ;Isi R2 dengan A
   MOV   R3,A         ;Isi R3 dengan A
   MOV   R4,A         ;Isi R4 dengan A
   MOV   R5,A         ;Isi R5 dengan A


BABI2:   JNB   P2.3,BABI3      ;Cek Sensor Suara ( Condesor Mic )
   LJMP   STOP         ;lompat ke subrutin STOP
            
BABI3:   JB   P2.5,MUNDUR   ;Cek Sensor Depan
   JNB   P2.7,BABI4      ;Cek Sensor Kanan
   LJMP   KANAN      ;Lompat ke subrutin KANAN
      
BABI4:   JNB   P2.6,BABI5      ;Cek Sensor Kiri
   LJMP   KIRI         ;Lompat ke subrutin KIRI
   
BABI5:   JB   P2.2,BABI6      ;Cek Sensor Ultra Sonic
   ACALL BABI7      ;Panggil subrutin BABI7

BABI6:   ACALL MUNDUR_LAGI   ;Panggil subrutin MUNDUR_LAGI
      
BABI7:   MOV    SERVO_ATAS,#36   ;UBAH KE POSISI 126 DERAJAT
   LCALL TUNDA      ;Panggil subrutin TUNDA
   MOV    SERVO_BAWAH,#25 ;UBAH KE POSISI 60 DERAJAT
   LCALL TUNDA      ;Panggil subrutin TUNDA
   MOV    SERVO_ATAS,#26    ;UBAH KE POSISI 66 DERAJAT
   LCALLTUNDA      ;Panggil subrutin TUNDA
   MOV    SERVO_BAWAH,#32 ;UBAH KE POSISI 102 DERAJAT
   LCALL TUNDA      ;Panggil subrutin TUNDA
   LJMP   BABI2       ;Lompat ke subrutin BABI2

MUNDUR:   MOV   P3,#10111100B   ;Aktifkan LED 2
   MOV   SERVO_ATAS,#30
   MOV   SERVO_BAWAH,#30
   LCALLTUNDA
   CLR   A
   MOV   R5,A
   mov   R1,#03Fh
   acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan3

MUNDUR1:   JNB   P2.3,MUNDUR11
      LJMP   STOP

MUNDUR11:   JNB   P2.5,TELOR
      ACALL SANA
TELOR:   ACALL MUNDUR2
SANA:   MOV   P3,#10111100B   ;Aktifkan LED 2
      CLR   A
      MOV   R1,A
      MOV   R2,A
      MOV   R3,A
      MOV   R4,A
      MOV   R5,A
      MOV    SERVO_ATAS,#26       ;UBAH KE POSISI 66 DERAJAT
   LCALL TUNDA         ;Panggil subrutin TUNDA
      MOV    SERVO_BAWAH,#25   ;UBAH KE POSISI 60 DERAJAT   
   LCALL TUNDA         ;Panggil subrutin TUNDA
      MOV    SERVO_ATAS,#36      ;UBAH KE POSISI 126 DERAJAT
   LCALLTUNDA         ;Panggil subrutin TUNDA
      MOV   SERVO_BAWAH,#32   ;UBAH KE POSISI 102 DERAJAT
   LCALLTUNDA          ;Panggil subrutin TUNDA
      MOV    SERVO_ATAS,#26
      LCALL TUNDA
      MOV    SERVO_BAWAH,#25   
      LCALL TUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV    SERVO_BAWAH,#32   
      LCALL TUNDA
      MOV    SERVO_ATAS,#26
      LCALLTUNDA
      MOV   SERVO_BAWAH,#25
      LCALLTUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV    SERVO_BAWAH,#32   
      LCALL TUNDA
      MOV    SERVO_ATAS,#26
      LCALLTUNDA
      MOV   SERVO_BAWAH,#25
      LCALLTUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV    SERVO_BAWAH,#32   
      LCALL TUNDA
      MOV   SERVO_ATAS,#26      ;UBAH KE POSISI 66 DERAJAT
      MOV   SERVO_BAWAH,#32   ;UBAH KE POSISI 114 DERAJAT
      LCALLTUNDA         ;Panggil subrutin TUNDA
      MOV   SERVO_ATAS,#36      ;UBAH KE POSISI 126 DERAJAT
      MOV   SERVO_BAWAH,#34   ;UBAH KE POSISI 114 DERAJAT
      LCALLTUNDA         ;Panggil subrutin TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALLTUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALLTUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALLTUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALLTUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALLTUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALLTUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALLTUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALLTUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALLTUNDA
      LJMP   MUNDUR1

MUNDUR2:   MOV   P3,#11111100B      ;Non-aktifkan LED 2
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL   TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan1
      LJMP   BABI

Program 2: Kiri dan Kanan
Code:
KIRI:      MOV   P3,#01111100B      ;Aktifkan LED 1
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALLTUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan

KIRI1:      JNB   P2.3,KIRI11
      LJMP   STOP

KIRI11:   JNB   P2.6,KIRI2
      MOV   P3,#01111100B
      CLR   A
      MOV   R1,A
      MOV   R2,A
      MOV   R3,A
      MOV   R4,A
      MOV   R5,A      
      MOV    SERVO_ATAS,#36       ;UBAH KE POSISI 126 DERAJAT
      LCALLTUNDA         ;Panggil subrutin TUNDA
      MOV    SERVO_BAWAH,#25   ;UBAH KE POSISI 60 DERAJAT   
      LCALL TUNDA         ;Panggil subrutin TUNDA


KIRI3:   JNB   P2.3,KIRI4
      LJMP   STOP

KIRI4:   JNB   P2.6,KIRI2
      MOV   P3,#01111100B      ;Aktifkan LED 1
      MOV    SERVO_ATAS,#26       ;UBAH KE POSISI 66 DERAJAT
      MOV   SERVO_BAWAH,#25   ;UBAH KE POSISI 60 DERAJAT
      LCALLTUNDA         ;Panggil subrutin TUNDA
      MOV   SERVO_ATAS,#36      ;UBAH KE POSISI 126 DERAJAT
      MOV   SERVO_BAWAH,#23   ;UBAH KE POSISI 48 DERAJAT
      LCALLTUNDA         ;Panggil subrutin TUNDA
      SJMP   KIRI3

KIRI2:   MOV   P3,#11111100B         ;Non-aktifkan LED 1
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL   TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan1
      LJMP   BABI

KANAN:   MOV   P3,#11101100B      ;Aktifkan LED 3
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan2
      
KANAN1:   JNB   P2.3,KANAN11
      LJMP   STOP

KANAN11:   JNB   P2.7,KANAN2
      MOV   P3,#11101100B      ;Aktifkan LED 3
      CLR   A
      MOV   R1,A
      MOV   R2,A
      MOV   R3,A
      MOV   R4,A
      MOV   R5,A
      MOV    SERVO_ATAS,#26       ;UBAH KE POSISI 66 DERAJAT
      LCALL TUNDA         ;Panggil subrutin TUNDA
      MOV    SERVO_BAWAH,#32   ;UBAH KE POSISI 102 DERAJAT
      LCALL TUNDA         ;Panggil subrutin TUNDA

KANAN3:   JNB   P2.3,KANAN4
      LJMP   STOP

KANAN4:   JNB   P2.7,KANAN2
      MOV   P3,#11101100B      ;Aktifkan LED 3
      MOV    SERVO_ATAS,#36       ;UBAH KE POSISI 126 DERAJAT
      MOV   SERVO_BAWAH,#32   ;UBAH KE POSISI 102 DERAJAT
      LCALL TUNDA         ;Panggil subrutin TUNDA
      MOV   SERVO_ATAS,#26      ;UBAH KE POSISI 66 DERAJAT
      MOV   SERVO_BAWAH,#34   ;UBAH KE POSISI 114 DERAJAT
      LCALL TUNDA         ;Panggil subrutin TUNDA
      SJMP   KANAN3

KANAN2:   MOV   P3,#11111100B      ;Non-aktifkan LED 3
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan1
      LJMP   BABI

Program 3: Mundur dan tampilan LCD
Code:
MUNDUR_LAGI:   
MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan5
      
MUNDUR_LAGI1:
      JNB   P2.3,MUNDUR_LAGI11
      LJMP   STOP

MUNDUR_LAGI11:
      JNB   P2.2,KINGKONG
      ACALL SINI

KINGKONG:
ACALL MUNDUR_LAGI2
SINI:      CLR   A
      MOV   R1,A
      MOV   R2,A
      MOV   R3,A
      MOV   R4,A
      MOV   R5,A
      MOV    SERVO_ATAS,#26
      LCALL  TUNDA
      MOV    SERVO_BAWAH,#25   
      LCALL TUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV    SERVO_ATAS,#26
      LCALL TUNDA
      MOV    SERVO_BAWAH,#25   
      LCALL TUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      LCALL TUNDA
      MOV   SERVO_BAWAH,#25
      LCALL TUNDA
      MOV    SERVO_ATAS,#36
      LCALL TUNDA
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      MOV   SERVO_ATAS,#36
      MOV   SERVO_BAWAH,#34
      LCALL TUNDA
      MOV   SERVO_ATAS,#26
      MOV   SERVO_BAWAH,#32
      LCALL TUNDA
      LJMP   MUNDUR_LAGI1

MUNDUR_LAGI2:   
MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan1
      LJMP   BABI

STOP:      MOV   P3,#11111100B      ;Non-aktifkan semua LED
      MOV   SERVO_ATAS,#30
      MOV   SERVO_BAWAH,#30
      LCALL TUNDA
      CLR   A
      MOV   R5,A
      mov   R1,#03Fh
      acall   write_inst
      acall   write_inst
      mov   R1,#0Dh
      acall   write_inst
      mov   R1,#06h
      acall   write_inst
      mov   R1,#01h
      acall   write_inst
      mov   R1,#0Ch
      acall   write_inst
      acall   tulisan4
      LJMP   START1

      
write_inst:
   mov   P1,#0h      ;untuk memuliskan
   mov   P0,R1      ;intruksi ke LCD
   setb   P1.1      ;module
   clr   P1.1
   acall   delay   
   ret

write_data:
   mov   P1,#01      ;untuk menuliskan
   mov   P0,R1      ;data ke LCD
   setb   P1.1      ;module
   clr   P1.1
   acall   delay
   ret

delay:   mov   R0,#0      ;Isi R0 dengan 0
delay1: mov   R5,#50h   ;Isi R5 dengan 50
   djnz   R5,$      ;R5=R5-1,jika R5 belum 0,ulangi lagi
   djnz   R0,delay1   ;R0=R0-1,jika R0 belum 0,ulangi delay1
   ret         ;Kembali ke alamat setelah perintah
Ldelay: mov   R2,#0f0h   ;Isi R2 dengan 255
Ld1:   acall   delay      ;Panggil subrutin delay
   djnz   R2,Ld1   ;R2=R2-1,jika R2 belum 0,ulangi Ld1
   ret         ;Kembali ke alamat setelah perintah

tulis:   mov   R4,#4      ;Isi R4 dengan 4 ( menunjukkan banyak halaman )
   mov   DPTR,#Haline   ;Isi data pointer dengan alamat Haline
   SJMP   barisa      ;Kembali ke subrutin baris a

tulisan:
   mov   R4,#1         ;Isi R4 dengan 1 ( menunjukkan banyak halaman )
   MOV   DPTR,#MACAN   ;Isi data pointer dengan alamat MACAN
   sjmp   barisa         ;Kembali ke subrutin baris a

tulisan1:
   mov   R4,#1
   MOV   DPTR,#SINGA
   SJMP   barisa

tulisan2:
   mov   R4,#1
   MOV   DPTR,#MONYET
   SJMP   barisa

tulisan3:
   mov   R4,#1
   MOV   DPTR,#BUAYA
   SJMP   barisa

tulisan4:
   mov   R4,#1
   MOV   DPTR,#TIKUS
   SJMP   barisa

tulisan5:
   mov   R4,#1
   MOV   DPTR,#KUDA
   SJMP   barisa


barisa:   mov   R3,#16         ;Isi R3 dengan 16 ( menunjukkan banyak karakter )
   mov   R1,#80h      ;Isi R1 dengan P1
   acall   write_inst      ;Panggil subrutin write_inst
tulis1: clr   A         ;Clear Akumulator
   movc   A,@A+DPTR      ;Masukkan data ke n ke A
   mov   R1,A         ;Isi R1 dengan Akumulator
   Inc   DPTR         ;Naikkan data pointer
   acall   write_data      ;Panggil subrutin write_data
   djnz   R3,tulis1      ;R3=R3-1,jika R3 belum 0,ulangi tulis1
barisb:   mov   R3,#16         ;Isi R3 dengan 16 ( menunjukkan banyak karakter )
   mov   R1,#0C0h      ;Isi R1 dengan decimal 12
   acall   write_inst      ;Panggil subrutin write_inst
tulis2: clr   A         ;Clr Akumulator
   movc   A,@A+DPTR      ;Masukkan data ke n ke A
   mov   R1,A         ;Isi R1 dengan Akumulator
   Inc   DPTR         ;Naikkan data pointer
   acall   write_data      ;Panggil subrutin write_data
   djnz   R3,tulis2      ;R3=R3-1,jika R3 belum 0,ulagi tulis2
   acall   Ldelay         ;Panggil subrutin Ldelay
   djnz   R4,barisa      ;R4=R4-1,jika R4 belum 0,ulagi barisa
   ret            ;Kembali ke alamat setelah perintah
mulai:
   mov   R1,#03Fh
   acall   write_inst
   acall   write_inst
   mov   R1,#0Dh
   acall   write_inst
   mov   R1,#06h
   acall   write_inst
   mov   R1,#01h
   acall   write_inst
   mov   R1,#0Ch
   JB   P2.3,mulai
   acall   write_inst
   acall   tulis
   ljmp   START

Haline:    DB   '                '
      DB   ' Welcome  '
      DB   '    List-OneZero      '
      DB      '    LETS GO..GO...    '
      DB   '        Jalan Coy..          '
   
SINGA:   DB   '    Jalan Lagi Yuks      '
      DB   '      GO..GO..GO..      '

MACAN:   DB   '    Awas Penghalang  '
      DB   '    TURN A LEFT    '
   
MONYET:   DB   '  Awas Penghalang  '
      DB   '  TURN A RIGHT    '

BUAYA:   DB   '  Awas Penghalang  '
      DB   '  GO BACK COY  .. '
   
TIKUS:   DB   '    Do Not MOVE    '
      DB   '      STOP Bro...      '
   
KUDA:   DB   '      DANGER....      '
      DB   '  Be Carefull Dab    '
      END

Untuk Lebih Simple baterai Setelah Penghitungan Adalah 12 Volt , Yg Gampang Untuk Dibawa Kemana-Mana

#Pengalaman Dikutip Dari Diary , Yg Ribet Bawa Baterai >> Fytoko
Kembali Ke Atas Go down
https://evolution.sudanforums.net
 
Robot Walking
Kembali Ke Atas 
Halaman 1 dari 1

Permissions in this forum:Anda tidak dapat menjawab topik
™Hacker Evolution Indonesia™ :: Robotika-
Navigasi: