usb->rs232 dönüştürücünün db9 erkek konnektöründeki 3 numaralı pin PC den Pice bilgi göndermek (yani PC nin tx bacağı olup, 232 sürücüsünden geçerek pic te rx e yani C7 nolu bacağa bağlanır), 2 nolu bacağı da picten pc ye bilgi göndermek içindir (yani PC nin rx bacağı olup, 232 sürücüsünden geçerek pic te tx e yani C6 nolu bacağa bağlanır). 5 nolu bacağı topraktır ve devredeki toprağa bağlanır. 232 sürücüsünde 3 nolu pc_tx bacağını usb-rs232 dönüştürücünün 8 nolu bacağına, 2 nolu pc_rx bacağını 232 sürücüsü 7 nolu bacağına, rs232 sürücüsü 9 nolu bacağı pic c7, 10 nolu bacağı pic c6 bacaklarına bağlarsan haberleşme gerçekleşir.
CCS yeni başlayanlar veileri düzey kullanıcıları için iyi bir seçimdir. Hitec veya MicroC ye bakmanıza gerek kalmaz. Başkalarının bahanesi olan CCS de ANSI C uyumu olmadığı iddiası doğru değil, sadece nasıl o moda geçeceklerini bilmiyorlar. Daha doğrusu okuma özürlüler. Siz ANSI C standardında kod yazayım diyorsanız CCS de ANSI moduna geçip kullanabilirsiniz (bana kalırsa gerek yok, normal devam edin). Seçiminizden dolayı kimsenin kafanızı bulandırmasına izin vermeyin.
Kod:
delay_ms(200);
if(kbhit()){
yon=getch(); //rs232 den gelen bilgiyi oku
if (yon==1) //sola dön
{
currentPosition--;
if (currentPosition==0)
{
currentPosition=8;
}
}
if (yon==2) //sağa dön
{
currentPosition++;
if (currentPosition==8)
{
currentPosition=1;
}
}
switch (currentPosition)
{
case 1 : output_b(0b00010000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 2 : output_b(0b00110000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 3 : output_b(0b00100000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 4 : output_b(0b01100000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 5 : output_b(0b01000000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 6 : output_b(0b11000000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 7 : output_b(0b10000000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
case 8 : output_b(0b10010000); delay_ms(200);[COLOR="Red"][B]break;[/B][/COLOR]
}
}
}
getch() bilgi gelinceye kadar bekler. Yukarıdaki gibi kullanmanız daha doğru olur. döngünün başındaki 200 ms. gecikme süresinde üst üste bilgi gelirse overrun hatası oluşur. Bunu gidermek için üst üste 3 defa receive bufferini okumak gerekir. Gecikmeyi kaldırın.