Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

HARRAN ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
15 Nisan 2014
Mikroişlemciler
Ara Sınav---Sınav Süresi 90 Dk.
1) (10p) Mikroişlemcilerle Mikrodenetleyiceleri yapısal olarak ve işlevsel olarak karşılaştırarak avantaj ve
dezavantajlarını belirtiniz.
2) (40p) PIC16F877 ile tarla sulama otomasyonu tasarlanacaktır. Tarla 8 bölüme ayrılmış ve her bölme için
ayrı bir nem sensörü gömülmüştür. Nem sensörleri eğer bölgede sulamaya ihtiyaç var ise lojik 1, sulama
ihtiyacı yok ise lojik 0 çıkışı vermektedir. Eğer 8 nem sensöründen 4’ü veya daha fazlası lojik 1 sinyali
gönderiyor ise sulama motoru çalışacak, diğer durumlarda sulama motoru çalışmayacaktır. ( Nem sensörleri
PORTB’ye, Sulama motoru ise RA0’a bağlanacaktır.) (Kullandığınız mikroişlemcinin kristal frekansı 4MHz
olarak alınacaktır)
a) (30p) Yukarıdaki işlemleri gerçekleştiren assembler kodlarını yazınız.
b) (10p) Yukarıdaki işlemleri gerçekleştiren devreyi çiziniz. (clock devresi, besleme devresi ve reset devresi
dahil)
3) (20p) Aşağıda komuttan önceki hafıza içerikleri verilen registerların komuttan sonraki içeriklerini yazınız.
W=00011100 ß Komuttan önce
[21h]=10001000 ß Komuttan önce
XORWF 21h,W ß İşlenen Komut
W=00011100 ß Komuttan önce
[21h]=10001000 ß Komuttan önce
MOVF 21h,F ß İşlenen Komut
W=.......................................ß Komuttan sonra
W=.......................................ß Komuttan sonra
[21h]=..................................ß Komuttan sonra
[21h]=..................................ß Komuttan sonra
4) (30p) PIC16F877 ile Skorboard tasarlanacaktır. Skorboard devremizde 3
adet buton iki adet 7-Segment display bulunacaktır. RA0’a bağlı butona
basınca 1.Display’e, RA1’e bağlı butona basınca 2.Display’e bir
eklenecektir. RA2’ye bağlı olan reset butonuna basınca 1 ve 2. Displayler
sıfırlanacaktır. Displayler PORTB’ye bağlanacaktır. Display tetikleme
bitleri : RC0 lojik 1 olduğunda 1.Display, RC1 lojik 1 olduğunda
2.Display aktif olacaktır.
Yan kısımda ana kodları verilen ve yukarıdaki işlemleri gerçekleştiren alt
programları yazınız.
-- haneGoster [7-Segmentte gösterilecek olan digit1 ve digit2’yi gösterme]
-- tusbak1 [RA0’ı kontrol etme]
-- tusbak2 [RA1’i kontrol etme]
-- tusbak3 [RA2’yi kontrol etme]
-- birEkle1 [Digit1’e 1 ekleme]
-- birEkle2 [Digit2’ye 1 ekleme]
-- resetall [Tüm digitleri sıfırlama]
-- bekle [50 msn’lik bekleme]
-- kod [Sayıları Displaydeki değerlerine dönüştürme]
Başarılar,
Yrd.Doç.Dr.Nurettin BEŞLİ
basla
bsf
movlw
movwf
movwf
movlw
movwf
bcf
clrf
clrf
clrf
clrf
clrf
clrf
movlw
movwf
movwf
movwf
status,rp0
00h
trisb
trisc
FFh
trisa
status,rp0
digit1
digit2
portb
tus1
tus2
tus3
.50
sayac1
sayac2
sayac3
call
call
call
call
btfsc
call
btfsc
call
btfsc
call
goto
haneGoster
tusBak1
tusBak2
tusBak3
tus1,0
birEkle1
tus2,0
birEkle2
tus3,0
resetall
basla1
basla1
2013-2014 Mikroişlemciler Arasınavı Çözümleri
C.1-)
Mikroişlemcilerin avantajı :
Servis Kolaylığı : Modüller arızalandığı sadece ilgili modül değiştirilerek arıza
giderilebilir.
Mikrodenetleyicinin avantajları :
Boyut : Mikrodenetleyiciler mikroişlemcilere göre daha küçük boyuttadır.
Güç : Mikrodenetleyiciler daha az güç tüketirler.
Maliyet : Mikrodenetleyiciler daha az maliyetlidirler.
Performans : Mikrodenetleyiciler daha hızlı çalışırlar.
C.2-)
a)
list p=16F877A
include <p16F877A.inc>
statusequ
rp0 equ
portb equ
trisb equ
porta equ
trisa equ
say0 equ
say1 equ
say2 equ
03
05
06
86h
05
85h
20h
21h
22h
org 00
movlw 00
movwf PCLATH
goto basla
basla
bsf status,rp0
movlw FFh
movwf trisb
movlw 00h
movwf trisa
bcf status,rp0
tekrar
movf portb,w
movwf say0
movlw .08
movwf say2
clrf
say1
tekrar1
rlf
say0,f
btfsc status,0
incf
say1
decfsz say2
goto tekrar1
btfsc say1,3
bsf
porta,0
btfsc say1,4
bsf
porta,0
goto tekrar
end
C.3-)
W=00011100 ß Komuttan önce
[21h]=10001000 ß Komuttan önce
XORWF 21h,W ß İşlenen Komut
W=00011100 ß Komuttan önce
[21h]=10001000 ß Komuttan önce
MOVF 21h,F ß İşlenen Komut
W= 1001 0100ß Komuttan sonra
W= 00011100 ß Komuttan sonra
[21h]= 1000 1000 ß Komuttan sonra
[21h]= 10001000ß Komuttan sonra
C.4-)
list p=16F877A
include <p16F877A.inc>
statusequ 03
rp0 equ 05
portc equ 07
trisc equ 87h
portb equ 06
trisb equ 86h
porta equ 05
trisa equ 85h
digit1 equ 21h
digit2 equ 22h
sayac1 equ 28h
sayac2 equ 3Dh
sayac3 equ 3Eh
tus1 equ 3Ah
tus2 equ 3Bh
tus3 equ 3Ch
org 00h
movlw 0
movwf PCLATH
goto basla
basla
bsf status,rp0
movlw 00h
movwf trisb
movwf trisc
movlw FFh
movwf trisa
bcf status,rp0
clrf digit1
clrf digit2
clrf portb
clrf tus1
clrf tus2
clrf tus3
movlw
.1
movwf
adigit
movlw
.50
movwf
sayac1
movwf
movwf
basla1
call
call
call
call
btfsc
call
btfsc
call
btfsc
call
goto
sayac2
sayac3
haneGoster
tusBak1
tusBak2
tusBak3
tus1,0
birEkle1
tus2,0
birEkle2
tus3,0
resetall
basla1
haneGoster
movf digit2,w
call
kod
movwf portb
movlw
b'00000010'
movwf
portc
call bekle
clrf portb
clrf portc
movf digit1,w
call kod
movwf
portb
movlw
b'00000001'
movwf
portc
call bekle
return
tusBak1
btfss porta,0
goto tusBak21
btfsc tus1,0
goto tusBak31
decfsz
sayac
goto tusBak31
bsf tus1,0
goto tusBak31
tusBak21
clrf tus1
movlw
.50
movwf
tusBak31
return
sayac1
tusBak2
btfss porta,1
goto tusBak22
btfsc tus2,0
goto tusBak32
decfsz
sayac
goto tusBak32
bsf tus2,0
goto tusBak32
tusBak22
clrf tus2
movlw
.50
movwf
sayac2
tusBak32
return
tusBak3
btfss porta,2
goto tusBak23
btfsc tus3,0
goto tusBak33
decfsz
sayac
goto tusBak33
bsf tus3,0
goto tusBak33
tusBak23
clrf tus3
movlw
.50
movwf
sayac3
tusBak33
return
birEkle1
clrf tus1
incf digit1
return
birEkle2
clrf tus2
incf digit2
return
resetall
clrf tus3
clrf digit1
clrf digit2
return
kod
addwf PCL,1
retlw b'00111111'
retlw b'00000110'
retlw b'01011011'
retlw b'01001111'
retlw b'01100110'
retlw b'01101101'
retlw b'01111101'
retlw b'00000111'
retlw b'01111111'
retlw b'01101111'
end