PC klavye Serin Komut hatası..

Başlatan boraciner, 29 Haziran 2009, 18:00:32

boraciner

ccs diye geçen pic c complier'ı mı kullanacağız  ?
google dan baktım , example dosylarında bir örnek varmış sanırım glcd kullanımı hakkında..

boraciner

üstad, çok başını ağrıttım ama şöyle yaptım hata veriyor, bir bakabilirmisin acaba?
#include "D:\picc\klavye.h"
setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   define Clock portb.7
const unsigned char kucuk[67][2]={ 
      {0x0D,0x7E},{0x0E,'"'} ,{0x15,'q'},{0x16,'1'}, 
      {0x1A, 'z'},{0x1B,'s'} ,{0x1C,'a'},{0x1D,'w'}, 
      {0x1E, '2'},{0x21,'c'} ,{0x22,'x'},{0x23,'d'}, 
      {0x24, 'e'},{0x25,'4'} ,{0x26,'3'},{0x29,' '}, 
      {0x2A, 'v'},{0x2B,'f'} ,{0x2C,'t'},{0x2D,'r'}, 
      {0x2E, '5'},{0x31,'n'} ,{0x32,'b'},{0x33,'h'}, 
      {0x34, 'g'},{0x35,'y'} ,{0x36,'6'},{0x39,','}, 
      {0x3A, 'm'},{0x3B,'j'} ,{0x3C,'u'},{0x3D,'7'}, 
      {0x3E, '8'},{0x41,0xEF},{0x42,'k'},{0x43,  3}, 
      {0x44, 'o'},{0x45,'0'} ,{0x46,'9'},{0x49,  7}, 
      {0x4A, '.'},{0x4B,'l'} ,{0x4C,  2},{0x4D,'p'}, 
      {0x4E, '+'},{0x52,'i'} ,{0x54,  5},{0x55,0x5F}, 
      {0x5A,0xA3},{0x5B,0xF5},{0x5D,','},{0x61,'<'}, 
      {0x69, '1'},{0x6D,'4'} ,{0x6C,'7'},{0x70,'0'}, 
      {0x71, ','},{0x72,'2'} ,{0x73,'5'},{0x74,'6'}, 
      {0x75, '8'},{0x79,'+'} ,{0x7A,'3'},{0x7B,'-'}, 
      {0x7C, '*'},{0x7D,'9'} ,{0x00,0} 
}; 

const unsigned char buyuk[67][2]={ 
      {0x0D,0x7E},{0x0E,'é'} ,{0x15,'Q'},{0x16,'!'}, 
      {0x1A, 'Z'},{0x1B,'S'} ,{0x1C,'A'},{0x1D,'W'}, 
      {0x1E, '2'},{0x21,'C'} ,{0x22,'X'},{0x23,'F'}, 
      {0x24, 'E'},{0x25,'+'} ,{0x26,'^'},{0x29,' '}, 
      {0x2A, 'V'},{0x2B,'F'} ,{0x2C,'T'},{0x2D,'R'}, 
      {0x2E, '%'},{0x31,'N'} ,{0x32,'B'},{0x33,'H'}, 
      {0x34, 'G'},{0x35,'Y'} ,{0x36,'&'},{0x39,'L'}, 
      {0x3A, 'M'},{0x3B,'J'} ,{0x3C,'U'},{0x3D,'/'}, 
      {0x3E, '('},{0x41, 0 },{0x42,'K'},{0x43, 'I'}, 
      {0x44, 'O'},{0x45,'='} ,{0x46,')'},{0x49,  7}, 
      {0x4A, ':'},{0x4B,'l'} ,{0x4C,  1},{0x4D,'P'}, 
      {0x4E, '?'},{0x52, 6 } ,{0x54,  5},{0x55,0x2D}, 
      {0x5A,0xA3},{0x5B, 4 },{0x5D,';'},{0x61,'>'}, 
      {0x69, '1'},{0x6D,'4'} ,{0x6C,'7'},{0x70,'0'}, 
      {0x71, ','},{0x72,'2'} ,{0x73,'5'},{0x74,'6'}, 
      {0x75, '8'},{0x79,'+'} ,{0x7A,'3'},{0x7B,'-'}, 
      {0x7C, '*'},{0x7D,'9'} ,{0x00,0} 
}; 

unsigned char get_byte(void) 
{ 
   char i; 
   unsigned char veri=0; 
    
   for(i=0;i<11;i++)            //11 bitlik veri gelecek 
   { 
 
      while(Clock);            //Ilk önce Clock=1 olmali 
      if( (i<9) && (i>0))         //2->9 bitler 
      { 
         veri=veri>>1; 
         if(Data==1) 
            veri=veri | 0x80; 
      } 
      while(!Clock);            //Son olarak Clock=1 olmali 
   } 
   return veri;               //Algilanan deger gönderiliyor 
} 

