Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

TIMER0 kesmesini kapatmak

Başlatan tmsh, 15 Ekim 2012, 22:18:29

tmsh

Merhaba,

CCS C de ufak ufak programlar yazmaya başladım. Yazdığım programda şifre adında bir tanımlama yapıyorum. 15 sn herhangi bir tuşa basılmadığı zaman programın başa dönmesini istiyorum. Bunun için timer0 ı programladım. Ancak program başka komutlar işlediği zaman bu timer0'ı durdurmak istedim. Biraz araştırınca böyle birşeyin mümkün olmadığını öğrendim ancak kesmeyi iptal edebiliyormuşum. CCS C de kesmeyi iptal etme komutu olarak yalnızca

disable_interrupt(timer0)


komutunu buldum. Bu komut sanki işlemci komutlarını programlarken kullanılan komut gibi geldi. Bu komutu programın istediğim herhangi bir yerinde kullansam bir sorun olur mu? Yada

toie=0


gibi bir komut var mı CCS Cde?

justice_for_all

 onceki verdigin komut zaten o gorevi yapiyor.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

halilgalic

disable_interrupts(INT_TIMER0); bu iş için istediğin yerde kullanabilirsin .toie=0 hic böyle bişey duymadım

tmsh

İlgilendiğiniz için teşekkürler.

Alıntı yapılan: halilgalic - 15 Ekim 2012, 22:29:14
toie=0 hic böyle bişey duymadım

Hangi programlama diline ait bilmiyorum ama bir kodda böyle birey buldum. Buna benzer birşey arıyordum.

halilgalic

komut değilde bence register adı ama bulamadım da böyle bişey.mesela INTCON.2=0 tmr0 bayragını sıfırlar basıcde

justice_for_all

her programlama dilinin kendine has komutlari vardir.Hi-tech de T0IE=0,CCS de ise disable_interrupt(int_timer0) kullanilir hepsi ayni isi yapar.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

arslan74

Timer interuptu kapatığınızda timer0 hala saymaya başlar. büyük ihtimallede interruptu tekrar actığınızda tmr0 int. oluşmuşmuş olur. o yüzden acar acmaz interrupta girer. Su önemli değil ise bu şekilde kullanabilirsin. Ama programda işleyişe sorun cıkartırsa ki, büyük ihtimalle  şekilde cıkartır. Bu şekille yapılması gerekir. O yüz bazı önemler almalısın. Mesela en basid örnek int. acmadan önce trm0 içeriğini tmro.if bayrağını sıfırladıktan sonra timer kesmesini acmak olabilir.

tmsh

Her saymaya başlayışımda:

set_timer(252)


kodunu kullanıyorum.

arslan74

Setti :)mer fonksiyonu eger tmr0.if bayragini sifirliyorsa o zaman olur. Ama yapmiyorsa o zaman Sizin yapmaniz gerekir.