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