Thursday 18 February 2016

Menghidupkan Sebuah Display 7 Segment LED Dengan Bahasa Assembly.


 Circuit diagram:

Program:
;--------------------------------------------------------------
; 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
Comments
0 Comments
Facebook Comments by otak einstein

0 comments:

Post a Comment