Monday, 22 October 2012

membuat tampilan seven segment tanpa decoder pada bahasa assembly


di blog ini gw berbagi ilmu aja cara membuat seven segment tanpa menggunakan decoder,,,
langsung aja liat di bawah,,,

Program cara 1:
;--------------------------------------------------------------
; 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,#22h          ;keluarkan kode angka 0 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#77h         ;keluarkan kode angka 1 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#0A4h        ;keluarkan kode angka 2 port 0
      Acall Delay            ;panggil sub routine delay
      Mov    P0,#25h         ;keluarkan kode angka 3 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#71h         ;keluarkan kode angka 4 port 0
      Acall  Delay            ;panggil sub routine delay






Mov         P0,#29h         ; keluakan kode angka 5 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#28h         ; Keluarkan kode anka 6 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#67h         ; Keluarkan kode anka 7 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#20h         ; Keluarkan kode anka 8 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#21h         ; Keluarkan kode anka 9 port 0
Acall       Delay           ; Panggil sub routine delay
SJMP        Mulai           ;Lompat kealamat dengan label mulai

;-----------------
;Sub routine delay
;-----------------
Delay   :  Mov  R0,#0ffh    ; isi Register R0 dengan FF (Hex)    
Delay1  :  Mov  R1,#0ffh    ; isi Register R1 dengan FF (Hex)    
Delay 2 :  DJNZ R1,Delay    ; Kurangi R1 dengan 1, bila hasil
                            ; belum sama dengan 0, maka lompat
                            ; Ke delay 2
     DJNZ R0,Delay1   ; Kurangi R1 dengan 1, bila hasil
                      ; belum sama dengan 0, maka lompat
                      ; ke delay 1
     RET              ; Kembali ke alamat setelah perintah
                      ; “Acall Delay”
     END

Program cara 2
;
;menghidupkan display LED 7 segment
;untuk menampilakan angka 0 s/d 9 File name HL5,H51
;Cara 2 : data dambil dari alamat data array
;
      Org   0h
Mulai:
      Mov   R2,#10                  ; Jumlah angka numerik
      Mov   DPTR,#Numerik           ;
Next data:
      clr   A
      Movc  A,@A+DPTR
      Mov   P0,A                    ; Keluarkan data A ke
; port 0
inc   DPTR
      Acall Delay                   ; Panggil sub routine
; Delay
      DJNZ  R2,Nextdata             ; kurangi R2 dengan 1,
; bila hasil belum sama ; dengan 0 maka lompat  ; ke nextdata
SJMP mulai                    ; Lompat ke alamat
; dengan label Mulai   
     




;-----------------
;Sub routine delay
;-----------------
Delay :    Mov   R0, #0ffh         ; isi register R0 dengan ff
; (Hex)    
Delay1 :    Mov   R1, #0ffh         ; isi register R1 dengan ff
; (Hex)    
Delay2 :    DJNZ  R2, #Delay        ; kurangi R0 dengan 1, bila
; hasil belum sama dengan 0    ; maka lompat ke Delay1
RET                     ; Kembali ke alamat setelah
; perintah 'Acall Delay'
     
;-----------
;Lokasi data
;-----------
Numerik :
      DB 22h, 77h, 0A4h, 25h, 29h, 67h, 20h, 21h,
      END

2 comments:

  1. bang itu gimana deh kalo d avr studionya gak ada at89c51nya

    ReplyDelete
  2. bisa pakai mide51 untuk programming nya,,,

    ReplyDelete