ccs de rbo kesme nasıl yapılır

Başlatan thelastares, 17 Ağustos 2006, 12:01:39

thelastares

arkadaşlar kodu hi tech de yazmıştım çalışmıştı ama ccs ye öevirdiğimde çalışmadı.

mainin dışına

int MENU,MENU2;
#int_EXT
EXT_isr(){
  MENU++;
  if(MENU==6)
  MENU=0;
  MENU2++;
  if(MENU2==6)
  MENU2=0;
}

mainin içine de

enable_interrupts(INT_EXT);// turn on interrupts
  enable_interrupts(GLOBAL);
  ext_int_edge(H_TO_L);

MENU=0;
MENU2=0;


girdilerini ayzıyorum ve içeride menü ve menü 2 ye dayalı işlemler yaptırıyorum switch(MENU) gibi neden olmuyo bilen var mı acaba

kurumahmut

verdiğin bilgilere göre çalışıyor olmalı...

Örnek kesme kodu verim sana bi de onla karşılaştır...

//normal akışta flaş yapan kesme geldiğinde sıralı flash yapan Rb1,2,3 de gösteren program
#include <16F877.h>
#use delay(clock=4000000)
#fuses XT, NOWDT, NOPROTECT, PUT
#include <lcd.c>

void delay_seconds(int n) {      //n saniyelik gecikme yapar...
     for ( ; n!=0; n--)
     delay_ms( 1000 );
}
#use fast_io(B)

/////////////////////////////////////////////////////////////////////////////////////////////
#int_EXT
RB0_lowed() {
                           //Ayrıca kesme aldıktan sonra kesme programı çalışırken yeni kesmelerin gelmesi engelleniyor.
   OUTPUT_B(0x00);
   output_high(PIN_B1);
   delay_seconds(1);
   output_high(PIN_B2);
   delay_seconds(1);
   output_high(PIN_B3);
   delay_seconds(1);

   output_low(PIN_B1);
   delay_seconds(1);
   output_low(PIN_B2);
   delay_seconds(1);
   output_low(PIN_B3);
   delay_seconds(1);

   OUTPUT_B(0x00);
   output_high(PIN_B1);
   delay_seconds(1);
   output_high(PIN_B2);
   delay_seconds(1);
   output_high(PIN_B3);
   delay_seconds(1);

   output_low(PIN_B1);
   delay_seconds(1);
   output_low(PIN_B2);
   delay_seconds(1);
   output_low(PIN_B3);
   delay_seconds(1);

}
////////////////////////////////////////////////////////////////////////////////////////////
void main(void) {

     ext_int_edge( H_TO_L );
     enable_interrupts(INT_EXT);
     enable_interrupts(global);          //programın başında kesmeler aktif edilmeli

     lcd_init();
     lcd_putc("PICPROJE.ORG");
     SET_TRIS_B(0xF1);  //123 çıkış 4567 giriş 0 kesme_girişi
     output_B(0x00);
     do{
         OUTPUT_B(0x0E);      //123 flash için kullanılıyor...
         delay_ms(1000);      //delay_seconds(1);
         OUTPUT_B(0x00);
         delay_ms(1000);         //delay_seconds(1);
     }while(1);
}

thelastares

teşekkür ederim yanıtladığın için sapolsın fakat kod da da bişi yok .ama içerde 877nin kendi adc sini kullanıyorum onla bi ilgisi olabilr mi.

bi de ben bunu menü için kullanıyodum.tek tuşla hem bulunduğu menüden çıkıp hem de öteki meniye geçiyodu.
acaba böyle tek tuşla kontrol edebileceğim menü yazılımı başka nasıl yapabilirm.

tabi öncelikle bu kesme olabiliyosa onu düşünüyorum ama olmazsa nasıl yapabilirm diye düşünmeye başladım

thelastares

arkadaşlar ilk tazdığım kodun içini değiştirdim sadec bi sayı gösterck ekranda.mainin de içine bi sayı göstermesi için bi komut yazdım.
normalde rb0 butonun bastığımda
kesmedei sayıyı göstermesi lazım.sonra kaldığı yerden öteki sayıyı göstermesi lazım.
ama pice enerji verdiğimde bi onu bi onu çalıştırıyo tuşa basılı tuttuğumda ise maindekini gözteriyo acaba kesme fonksiyonun içine bi komut mu yazmak lazım bitirmesi içn hi tech de INTF=0 yazzıyoduk onun gibi bişi mi acaba

kurumahmut

interuptan çıkmak için flag clear dan bahsediyosun o CCS tarafından yapılıyor. Sanırım sorunun project wizard kullanmadan text dökümanına kopyala yapıştır yapmandan kaynaklanıyor olabilir. Ben böyle yaptığımda bazen abidik gubidik işler yapıyodu.

Ya da fast_io yapıp da trisleri ayarlamıyor olabilirsin...

Aslında projeyi zipleyip atsan daha rahat edecez...

thelastares

vallaha haklısın :D
ben bü kaç gün internete giremeyeceğim.haftaya salı anca girebilirm.sağolasın ilgilendiğin için deiklerini bi deniyim ben.
ilgin için çok teşekür ederim

Digimensch

Bende bu konularda yeniyim onun icin sunu ögrenmek istiyorum.
Acaba Port kesme olayi nedir?
Burda kast edilen islem nedir nerelerde veya ne zaman kullanilir?