Counter 7Segment dengan AVR Assembler dari 00 – 99

Kali ini saya akan memberikan tutorial untuk menampilkan display angka pada Seven Segment dengan program AVR Studio atau winAVR.
Rangkaian Skematiknya sbb:
cara untuk menampilkan tulisan pada Seven Segment dengan AVR Studio ini, cara pertama listing programnya sebagai berikut:

 

;Program pencacah dari 00 s/d 99 dengan tampilan 7-segment
 .include "m8535def.inc"    
 .def angka =r18    
 .org 0x0000    
 rjmp utama    
 utama:     
 ldi r16, low(RAMEND)    
 out SPL, r16    
 ldi r16, high(RAMEND)    
 out SPH, r16    
 ldi r16, 0xff                      ;inisialisasi port A dan Port B sebagai output
 out DDRB, r16     
 out portb,r16    
 out DDRA, r16    
 out portA,r16    
 atas2:    
 clr r25                              ;inisialisasi counter=0
 atas:    
 mov r4,r25    
 ulangi:     
 rcall bagi    
 push r16              ;simpan sementara "hasilbagi" pada stack
 mov angka,r4    ;salin "sisa hasilbagi" ke "angka"
 rcall konversi    ;konversi "sisa bagi" menjadi "kode tampilan" 7-segmen
 mov r9,r0           ;simpan "kode tampilan" ke r9
 pop angka           ;ambil kembali "hasilbagi" dari stack ke "angka"
 rcall konversi    ;konversi "hasilbagi" menjadi "kode tampilan" 7-segmen
 mov r10,r0        ;simpan "kode tampilan" ke r10
 tunda:     
 ldi r20,$3                            
 tunda1:      ldi r21,255        
 tunda2:       
 out PORTB,r9                ;Keluarkan ke Port B --> 7-segmen
 ldi r19,0b01111111    ; nyalakan 7-segmen
 out PORTA,r19    
 rcall delayscan             ;Panggil rutin delay
 out PORTB,r10             ;Keluarkan ke Port B --> 7-segmen
 ldi r19,0b10111111    ;nyalakan 7-segmen
 out PORTA,r19
 rcall delayscan             ;Panggil rutin delay
 dec r21            
 brne tunda2        
 dec r20            
 brne tunda1        
 inc r25    
 cpi r25,100    
 brne atas    
 rjmp atas2    
 konversi:    
 clr r2    
 ldi zh,high(Numerik<<1)    ;Isikan r31:r30 dengan alamat Numerik
 ldi zl,low(Numerik<<1)     
 add zl,angka                              ;Tambahkan z dengan angka
 adc zh, r2     
 lpm                                               ;salin data numerik ke r0 yang ditunjuk oleh z
 ret    
 delayscan:     
 ldi r16,20            
 loop1:    
 ldi r17,100
 loop2:    
 dec r17    
 brne loop2    
 dec r16        
 brne loop1    
 ret    
 bagi:    
 ;r4 = bilangan yang akan dibagi (dividend)
 ;r3 = bilangan pembagi (divisor)
 ldi r16,10    
 mov r3,r16    
 ldi r16,0                          ;inisialisasi hasilbagi
 lagi:    cp r4,r3              ;r4 = dividend/sisa dan r3 = pembagi
 brlo ENDWHILE    
 inc r16                              ;r16 = hasilbagi
 sub r4,r3    
 rjmp lagi    
 ENDWHILE:    
 ret    
 Numerik:    ;Tabel konversi kode 7-segmen
 .db    0xc0,    0xf9,    0xa4,    0xb0,    0x99,    0x92,    0x82,    0xf8,    0x80,    0x90
 ;     0     1     2     3     4     5    6     7    8    9
Program di atas fungsinya yaitu untuk menampilkan angka 00 sampai 99 pada 7 segment display menggunakan AVR Assembler.
Selamat Mencoba :DPCB 7segment bisa di download disini

Iklan

About zhiescreamous

Pecinta Lingkungan Hidup, Persaudaraan Gn.Puntang Indonesia | Computer Enggineering | UNIKOM

Posted on 15/11/2012, in Mikrokontroller. Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: