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

Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
Deney 6
Amaç:
Bu deneyin amacı, öğrencilere Timer modülünün 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.
;Bu program zamanlayıcı-0 kesmesini kullanarak ekrana birer artan sayıları yazar.
LCD_DATA EQU P0
LCD_RS
EQU P2.0
LCD_RW
EQU P2.1
LCD_E
EQU P2.2
SAYI
EQU 30H
DIJIT3
EQU 31H
; Yüzler hanesi
DIJIT2
EQU 32H
; Onlar hanesi
DIJIT1
EQU 33H
; Birler hanesi
TAMAM
EQU 20H.0
;Reset Vektör
ORG 0000H
LJMP ANA
;Ana program başlangıcına dallan
ORG 000BH
LJMP TIMER0_INT
;Zamanlayıcı-O kesme vektör adresi
ORG 0030H
;Program başlangıcı
ANA: MOV
SAYI,#00
MOV
DIJIT3,#00
MOV
DIJIT2,#00
MOV
DIJIT1,#00
CLR
TAMAM
LCALL
RESETLEME
LCALL
LINE1
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
MOV
MOV
MOV
MOV
MOV
SETB
MOV
TEKRAR: JNB
CLR
LCALL
LCALL
LCALL
JMP
IE,#00H
;Zamanlayıcı-O kesmesini yetkile
TCON,#00
TMOD,#01H
;Zamanlayıcı-1 16 bit
TH0,#4CH
;4C00h 5Oms gecikme
TL0,#00H
TR0
; Zamanlayıcı-o çalıştır
IE,#82H
TAMAM,$
; TAMAM=O ise bekle
TAMAM
DIJIT_AYIR
LINE1
LCD_GOSTER
TEKRAR
;Zamanlayıcı-0 kesme hizmet alt yordamı
TIMER0_INT:
CLR
ET0
CLR
TF0
CLR
TR0
MOV
TH0,#4CH
MOV
TL0,#00H
SETB
TR0
INC
SAYI
SETB
TAMAM
SETB
ET0
RETI
;Zamanlayıcı kesmesini yetkisizle
;Zamanlayıcı-0 durdur
;4CH 5Oms gecikme
;Zamanlayıcı-0 çalıştır
;SAYI=SAYI+1
;Zamanlayıcı kesmesini tekrar yetkile
;SAYI değişkenini ondalık olarak hanelerine ayırır
DIJIT_AYIR:
MOV
A,SAYI
MOV
B,#100
DIV
AB
;A=bölüm,B=Kalan
ADD
A,#48
;A daki sa yı yı ASCII ye çevir.
MOV
DIJIT3,A
;ASCII ye çevrilmiş hane değerini
; DIJIT değişkenine 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 değeri LCD ekrana yazar
LCD_GOSTER:
MOV A,DIJIT3
LCALL
DATA_GONDER
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
MOV A,DIJIT2
LCALL
DATA_GONDER
MOV A,DIJIT1
LCALL
DATA_GONDER
RET
CLOCK:
RET
LINE1:
CLR
CLR
LCALL
SETB
LCALL
CLR
LCALL
LCD_RW
LCD_E
DELAY
LCD_E
DELAY
LCD_E
DELAY
MOV
CLR
LCALL
LCD_DATA,#1
LCD_RS
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 ;30h komutunu LCD ye gönder
CLR LCD_RS
LCALL
CLOCK
MOV LCD_DATA,#30H
CLR LCD_RS
LCALL
CLOCK
MOV LCD_DATA,#3CH ;Fonksiyon belirleme
CLR LCD_RS
LCALL
CLOCK
MOV LCD_DATA,#0CH ;LCD aç
CLR LCD_RS
LCALL
CLOCK
MOV LCD_DATA,#01H ;LCDsII
CLR LCD_RS
Abant İzzet Baysal Üniversitesi
Elek.-Elekt. Müh. Bölümü
Mikroişlemciler Laboratuvarı I
LCALL
CLOCK
MOV LCD_DATA,#06H
CLR LCD_RS
LCALL
CLOCK
;Giris modu
RET
END
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.