picc de interruptlar(HESAP MAKİNASI)

justrelax

Üye
Katılım
13 May 2010
Mesajlar
21
Puanları
1
Yaş
40
merhabalar arkadaşlar;

foruma daha yeni üye oldum ve çaresizce pic c de interruptları anlatan bi pdf veya kitap arıyorum.umud ederimki sizlerde vardır. veya bana bi kaç ufa tiyo verirseniz çok sevinirim.

esas konum şu 18f4520 ile hesap makinası yapmaya çalışıyorum devremi cizdim proteusta ama interrupt nedir bilmediğim için sıkıştım. yardımlarınızı bekliyorum.C ustalarının ellerinden öpüyorum:))
 
proteusun içinde samples adlı bir klasör var. onun içinde istediğin şekilde bir hesap makinesi uygulaması var istersen ondan yararlanabilirsin işini görmezse tekrar bakabiliriz.
 
teşekkur ederim baba23 fakat bana proteustaki değil CCS deki program lazım?ve bunu 74c922 ıle yapmam gerekiyor.devreyi cizdim fakat interruptlar ne işe yarıyor çözemedim.daha yeniyim bu pic programlamada..
 
kesmeler hakkıjnda ccs de genel kaynak mı arıyorsun yoksa örnek program parçacıkları mı onu belirt sana yollayayım.
 
valla acıkcası interrupt ne işe yarar venası kullanılır onu arıyorum.örnek varsa elinde sevınırım.bu iş ok ugrasstırıyo benı ...
 
kardeş CCS C ile PIC programlama adında çok güzel bir kitap var, yazarı serdar çiçek. giriş düzeyinde gayet yeterli bir kaynak. onu tavsiye ederim sana heryerden, internettende satın alabilrsin. 15 lira civarında idi zamlanmadı ise. tavsiye ederim.
 
hocam aldım kıtabı .işime de yaradı acıkcası:)
ama genede sorularım var.kıtap sayesınde bayaa bısı yazdım ama dogrumu dıılmı nası yaparım bundan sonrasını onu bılemedım.kesme işleminde aldıgım verıyı (datayı) hesaplatmak istiyorum ama bunu 74C922 ıle yapmaya calısıorum.yanı butonların hepsı 74C922 ye baglı.B portu input ve harıcı kesme kullanıyorum.bir array tanımladım eger arrayın ıcındekı bazı sayılaın (10 11 12 13 14 15) birini kullanırsa cihazın (+ - = \) gibi işlemler yapmasını istiyorum.sadece 2 sayıyla olabılır ve sonucu da daha sonra işleme sokabilir.bunun için de if komutunu kullandım.burdan sonra sıkıştım=)
------------------
 
Son düzenleme:
hocam cok sıkıstım lutfen yardım!!!1 haftadır programla ugrasıorum ama sonuc bulamadım!programda cok hatalarım war ama mantgıma oturtamadıgımdan yapamıyorum!

#include "C:\Users\EXPER\Desktop\18F\hesap_makinası.h"
#include <lcd.c>
int i,y,z,m,k;
#int_EXT
void EXT_isr(void){

i=input(pin_b1);
y=input(pin_b2);
z=input(pin_b3);
m=input(pin_b4);
k=i+y*2+z*4+m*8;

if (10==k){
printf("+",);
delay_ms(3000);

}

else if (11==k){
printf(lcd_putc"-",);
delay_ms(3000);
}

else if (12==k){
printf(lcd_putc"*",);
delay_ms(3000);
}

else if (13==k){
printf(lcd_putc"/",);
delay_ms(3000);
}

else if (14==k){
printf(lcd_putc"=",);
delay_ms(3000);
}

else if (15==k){
printf(".",);
delay_ms(3000);
printf(lcd_putc"%f",k);
}
}

void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF|ADC_TAD_MUL_0);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

// TODO: USER CODE!!


set_tris_B(0x1F);
lcd_init();
printf(lcd_putc"calculator",);


printf(lcd_putc("0");
delay_ms(3000);
ext_int_edge(L_to_H);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
}
 
yok mu yardım edebilcek?CCS le Başım dertte=)
 
Temel programlama mantığını oturtamamışsın ki henüz. Sadece ekrana dört işlem işaretini yazdırmaya yarar bu program. Önce bir blok diyagramı oluştur bence ana döngüyü daha iyi görürsün. Ayrıca yaptığın if ifadelerinde 10 tane daha yapıp sayısal tuşları kullanman gerek. Basılan her tuşu önceki tuşun arkasına ekleyeceksin. Daha sonra eğer aritmetik operatör tuşlarına basılırsa o ana kadar basılan tuşların karşılığı olan sayıyı hafızaya alıp yeni bir sayı girişi açacaksın. Basılan aritmetik operatörüde hafızaya aldıktan sonra "=" e basılınca gerekli işlemi yapıp yazdıracaksı. Henüz yolun çok başındasın. Kolay gelsin sana.
 

Forum istatistikleri

Konular
130,154
Mesajlar
933,739
Kullanıcılar
453,246
Son üye
TalhaSahin

Yeni konular

Geri
Üst