kaijax
Üye
- Katılım
- 19 Ocak 2009
- Mesajlar
- 2
- Puanları
- 1
- Yaş
- 39
Ilk once yapmak stedigim ile baslayayim.
elimde 9 button var ve hepsi ayri bir ID icin.
1. button a basildiginda pic seri porta "1111"
2. button a basildiginda pic seri porta "2222"
.
.
.
.
9. button a basildiginda pic seri porta "9999"
ID'lerini gonderiyor ve bilgisayardaki arayüz programı ID'leri alarak database eslestirmesi yapıyor vs vs...
dolayisi ile pic buttonlarin basili olup olmadigini kontrol edip ona gore seri porta data gondermeli.
Ilk olarak interrupt ile yapmak istedim fakat 16f877'nin interrup icin kullanabilecegim 4 pini oldugunu ogrenince vazgecip primitif yontemlere basvurdum.
Basit bir If dongusu ile olabilecegini dusundum ama yanildim..
Yazdigim kod :
while(1) {
if (PORTB.F0 == 1 )
{ Usart_Str("1111");
}
if (PORTB.F1 == 1 )
{ Usart_Str("2222");
}
if (PORTB.F2 == 1 )
{ Usart_Str("3333");
ile baslayip devam ediyor.
1. button a bastigimda 1111 datasi gidiyor ama dongu sonsuz oldugu icin ben button'u kapatana kadar onlarca kez gonderiyor. Sonsuz dongu olmadan da button durumunu devamli test edemiyorum.
Benim istedigim sadece 1 kere gondermesi. Saatlerce ekrana bakip dusundum ama bunu yapacak bir yontem aklima gelmedi ve interrupt'a yonelmeyi dusundum.
Interrupt kullanmadan duzeltme onerisi yapacak olan arkadaslara simdiden sonsuz tesekkur ediyorum..
elimde 9 button var ve hepsi ayri bir ID icin.
1. button a basildiginda pic seri porta "1111"
2. button a basildiginda pic seri porta "2222"
.
.
.
.
9. button a basildiginda pic seri porta "9999"
ID'lerini gonderiyor ve bilgisayardaki arayüz programı ID'leri alarak database eslestirmesi yapıyor vs vs...
dolayisi ile pic buttonlarin basili olup olmadigini kontrol edip ona gore seri porta data gondermeli.
Ilk olarak interrupt ile yapmak istedim fakat 16f877'nin interrup icin kullanabilecegim 4 pini oldugunu ogrenince vazgecip primitif yontemlere basvurdum.
Basit bir If dongusu ile olabilecegini dusundum ama yanildim..
Yazdigim kod :
while(1) {
if (PORTB.F0 == 1 )
{ Usart_Str("1111");
}
if (PORTB.F1 == 1 )
{ Usart_Str("2222");
}
if (PORTB.F2 == 1 )
{ Usart_Str("3333");
ile baslayip devam ediyor.
1. button a bastigimda 1111 datasi gidiyor ama dongu sonsuz oldugu icin ben button'u kapatana kadar onlarca kez gonderiyor. Sonsuz dongu olmadan da button durumunu devamli test edemiyorum.
Benim istedigim sadece 1 kere gondermesi. Saatlerce ekrana bakip dusundum ama bunu yapacak bir yontem aklima gelmedi ve interrupt'a yonelmeyi dusundum.
Interrupt kullanmadan duzeltme onerisi yapacak olan arkadaslara simdiden sonsuz tesekkur ediyorum..