Member baru? Bingung? Perlu bantuan? Silakan baca panduan singkat untuk ikut berdiskusi.

Selamat datang, Pengunjung. Silahkan masuk atau mendaftar. Apakah anda lupa aktivasi email?

Desember 04, 2021, 02:34:49 PM

Masuk dengan nama pengguna, kata sandi dan lama sesi

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139668
  • Total Topik: 10408
  • Online Today: 34
  • Online Ever: 441
  • (Desember 18, 2011, 12:48:51 AM)
Pengguna Online
Users: 0
Guests: 20
Total: 20

Ikuti ForSa

ForSa on FB ForSa on Twitter

Penulis Topik: bantuan dong...  (Dibaca 2731 kali)

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

Offline erik hardianto

  • Dosen
  • ****
  • Tulisan: 111
  • IQ: 10
bantuan dong...
« pada: April 16, 2009, 06:58:08 AM »
bahasa assembly pake AT89C51

1. cara program buat keluarin data dari port.
2. cara terima input ke port. (data paralel)
3. inisialisasi port I/O. programnya kaya apa ya?
4. contoh prog, LCD
makasih,,,

Offline kuin

  • Dosen
  • ****
  • Tulisan: 121
  • IQ: 0
  • Gender: Pria
Re: bantuan dong...
« Jawab #1 pada: Mei 11, 2010, 08:26:05 PM »
$mod51
Org   00h      ;alamat awal program
ljmp    isidata
org     0003h           ; vektor external interrupt 0
   rs      bit     p3.6
   en      bit     p3.7
   dispclr equ     00000001b          ; display clear
   funcset equ     00111000b          ; interface data length 8-bit
   entrmod equ     00000110b          ; increment, no display shift
   dispon  equ     00001100b          ; display on cursor off blink off
   cursor  equ     00001110b          ; display on cursor on  blink off
   blink   equ     00001101b       ; display on cu
;------------------------------------------
;program utama
;------------------------------------------
isidata:
   lcall   initLCD
        setb    EX0
        setb    ET0
        mov     IP,#00000011b
        mov     sp,#1fh
        mov     tmod,#01h         ;  timer 0 16 bit
        mov     th0,#60             ;  100 kristal 12MHz --> tundaan 0.01 detik
        mov     tl0,#176          ;  0
        setb    tr0
        setb    EA
;-------------------------------------------
   mov    a,#1
   mov    dptr,#judul1
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul2
   lcall   kirimlcd2
   lcall   tunda
   lcall   tunda
;-------------------------------------------
mulai:
   mov    a,p1
cek1:
   cjne    a,#11111110b,cek2
   mov    a,#1
   mov    dptr,#utara
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek2:
   cjne    a,#11111101b,cek3
   mov    a,#1
   mov    dptr,#timurlaut
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek3:
   cjne    a,#11111011b,cek4
   mov    a,#1
   mov    dptr,#timur
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek4:
   cjne    a,#11110111b,cek5
   mov    a,#1
   mov    dptr,#tenggara
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek5:
   cjne    a,#11101111b,cek6
   mov    a,#1
   mov    dptr,#selatan
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek6:
   cjne    a,#10111111b,cek7
   mov    a,#1
   mov    dptr,#baratdaya
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek7:
   cjne    a,#01111111b,cek8
   mov    a,#1
   mov    dptr,#barat
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
cek8:
   cjne    a,#11011111b,ulang
   mov    a,#1
   mov    dptr,#baratlaut
   lcall   kirimlcd1
   mov   a,#1
   mov   dptr,#judul
   lcall   kirimlcd2
ulang:
   ljmp   mulai
;-----------------------------------------
;kirim data ke LCD baris 1 dan 2
;-----------------------------------------
kirimlcd1:
   lcall   wrl1
   lcall   outstr
   ret
kirimlcd2:
   lcall   wrl2
   lcall   outstr1
   ret
;---------------------------------------------
; rutin LCD
;---------------------------------------------
initlcd:
        mov    a,#dispclr
        lcall  wir
        lcall  delaylcd
        mov    a,#funcset
        lcall  wir
        mov    a,#dispon
        lcall  wir
        mov    a,#entrmod
        lcall  wir
        ret
delaylcd:
        mov     r6,#20h
loopdelaylcd:
        mov     r7,#0
        djnz    r7,$
        djnz    r6,loopdelaylcd
        reti
wrl1:
     ;   mov    a,#1
        add    a,#80h
        dec    a
        sjmp   wrline
wrl2:
     ;   mov    a,#1
        add    a,#0c0h
        dec    a
wrline:
        mov    p0,a   ;data LCD dikeluarkan ke port 0
        lcall   wir
        ret

outstr:
        ;push    acc
        sjmp    outstr2
outstrloop:
        lcall   wdr
        inc     dptr
outstr2:
        clr     a
        movc    a,@a+dptr
        jnz     outstrloop
        ;pop     acc
        ret
outstr1:
        ;push    acc
        sjmp    outstr3
outstrloop1:
        lcall   wdr
        inc     dptr
outstr3:
        clr     a
        movc    a,@a+dptr
        jnz     outstrloop1
        ;pop     acc
        ret
wir:
        clr    rs                ; rs = 0 -> write to instruction register
        setb   en
        sjmp   wout
wdr:
        setb   rs
        setb   en
wout:
        mov    p0,a
        mov    r6,#100
        djnz   r6,$
        clr    en
        ret
;---------------------------------------------------
; Program waktu tunda 6 detik
;---------------------------------------------------
Tunda:
   Acall   Delai_3s   ;delai 3 detik
Delai_3s:
   Mov   R1,#8      ;pindahkan data 8 ke alamat R1
LoopA:
   Mov   R2,#250      ;pindahkan data 250 ke alamat R2
LoopB:
   Mov   R3,#250      ;pindahkan data 250 ke alamat R3
LoopC:
   Djnz   R3,LoopC
   Djnz   R2,LoopB
   Djnz   R1,LoopA
   Ret
;------------------------------------------
;tampilan data LCD 8 bit
;------------------------------------------
judul:       db 'speed = 00.00 m/s',0
judul1:      db 'TGA Agustus 2007 ',0
judul2:      db '    Arah angin   ',0
utara:       db 'UTARA        ',0
timurlaut:    db 'TIMUR LAUT       ',0
timur:       db 'TIMUR            ',0
tenggara:    db 'TENGGARA         ',0
selatan:    db 'SELATAN          ',0
baratdaya:    db 'BARAT DAYA       ',0
barat:       db 'BARAT            ',0
baratlaut:    db 'BARAT LAUT       ',0
;-------------------------------------------
end

 

Related Topics

  Subyek / Dimulai oleh Jawaban Tulisan terakhir
18 Jawaban
221052 Dilihat
Tulisan terakhir November 15, 2015, 10:15:32 AM
oleh Monox D. I-Fly
1 Jawaban
3675 Dilihat
Tulisan terakhir Juli 31, 2009, 06:22:30 AM
oleh DMS88
16 Jawaban
10343 Dilihat
Tulisan terakhir Juli 25, 2009, 09:21:16 PM
oleh Idad
3 Jawaban
10686 Dilihat
Tulisan terakhir Mei 23, 2009, 11:40:32 PM
oleh herlambang
1 Jawaban
2284 Dilihat
Tulisan terakhir September 02, 2010, 12:10:25 AM
oleh Nabih