9-Pic-Zamanlama (Bekletme)
Zamanlama ve bekletme işlemi
Zamanlama denildiğinde aslında belirli bir süre MCU işlem yatırmama ya da işlem yaparken zamanın önemli olduğu yerlerde belirli bir süre bekletme amaçlı kullanılırlar. Harvard mimariyle üretilen mcular genel olarak her saat darbesinde bir komut işletmek amaçlı tasarlanmış mimarilerdir. Örneğin 4 mhz denildiğinde 1 saniyede 4 milyon komut icra edilecek anlamına gelir. İşte zamanlama kavramı burada devreye girmektedir.
Eğer 1 saniye bekletmek istersek 4 milyon komut işletmeliyiz ya da 4 milyon defa boş bir şekilde tekrarlatmalıyız. Bu işlemleri yaptırmak için döngüler kullanılmaktadır. Örneğin aşağıdaki program parçası 1 milyon defa saat darbesine ihtiyaç duyan bir döngü yapısıdır. Aşağıdaki yapının kaç saat palsine ihtiyaç duyduğunu bulmak için kabaca kat sayılar çarpılır daha sonra 3 katı alınır. Yani 100*30*100*3=900000 yaklaşık 0,9 saniyedir. Aşağıda iç içe bilok yapıları görülmektedir.
ZAMAN1S MOVLW D'100'
MOVWF SAYAC1
TIMER1 MOVLW D'30'
MOVWF SAYAC2
TIMER2
MOVLW D'100'
MOVWF SAYAC3
TIMER3
DECFSZ SAYAC3,F
GOTO TIMER3
DECFSZ SAYAC2,F
GOTO TIMER2
DECFSZ SAYAC1,F
GOTO TIMER1
RETURN
Değişkenlerin adresleri ve özel amaçlı registerler
Değişkenler kullanıcının kullanımı için genel amaçlı bellek ayrılmıştır. Bu bellek alanlarına erişim için adresi ile ulaşabileceğimiz gibi değişken tanımlayarak kullanabiliriz. Bu bellek gözleri H’0C’ ile başlar. Örneğin üç adet değişken tanımlanması görülmektedir. Değişken tanımlarken EQU komutu ile bir bellek gözüne ataması yapılır. Değişken ismiyle aslında atanan bellek gözüne erişim yapılmış oluruz.
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
SAYAC3 EQU H'0E'
Not:Bu değişkenlere erişim yapılırken bank değiştirmeye gerek yoktur. Hangi bankta olursak olalım erişim yapılabilir.
8- a portunun 2 numaralı bacağına bağlı bir buton yardımı ile b portunun 3 numaralı bacağına bağlı bir led yakan ve a portunun 3 numaralı bacağına bağlı bir butonla da söndüren VE İKİ SANİYE ARALIKLARLA BEKLEME YAPAN program
LIST P=16F84;**************************************************
STATUS EQU H'03'
PORTA EQU H'05'
PORTB EQU H'06'
TRISA EQU H'85'
TRISB EQU H'86'
;******************************
SAYAC1 EQU H'0C'
SAYAC2 EQU H'0D'
SAYAC3 EQU H'0E'
;**************************
CLRF PORTB
CLRF PORTA
;************************************************
BSF STATUS,5 ;bank 1 e geçiş yapıldı
CLRF TRISB ;b portu çıkış yapıldı
MOVLW H'FF' ;
MOVWF TRISA ;a portu giriş yapıldı
BCF STATUS,5
;****************************************************
BASLA
BT1
BTFSS PORTA,2 ; portanın 2 numaralı bacağına bağlı butona basılmışsa potb,3 ‘e 5 volt ver
GOTO BT2
BSF PORTB,3 ;portb 3 numaralı bacağına bağlı led yak
CALL ZAMAN1S
CALL ZAMAN1S
BT2 BTFSS PORTA,3 ; portanın 3 numaralı bacağına bağlı butona basılmışsa potb,3 ‘e 0 volt ver
GOTO BT1
BCF PORTB,3
CALL ZAMAN1S
CALL ZAMAN1S
GOTO BASLA
;******************************************************
ZAMAN1S MOVLW D'5'
MOVWF SAYAC1
TIMER1 MOVLW D'100'
MOVWF SAYAC2
TIMER2
MOVLW D'100'
MOVWF SAYAC3
TIMER3
DECFSZ SAYAC3,F
GOTO TIMER3
DECFSZ SAYAC2,F
GOTO TIMER2
DECFSZ SAYAC1,F
GOTO TIMER1
RETURN
END
Kaynaklar
[1] Bil386 Mikrobilgisayarlı Sistem Tasarımı
[2] http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/5/5.pdf (Haziran 2007)
[3] www.datasheetcatalog.com/datasheets_pdf/L/M/3/LM35DZ.shtml (Mayıs 2007)
[4] www.microchip.com
Yorumlar
Yorum Gönder