

Ccscde Lcd Keypadı Kesmelerle Oluşturmak
-
kodlar aşağıda fakat timer ile keypadi sürmeyi beceremedim rb kesmesine öncelik vermeme rağmen olmadı

#include "C:\Program Files\PICC\Projects\final.h"
#define use_portd_lcd TRUE
#define LCD_TYPE 2
#include <lcd.c>
#priority rb,timer0
int j,i;
void goster(char asa)
{
IF(asa==0)output_c(0x3f);
IF(asa==1)output_c(0x06);
IF(asa==2)output_c(0x5b);
IF(asa==3)output_c(0x4f);
IF(asa==4)output_c(0x66);
IF(asa==5)output_c(0x6d);
IF(asa==6)output_c(0x7d);
IF(asa==7)output_c(0x07);
IF(asa==8)output_c(0x7f);
IF(asa==9)output_c(0x6f);
IF(asa==10)output_c(0x3f);
IF(asa==11)output_c(0x3f);
IF(asa==12)output_c(0x3f);
IF(asa==13)output_c(0x3f);
IF(asa==14)output_c(0x3f);
IF(asa==15)output_c(0x3f);
printf(lcd_putc,"\fbasilan sayi:%d",asa);
}
#int_timer0
void taymir()
{
j=1;
for(i=0;i<4;i++)
{
output_a(j);
j=j<<1;
}
}
#int_RB
void B_kesme()
{
if(input(pin_b4))
goster(i*4+0);
if(input(pin_b5))
goster(i*4+1);
if(input(pin_b6))
goster(i*4+2);
if(input(pin_b7))
goster(i*4+3);
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(rtcc_internal | rtcc_div_2);
setup_timer_1(T1_DISABLED);
enable_interrupts(int_timer0);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
set_tris_d(0);
set_tris_B(0xf0);
// TODO: USER CODE!!
lcd_init();
SET_TIMER0(2);
printf(lcd_putc,"Calisti");
//lcd_send_byte(0,0x0d);
while(1)
{
}
} -
Bir kesme meydana geldiginde o kesme fonksiyonu icra edilirken baska bir kesme meydana gelse dahi aktif olamaz. Ilk basta icra edilen kesme fonksiyonunun bitmesi gereklidir. Fakat ayni anda meydana gelen kesmeler de hangi kesmenin geçerli olacagini belirlemek için kesmelere öncelik verilmelidir. Öncelik vermek için asagidaki komut kullanilir. Ilk basa yazilan kesme en fazla öncelige sahiptir demektir.
böylelikle çalışmaz istediğim gibi