unsigned char keyboard(void) 
{ 
   unsigned char data=0; 
   unsigned char shift, code_flag, i; 
   for(;;) 
   { 
      data=get_byte(); 
      if(data==0x0F)         //Tus birakildi 
      { 
         code_flag=1;      //Tus algilandi 
      } 
       
      if(code_flag==1)      //Tus algilandi, acaba bu shift mi diye bakiliyor 
      { 
         code_flag=0;      //Yeni tus algilanmasi için bayrak sifirlaniyor 
         if((data==0x12)||(data==0x59))   //Sag ya da sol shifte mi basildi 
            shift=!shift;            //Capslock gibi çalisacak 
      } 
       
      if((data==0x12)||(data==0x59))   //Sag ya da sol shifte mi basildi 
         shift=!shift;            //Capslock gibi çalisacak 
       
      if(data==0x58)               //Capslock'a basildiysa 
         shift=!shift; 
       
      for(i=0;kucuk[i][0]!=data && kucuk[i][0]; i++);      //Tusun ascii karsiligi bulunuyor 
       
      if(kucuk[i][0]==data)         //Data ascii tablolarimizda var mi bakiliyor 
      { 
         if(!shift)               //Capslock açik değilse küçük harf, açiksa büyük harfin ascii degeri geri gönderiliyor 
            return kucuk[i][1]; 
         else 
            return buyuk[i][1]; 
      } 
      else 
         return data;            //Eger tablomuzda o deger bulunmuyorsa direk klavyede okunan kod geri gönderiliyor 
   } 
}
:(

boraciner

proje dosyanı zipleyip gönderirsen çok yardımcı olursun hocam...
çok teşekkürler, ellerine sağlık

boraciner

bugün çoook yoruldum , kafamı kaldıracak halim yok ama yarın ilk iş onu deneyeceğim çok teşekkür ederim

boraciner

bi tane pro bulup indirmeye çalışıyorum üstad..

boraciner

hi-tech ile derleyemedim.. proton basic 'de şimdi başka bir klavye deniyorum clk ve data 5V gösteriyor hiçbir tuşa basmadan, bakalım umarım yapabilirm kodları düznleyince

boraciner

şu kodu yazdım fakat şimdi de lcd de şu iki satırı görebiliyorum sadece
clk 0
clk 1

yani clk 0 again 'e hiç düşmüyor..
Include "PROTON18_452.BAS" 
Device 16F877
		WARNINGS = OFF        
   
      

 TRISB=%0110000    
Symbol  Giris  PORTB.6 
Symbol  Clk    PORTB.5 
Dim dur As Bit 
    Dim ComingData As Byte 
    Dim B0 As Byte 
    Dim xpos As Byte 
    Dim ypos As Byte 
    Dim OKU As Byte 
    Dim ADRS As Word 
    Dim TEKRAR As Word 
    Dim ARRAY1[9] As Byte 
    Cls
   BEGIN: 
   
Dim i As Word 
For i = 0 To 10 Step 1  '11 bitlik veri gelecek 
Print At 0,0,"clk 0"
While Clk =1    ' Ilk önce Clock=1 olmali 
Print At 1,1,"clk 1" 
Wend            


If i<9 & i>0 Then 

SURE:
If Clk = 0 Then
Print At 2,2,"clk 0 again"
GoTo SURE 
EndIf 
Print At 3,3,"array is here"
ARRAY1[i]=ComingData 

EndIf
  
While Clk = 0 
Wend 

While Clk = 0 
Wend 

Next 

Cls 
Print At 4,4, Str ARRAY1 
 

GoTo BEGIN
    
    
    

   
End
    Include "FONT.INC"
    Include "TABLO.inc"

boraciner

şu kodu yazdığımda ise clk 0 , 1 ve tekrar sıfır oluyor fakat şöyle bir sorun var, ben herhangi bir tuşa basmıyorum. aslında böyle bir durumda clk sabit kalması gerekiyormuş


' Yazý ve grafikleri gösterir. designed By TangoDancer

		Include "PROTON18_452.BAS" 
Device 16F877
		WARNINGS = OFF        
   
      

 TRISB=%0110000    
Symbol  Giris  PORTB.6 
Symbol  Clk    PORTB.5 
Dim dur As Bit 
    Dim ComingData As Byte 
    Dim B0 As Byte 
    Dim xpos As Byte 
    Dim ypos As Byte 
    Dim OKU As Byte 
    Dim ADRS As Word 
    Dim TEKRAR As Word 
    Dim ARRAY1[9] As Byte 
    Cls
   BEGIN: 
   
Dim i As Word 

While Clk =1    ' Ilk önce Clock=1 olmali 
Print At 0,0,"clk 1" 
Wend            
While Clk =0    ' Ilk önce Clock=1 olmali 
Print At 1,1,"clk 0" 
Wend
While Clk =1    ' Ilk önce Clock=1 olmali 
Print At 2,2,"clk 1" 
Wend            




GoTo BEGIN
    
    
    

   
End
    Include "FONT.INC"
    Include "TABLO.inc"

boraciner

olmuyor, hiçbir türlü clk ve data yı kullanamıyorum....
yine serin ile almaya çalışacağım ... :cry:  :cry: