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