Monday, October 22, 2012

Membuat Tampilan Seven Segment Tanpa Decoder Pada Bahasa Assembly


di blog ini gw menyebarkan ilmu aja cara menciptakan seven segment tanpa memakai decoder,,,
langsung aja liat di bawah,,,

Program cara 1:
;--------------------------------------------------------------
; Menghidupkan display LED 7 segment
;untuk menampilkan angka 0 s/d 9
;cara 1 : data pribadi dikeluarkan ke port yang bersangkutan
;---------------------------------------------------------------
     Org    0h
Mulai:
      Mov   P0,#22h          ;keluarkan arahan angka 0 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#77h         ;keluarkan arahan angka 1 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#0A4h        ;keluarkan arahan angka 2 port 0
      Acall Delay            ;panggil sub routine delay
      Mov    P0,#25h         ;keluarkan arahan angka 3 port 0
      Acall  Delay            ;panggil sub routine delay
      Mov    P0,#71h         ;keluarkan arahan angka 4 port 0
      Acall  Delay            ;panggil sub routine delay






Mov         P0,#29h         ; keluakan arahan angka 5 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#28h         ; Keluarkan arahan anka 6 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#67h         ; Keluarkan arahan anka 7 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#20h         ; Keluarkan arahan anka 8 port 0
Acall       Delay           ; Panggil sub routine delay
Mov         P0,#21h         ; Keluarkan arahan 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, kalau hasil
                            ; belum sama dengan 0, maka lompat
                            ; Ke delay 2
     DJNZ R0,Delay1   ; Kurangi R1 dengan 1, kalau hasil
                      ; belum sama dengan 0, maka lompat
                      ; ke delay 1
     RET              ; Kembali ke alamat sehabis 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,
; kalau 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

No comments:

Post a Comment