as.yıldırım
Usta Üye
- Katılım
- 14 Eki 2011
- Mesajlar
- 1,287
- Puanları
- 181
arkadaslar 16f877 ile bi sayac yapmaya calısıyorum.Sayacta rb4..rb7 kesmesini kullanmak istedim.Kısaca söyle bi acıklama yapayım: sistem tarama yöntemi ile sayactaki birler ve onlar basamagını gösterecek.Eger rb4 ya da rb5 pinlerinden sinyal alırsa kesmeye gidecek ve artırma ya da azaltma yapacak.Ama proteusta calıstırdıgımda hiçbise yapamıyorum.CCS de yazdıgım kodu vereyim bi inceleyip fikir verirseniz sevinirim.
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
int birler=0;
int onlar=0;
char display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};
#int_RB
void yaylalar(){
if(input(pin_b4)){
birler++;
if(birler>9){
onlar++;
birler=0;
}
if(onlar>9)onlar=0;
}
if (input(pin_b5)){
birler--;
if(birler<0){
birler=9;
onlar--;
}
if(onlar<0)onlar=9;
}
}
void main(){
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_b(0xF0);
set_tris_c(0x00);
set_tris_d(0x00);
output_c(0);
output_d(0);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
while(1){
output_c(0x02);
delay_ms(50);
output_b(display[onlar]);
output_c(0x01);
delay_ms(50);
output_b(display[birler]);
}
}