deney7 föyü - Alper BAYRAK - Abant İzzet Baysal Üniversitesi

Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Deney 7
Amaç:
Bu deneyin amacı, öğrencilere harici kesmenin kullanımını öğretmektir.
Deney 1 :
1. ISIS programını açın.
2. Şekil 1'deki tasarımı oluşturun.
Şekil 1. Deney tasarımı
3. Projeyi, masaüstünde oluşturmuş olduğunuz bir klasörün içine kaydedin.
4. Aynı klasörün içine “zamanlayici_kesme.asm”, isim ve uzantısı ile, bir dosya oluşturun.
5. Source->Add/remove source files seçeneğini tıklayın ve Şekil 2'deki gibi asm dosyanızı
projeye ekleyin.
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Şekil 2.
6. Source seçeneğinin altında, eklemiş olduğunuz dosyayı açın ve aşağıdaki programı yazın.
LCD_DATA EQU P0
LCD_RS
EQU P2.0
LCD_RW
EQU P2.1
LCD_E
EQU P2.2
S1
EQU P2.7 ;S1 anahtari P2 portunun 7 nolu ucuna bagli
SAYI
EQU 30H
DIJIT3
EQU 31H ;Yüzler hanesi
DIJIT2
EQU 32H ;Onlar hanesi
DIJIT1
EQU 33H ;Birler hanesi
;Reset Vektör
ORG 0000H
LJMP ANA
;Ana program baslangicina dallan
ORG
0003H
;INTO kesme vektör adresi
LJMP INT0_INT
ORG 0030H
;Program baslangici
ANA: MOV SAYI,#00
MOV DIJIT3,#00
MOV DIJIT2,#00
MOV DIJIT1,#00
LCALL
RESETLEME
LCALL
LINE1
MOV IE,#81H
;INTO kesmesini yetkile
SETB IT0
;INTO düsen kenar tetiklemeli
TEKRAR: SETB
S1
;P2.7=1 portu giris olarak ayarla
JB
S1,$
;P2.7=0 ise bekle
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
JNB
S1,$
;P2.7=lise bekle
INC SAYI
LCALL
DIJIT_AYIR
LCALL
LINE1
LCALL
LCD_GOSTER
JMP TEKRAR
;Harici kesme-0 Kesme hizmet altyordami
INT0_INT: CLR
EX0;
INC SAYI
LCALL
DIJIT_AYIR
LCALL
LINE1
LCALL
LCD_GOSTER
SETB EX0
RETI
;SAYI degiskenini ondalik olarak hanelerine ayirir
DIJIT_AYIR:
MOV A,SAYI
MOV B,#100
DIV AB
;A=bölüm,B=Kalan
ADD A,#48
;A daki sa yi yi ASCII ye cevir.
MOV DIJIT3,A
;ASCII ye cevrilmis hane degerini
; DIJIT degiskenine depola
MOV A,B
MOV B,#10
DIV AB
ADD A,#48
MOV DIJIT2,A
MOV A,B
ADD A,#48
MOV DIJIT1,A
RET
;Her bir hanedeki degeri LCD ekrana yazar
LCD_GOSTER:
MOV A,DIJIT3
LCALL
DATA_GONDER
MOV A,DIJIT2
LCALL
DATA_GONDER
MOV A,DIJIT1
LCALL
DATA_GONDER
RET
CLOCK:
CLR LCD_RW
CLR LCD_E
LCALL
DELAY
SETB LCD_E
LCALL
DELAY
CLR LCD_E
LCALL
DELAY
RET
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
LINE1:
MOV LCD_DATA,#128
CLR LCD_RS
LCALL
CLOCK
RET
DATA_GONDER:
MOV
LCD_DATA,A
SETB
LCD_RS
LCALL
CLOCK
RET
DELAY:
MOV
R7,#5
LOOP1:
NOP
NOP
NOP
NOP
NOP
DJNZ
R1,LOOP1
RET
RESETLEME:
MOV
LCD_DATA,#30H
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#30H
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#30H
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#3CH
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#0CH
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#01H
CLR
LCD_RS
LCALL
CLOCK
MOV
LCD_DATA,#06H
CLR
LCD_RS
LCALL
CLOCK
RET
END
;30h komutunu LCD ye gönder
;Fonksiyon belirleme
;LCD ac
;LCD sil
;Giris modu
7.
Kodu derleyin.
8.
Mikrodenetleyicinin üzerine çift tıklayarak, Şekil 3'deki gibi hex dosyasını
mikrodenetleyiciye yükleyin.Şekil 3.
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Şekil 3.