Mikroişlemciler Dersi 1. Ödevler

Mikroişlemciler dersinde kullanılan programlar ile örnek çalışmaların bulunduğu PIC16F877 Alet Çantası yazısından sonra 1. haftada verilen programları paylaşayım dedim.
Not : Programlar deney setinde çalıştırılmamıştır.

Birinci Öğretim Ödevi
RB0 pinine bağlı olan bir tuşa her basıldığında kesme üreten ve bu kesmeyle
PD0 – PD7 pinlerine bağlı olan 8 adet ilk başta sönük bulunan ledlerde
İlk tuşa basıldığında ilk ledi yakan ve her tuşa basıldığında yanan ledi bir sola kaydıran
Devreyi tasarlayarak çalıştırınız.

İkinci Öğretim Ödevi
RB0 pinine bağlı olan bir tuşa her basıldığında kesme üreten ve PD4-PD7 pinlerine bağlı olan 4 adet led ile 0-9 arasında binary sayan bir devreyi tasarlayarak çalıştırınız.

İndirme Adresleri
Mikroişlemciler Birinci Öğretim Ödev 1 indir

Mikroişlemciler İkinci Öğretim Ödev 1 indir

BİRİNCİ ÖĞRETİM ÖDEVİ
Birinci Öğretim Ödevinin Kodları

	list p=16F877
	include "p16f877.inc"

	Degisken equ 0x21

	ORG 0
	goto Ana_program
	clrf PCLATH
	ORG 4

Kesme
 	movf Degisken,0           ; Workinge değişken değeri atılıyor
	movwf PORTD               ; Portd ye working değeri atılıyor

	btfss Degisken,7	      ; Son led yanıyorsa bir komut atlıyarak 2 defa sola kayarak tüm ledler sönmeden tekrar ilk ledi yakar hale geliyor.
	goto Bir_Defa_Sola_Kay
	rlf Degisken,1            ; Buraya son led yanıkken ancak gelir.

Bir_Defa_Sola_Kay
	rlf Degisken,1
	bcf INTCON,INTF           ; Flag indiriliyor tekrar kesmeyi algılayabilsin
	retfie                    ; Dönüş

Ana_program
	clrf PORTD                ; Portd sıfırlanıyor
	clrf PORTB                ; Portb sıfırlanıyor

	movlw d'1'                ; Değişkene 1 değeri veriliyor
	movwf Degisken

	banksel TRISD
	clrf TRISD                ; D Portu çıkış

	movlw d'1'
	movwf TRISB               ; B portunun ilk pini buton için giriş olarak ayarlanıyor

	movlw b'01000000'         ; Pull-up dirençleri aktif
	movwf OPTION_REG

	movlw b'11010000'         ; Kesmelere aktif, RB0 flag indiriliyor
	movwf INTCON

	banksel PORTD

Dongu
	goto Dongu                ; Dongu
end

Birinci Öğretim Ödevinin Devre Şeması
Mikroişlemciler Proteus Devre Şeması

İKİNCİ ÖĞRETİM ÖDEVİ
İkinci Öğretim Ödevinin Kodları


	list p=16F877
	#include <P16F877.INC>

	ORG 0
	goto Ana_Program
	Sayac equ 0x21
	ORG 4

Kesme
	incf Sayac			   ; Sayac 1 artır

Kontrol_4_bit
	btfss Sayac,3		   ; Sayacın 4. biti 1 olmuşsa bir satır atlıyarak 2.biti kontrol etmeye gider. 1 Olmamışsa yazdıra dallanır.
	goto Yazdir	 

Kontrol_2_bit
	btfss Sayac,1          ; Sayacın 4. biti 1 olmuşsa buraya gelir, Burdada 2. biti kontrol eder 2. bit 1 değilse Yazdıra dallanır. Eğer 2. bitte 1 olmuşsa Sayac değeri 00001010 olmuş demektir buda 10 na denk gelir ve 1 komut atlıyarak Sayac değerini sıfırlar.
	goto Yazdir

	clrf Sayac             ; 10 olmuşda Sayac sıfırlanır.

Yazdir
	swapf Sayac,1		   ; Sayac değişkenindeki en önemsiz 4 bitle diğer 4 bitin yerini değiştirir.
	movf Sayac,0		   ; Sayac değerini working registırına atar
	movwf PORTD			   ; Workingteki değeri PORTD ye atar
	swapf Sayac,1		   ; Sayac değişkenindeki en önemsiz 4 bitle diğer 4 bitin yerini değiştirir. Eski haline döndürür.
	bcf INTCON,INTF		   ; Flagı indirirki tekrar kesme oluşabilsin.
	retfie                 ; Dongüye dönüş.

Ana_Program
	clrf Sayac			    ; Sayac sıfırla
	clrf PORTD				; PORTD sıfırla

	bcf STATUS,RP1          ; Bank1 e geç
	bsf STATUS,RP0

	clrf TRISD				; D Portunun tüm pinleri çıkış

	movlw b'00000001'		; Tuş için Portb nin ilk biti giriş
	movwf TRISB

	movlw b'01000000'		; Pull-up dirençleri aktif, Düşen kenarda kesme
	movwf OPTION_REG	

	movlw b'11010000'		; Kesmeler aktif, RB0 Flag indirildi
	movwf INTCON

	bcf STATUS,RP0			; Bank0 geç

	movlw b'00000001'
	movwf PORTB

Dongu
	goto Dongu				; Kesme oluşana kadar döngü
	end

İkinci Öğretim Ödevinin Devre Şeması
Mikroişlemciler Proteus Devre Şeması

  1. Ortagım teşekkürler :D

  2. oyle olsun bakalım

Yorum Yap


Not - Bunları KullanabilirsinizHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
Resimde gordugunuz kodu kutucuga yazin.
Anti-spam resmi