Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Interrupt ve LCD

Başlatan Xentia, 30 Nisan 2017, 01:11:08

Xentia

Merhaba, iyi forumlar
Hoca bir tane proje ödevi verdi.
PIC16F877a'nın B portuna bağlı 7 adet led sıra ile yanacak kesme gelince o an ki led 3 kere yanıp sönecek ve aynı zamanda LCD de ad, soyad(üst satırda) ve okul no(alt satırda) olacak ve kayacak(Sağa yada sola fark etmez). Programı yazdım fakat bir sorun var. interrupt gelince LCD deki yazı interrupt bitene kadar duruyor. Interrupt gelincede LCD'nin devam etmesini istiyorum ama bunu nasıl yapacağımı çözemedim yardımcı olabilir misiniz.

#include <16f877a.h>
#use delay(clock=4m)
#include <lcd.c>
#define LCD_DATA_PORT getenv("SFR:PORTD")
#use fast_io(b)
int a;
int depo=0x80;
#int_ext
void kesme_programi(void)
{
   int i;
   for(i=0; i<3; i++)
   {
   output_b(depo);
   delay_ms(400);
   output_b(0x00);
   delay_ms(400);
   }
}   
void saga_kaydir(void)
{
lcd_send_byte(0,0x1E);
delay_ms(85);
}

void main()
{
   lcd_init();
   lcd_putc("AD SOYAD");
   lcd_gotoxy(1,2);
   lcd_putc("NUMARA");
   set_tris_b(0x01);
   ext_int_edge(H_TO_L);
   enable_interrupts(int_ext);
   enable_interrupts(global);
   
   while(1)
   {    
      output_b(depo);
      if(depo==0x01)
      depo=0x80;
      else
      depo=depo>>1; 
      
      for(a=1; a<10; a++)
    {
        saga_kaydir();    
    } 
    }
}

tunayk

Kardeş sorunun interrupt rutini içinde bekkemen. İnterrupt içinde fonksiyonu icra etme,  yalnızca bir flag ile led yakıp söndürme zamanı geldiğini belirle ve çık.
Ana döngü içinde işleri yapmaya devam edersin

mehmet

RB0 kesmesi kullanılacağı için PortB yerine başka bir portu
çıkış olarak kullanınız.
Kaydırma kısmını timer kesmesiyle yapınız.
RB0 kesmesiyle bir bayrağı aktif ediniz. Bunu ana döngüde
kontrol ediniz.

Eğer bayrak aktif olursa ilgili işlemi yapar ve bu bayrak sıfırlanır.
Değilse normal port saydırma işine devam eder...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr