PIC18F2550 USB HID ile PC deki 100 noktanın kontolü...

Başlatan izleyici42, 22 Nisan 2015, 12:06:54

izleyici42

Merhaba arkadaşlar. Bir projem var yardım edebilirseniz sevinirim.

Rf alıcı verici devresiyle bir proje yapmak istiyorum. Kısaca 100 Butonla Pc ekranındaki 100 pencereyi yakıp söndürmek. Sizlerden istediğim sadece programı USB HID içerisine yerleştirip bu bilgiyi Pc ye gönderebilmek.




Usb HDI içerisine yerleştirmek istediğim bir kod.

#include <18f2550.h>
#fuses XT, NOPROTECT, NOWDT, PUT
#byte porta=5
#byte portb=6
#use delay(clock=20000000)
char e;
void main()
{
set_tris_b(0xff);
set_tris_a(0x00);

while(1){

if(input(pin_b0))
{
output_high(pin_a0);
delay_ms(10);
output_low(pin_a0);
}

if(input(pin_b1)){
output_high(pin_a1);
delay_ms(10);
output_low(pin_a1);
}
if(input(pin_b2)){
output_high(pin_a2); 
delay_ms(10);
output_low(pin_a2);
}
if(input(pin_b3)){
output_high(pin_a3);
delay_ms(10);
output_low(pin_a3);
}    
if(input(pin_b4)){
output_high(pin_a4);  
}
if(input(pin_b5)){
output_high(pin_a5);  
delay_ms(10);
output_low(pin_a5);
}
if(input(pin_b6)){
output_high(pin_c0);  
delay_ms(10);
output_low(pin_c0);
}
if(input(pin_b7)){
output_high(pin_c1);
delay_ms(10);
output_low(pin_c1);
}
}
}


Alıcıdan 18F2550 ye verilen giriş kodları.. Bu kısmı normalde 100 rakamına kadar yapacağım. Burada sadece 9 a kadar yaptım.
#include <16f877a.h>
#fuses XT, NOPROTECT, NOWDT, PUT
#byte porta=5
#byte portb=6
#use delay(clock=4000000)
#use rs232(baud=600, xmit=PIN_A2, rcv=PIN_A1)
char e;
void main(){
set_tris_b(0x00);
output_b(0x00);

while(1){

if(getch()=='X'){e=getch();

if(e=='A'){
output_b(0b00000001);
delay_ms(10);
output_b(0b00000000);
}
if(e=='B'){
output_b(0b00000010);
delay_ms(10);
output_b(0b00000000);
}
if(e=='C'){
output_b(0b00000011);
delay_ms(10);
output_b(0b00000000);
}
if(e=='D'){
output_b(0b00000100);
delay_ms(10);
output_b(0b00000000);
}
if(e=='E'){
output_b(0b00000101);
delay_ms(10);
output_b(0b00000000);
}
if(e=='F'){
output_b(0b00000110);
delay_ms(10);
output_b(0b00000000);
}
if(e=='G'){
output_b(0b00000111);
delay_ms(10);
output_b(0b00000000);
}
if(e=='H'){
output_b(0b00001000);
delay_ms(10);
output_b(0b00000000);
}
if(e=='J'){
output_b(0b00001001);
delay_ms(10);
output_b(0b00000000);
}




Resimdeki gibi 100 pencereyi yakıp söndürebilmek.
Şöyle anlatayım: Binary olarak 0 dan 100 e kadar rakam gönderiyorum... Bu rakamın decimal karşılğı ne ise o numaraya tekabül eden pencere nin yanması gerekiyor.