Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: papsukkal - 19 Haziran 2011, 02:20:21

Başlık: port okuma
Gönderen: papsukkal - 19 Haziran 2011, 02:20:21
düşük değerlikli 4 biti output, diğerleri input olarak tanımlı bir portun tamamını okumanın bir yöntemi varmı?

örnek

portc nin 2.portunda 1 var (output tanımlı) ve 4. portta da 1 var (input tanımlı)
ve ben x değişkenine port c yi olduğu gibi yazmak istiyorum. yani x=00010100 olsun istiyorum

mümkünmüdür ? mümkünse nasıldır?

şimdiden teşekkür ederim.

ccs c kullanıyorum
Başlık: Ynt: port okuma
Gönderen: Tagli - 19 Haziran 2011, 06:38:23
x = PORTC; yazsan olmaz mı? C18'de bu şekilde oluyor.
Başlık: Ynt: port okuma
Gönderen: jackal183 - 19 Haziran 2011, 11:10:11
ccs c de bu yazdığın şekilde olmuyor diye biliyorum, forumda ccs ile ilgili bu konu daha önce açılmıştı orda anlatmışlardı hocam, biraz kurcala bulursun
Başlık: Ynt: port okuma
Gönderen: fahri- - 19 Haziran 2011, 12:50:44
b portundan 8 bit okumak için:
data=input_b();


Başlık: Ynt: port okuma
Gönderen: papsukkal - 19 Haziran 2011, 16:04:19
data=input_b();

bu komutu kullandığımda portun bir kısmı output olarak tanımlı olduğundan dolayı hiç bir işlem yapmıyor

ben SET_TRIS_C(0b11110000)  ikenki port c yi okumak istiyorum. output_c komutunu kaldırınca fonksiyon çalışıyor ancak bu komutla hem hata vermiyor hem fonksiyon yokmuş gibi davranıyor.

şimdi forumu tekrar tarayacağım umarım bulurum.


   {
   int i, sutun, sayi;
   for ( i = 0 ;i < 4 ;i++)
      {
      SET_TRIS_C(0b11110000);
      switch(i)
         {
         case 0:
         output_high(pin_c0);
         sutun = 0;
         break;
         
         case 1:
         output_high(pin_c1);
         sutun = 1;
         break;
         
         case 2:
         output_high(pin_c2);
         sutun = 2;
         break;
         
         case 3:
         output_high(pin_c3);
         sutun = 3;
         break;
         }
         sayi = input_c();
         delay_ms(20);
         OUTPUT_c(0x00);
      }
       
Başlık: Ynt: port okuma
Gönderen: papsukkal - 19 Haziran 2011, 16:25:11
tagli hocam

bütün derdim x = portc yazamamak. bu komutu pbp de kabul ediyor ama ccs kabul etmiyor.

acaba ccs ile boşuna mı vakit harcıyorum ?


mesela pbp deki şu kodu

            For Col = 0 To 3
              TrisB = Dcd col ^ $ff
              Row = PortB >>4
              if row != $f then
              key = ((col) * 3) + (ncd (Row ^ $f))
            endif
   
ccs c de kaç satırda yazarız?
Başlık: Ynt: port okuma
Gönderen: Tagli - 19 Haziran 2011, 16:56:19
Alıntı yapılan: papsukkal - 19 Haziran 2011, 16:25:11
acaba ccs ile boşuna mı vakit harcıyorum ?
Evet aslında tüm mesele burada  ;)

Bence eğer bir dil istediğin register'a doğrudan erişmene imkan vermiyorsa özgürlüğünü kısıtlıyor demektir ve terk edilmelidir.
Başlık: Ynt: port okuma
Gönderen: papsukkal - 19 Haziran 2011, 17:54:19
peki tagli hocam hangi c yi öneriyorsun?

yolun başındayken tedbir alalım
Başlık: Ynt: port okuma
Gönderen: Tagli - 19 Haziran 2011, 20:26:47
Bu tartışma başladı mı bitmez ama bence CCS C dışında herhangi biri olabilir. Tavsiyem Hitech C ile C18 arasında bir seçim yapman. Bu ikisinin arasındaki farkları ben de tam bilmiyorum, zaten çok da farklı değiller sanırım ama ben C18 kullanıyorum.
Başlık: Ynt: port okuma
Gönderen: papsukkal - 19 Haziran 2011, 21:10:42
sağol hocam inceleyip karar vericem
Başlık: Ynt: port okuma
Gönderen: Ersin - 19 Haziran 2011, 21:21:19

F1 tuşuna bas orda kullanımı mevcut, bu tip şeylere de ccs in forumuna bakabilirsin.
value = input_state(pin)

Başlık: Ynt: port okuma
Gönderen: fahri- - 19 Haziran 2011, 22:45:30
bütün c compilerlarda istediğin registerlere ulaşılabilir. c yi bilmeden c hakkında neden yorum yapılıyorki...
Başlık: Ynt: port okuma
Gönderen: camby - 19 Haziran 2011, 23:54:15
....
movlw      b'00001111'
movwf      TRISB
.....

movf   PORTB
movwf PORTC    :D

Burda sorun yok da , C'de niye olmamış.. ?
Başlık: Ynt: port okuma
Gönderen: JKramer - 20 Haziran 2011, 09:43:21
Kullandığınız mikrodenetleyicinin kataloğunu açıp C portunun adresini öğrenirsiniz. Daha sonra da kodunuza şu satırı ilave edersiniz:
#byte  PORTC=(C portunun adresi) //parantezler yok

Katalogları açmışken derleyicinin kullanma kılavuzunu da açıp #USE FAST_IO ve #USE STANDARD_IO 'un ne olduğuna da bakın.

Alıntı yapılan: fahri- - 19 Haziran 2011, 22:45:30
bütün c compilerlarda istediğin registerlere ulaşılabilir. c yi bilmeden c hakkında neden yorum yapılıyorki...

Kesinlikle katılıyorum. Öyle bir hava oluşturuluyor ki, sanki bu derleyici insanların kafasına silah dayayıp zorla "output_b ya da input_c 'yi kullanacaksın, başka yolu yok" diyor. İster derleyicinin bu tip gömülü fonksiyonlarını kullanırsınız ister doğrudan register'ların isimlerini kullanırsınız. Ben output_b yazdığımda derleyici arka planda ne yapıyor bilmiyorum ki diyenler de bir zahmet .lst dosyasına bakıversin.

Şimdi de "ben bütün register'ları tek tek tanımlamak zorunda mıyım?" diyenler olacaktır, onları da kırmayalım: CCS ide'sini açın. Tools-->Device editor e tıklayıp register dosyası oluşturmak istediğiniz mikrodenetleyiciyi seçin. Sağ tarafta "make include file" seçeneğini tıklayın. Burada istediğiniz tercihleri (structure ya da her bir bit'i ayrı ayrı tanımlama gibi) yaptıktan sonra oluşturulacak dosya yolunu belirleyip "Generate" e tıklayın. (sadece komut satırlı olanı kullanıyorsanız evinizde ide'yi kurup bir kereliğine register dosyalarını alabilirsiniz.)
Başlık: Ynt: port okuma
Gönderen: papsukkal - 20 Haziran 2011, 14:50:14
#byte  PORTC=(C portunun adresi) //parantezler yok

18f452 için adres f82 bu satırı ekledim

pin c1 den loj-1 çıkışım var buton üzerinden dönüş yapıp c4 üzerinde bunu okumam gerekiyor. istediğim 8 bitin tamamını okumak.

portc içeriği okuduğumzaman 00000010 değerini okuyorum. görmek istediğim 00010010. demekki hala doğru şeyi yapamıyorum.

yaklaşık 5 gündür bununla uğraşıyorum. aslında istediğim şeyi if döngüsü ile yapabilirdim 10 satır fazla yazardım sonuca ulaşırdım ama son 5 günde öğrendiklerimi öğrenemezdim.

bu arada öncelikle gömülü komutları kullanmak durumundayım çünkü serdar çiçek'in kitabında da bulduğum diğer eğitim dokümanlarında da register üzerinden işlem yapmaktan açık bir şekilde bahsedilmiyor. sadece standart komutlar anlatılıyor. ve elbetteki sadece bildiklerimi uygulayabilirim

pinc4 teki bilgiyi portc registerinde göremememin sebebi ne olabilir?

gösterdiğiniz anlayış ve yardımlarınız için tekrar teşekkür ederim
Başlık: Ynt: port okuma
Gönderen: JKramer - 20 Haziran 2011, 15:02:56
Tüm include dosyaları ve fuse tanımları dahil sonuç alamadığınız kısa, basit bir kodu koyar mısınız? Proteus'da deniyorsanız o dosyayı da koyun.
Başlık: Ynt: port okuma
Gönderen: papsukkal - 20 Haziran 2011, 15:57:35
kullandığım internette kısıtlamalar olduğu için resim,dosya vs. yükleyemiyorum

pic 18f452
128x64 glcd port b ve d ye irtibatlı
4 x 4 tuş takımı port c de
değişkenlerin durumunu proteusta debug menüden inceliyorum. çözemediğim klavye fonksiyonu



#include <18f452.h>
#device *=16
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //Reset when brownout detected
#FUSES NOPUT                    //No Power Up Timer
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
#include <HDM64GS12x.c>
#include <graphics.c>
#BYTE PORTC = 0xF82

int menu;
char very[]="Ver : 1.0.0.0.0";
char verd[]="Ver : 1.0.0.0.0";
char degv[]="Volt: 0 - 30";
char dega[]="Akım: 0 - 10";
char hakkinda[]="mikailakbas@hotmail";


const int8 image_100[64][16] = {
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x1F 0xF8 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x3F 0xFC 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x7F 0xFC 0x38,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0xF8 0xFC,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0xF8 0xFC,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x01 0xF1 0xF8,0x78 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x01 0xF3 0xF8,0xF8 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x01 0xF7 0xF9,0xF8 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x03 0xF7 0xFB,0xF8 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x03 0xED 0xF3,0xF8 0x01 0xFC 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x03 0xFD 0xF7,0xF0 0x03 0xF8 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x07 0xFB 0xFD,0xF0 0x03 0xF8 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x07 0xF3 0xFB,0xF0 0x06 0xF8 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x07 0xE3 0xFB,0xE0 0x0D 0xF8 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x0F 0xE7 0xF3,0xE0 0x0D 0xF0 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x0F 0xC7 0xE7,0xC0 0x19 0xF0 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x0F 0x87 0xC7,0xC0 0x33 0xF0 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x1F 0x07 0xC7,0xFE 0x73 0xE0 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x1E 0x00 0x00,0x00 0xC7 0xC0 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01,0xFF 0xFF 0xFC 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0F,0xFF 0xFF 0xFC 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x3F,0x07 0x0F 0x80 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x7C,0x0E 0x0F 0x80 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xF8,0x1C 0x1F 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x01 0xF0,0x78 0x1F 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x01 0xF0,0xF0 0x1F 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x01 0xFF,0xC0 0x3E 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF,0x80 0x3E 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x7E,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0xF0 0xF8 0x07,0x0F 0x01 0x8F 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x19 0x88 0x09,0x8D 0x83 0x8D 0x80 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x19 0x8C 0x08,0x98 0xC7 0x98 0xC0 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x19 0xE0 0x01,0x98 0xCD 0x98 0xC0 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0xF0 0xF8 0x07,0x18 0xC1 0x98 0xC0 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x00 0x1D 0xE0,0xD8 0xC1 0x98 0xC0 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x01 0x8C 0x18,0xD8 0xC1 0x98 0xC0 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x01 0x8C 0x18,0xCD 0x81 0x8D 0x80 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x03 0x00 0xF8 0x0F,0x07 0x01 0x87 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
};

const int8 image_101[64][16] = {
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x3F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF,0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFC,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x1D 0xC0 0xC0 0x00 0x00 0x02,0x40 0x00 0x00 0x86 0x00 0x00 0x00 0x04,
0x20 0x00 0x08 0x80 0x44 0x00 0x00 0x02,0x40 0x00 0x00 0x82 0x00 0x00 0x00 0x04,
0x20 0x00 0x08 0x80 0x44 0x00 0x00 0x02,0x40 0x00 0x00 0x82 0x00 0x00 0x00 0x04,
0x20 0x00 0x08 0x9C 0x4F 0x00 0x00 0x02,0x40 0x00 0x01 0x42 0xE0 0x68 0x00 0x04,
0x20 0x00 0x05 0x22 0x44 0x00 0x00 0x02,0x40 0x00 0x01 0x42 0x4C 0xD4 0x00 0x04,
0x20 0x00 0x05 0x22 0x44 0x00 0x00 0x02,0x40 0x00 0x01 0x42 0x84 0x54 0x00 0x04,
0x20 0x00 0x05 0x22 0x44 0x00 0x00 0x02,0x40 0x00 0x01 0xC3 0x04 0x54 0x00 0x04,
0x20 0x00 0x02 0x22 0x44 0x00 0x00 0x02,0x40 0x00 0x02 0x22 0x84 0x54 0x00 0x04,
0x20 0x00 0x02 0x22 0x44 0x80 0x00 0x02,0x40 0x00 0x02 0x22 0x44 0x54 0x00 0x04,
0x20 0x00 0x02 0x1C 0xE3 0x00 0x00 0x02,0x40 0x00 0x07 0x77 0xEE 0xD4 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x3F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFE,0x7F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFC,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x23 0x80 0x00 0x00 0x00 0x00 0x00 0x02,0x47 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x24 0x01 0x00 0x00 0x00 0x00 0x00 0x02,0x48 0x02 0x00 0x00 0x00 0x00 0x00 0x04,
0x24 0x13 0x80 0x00 0x00 0x00 0x00 0x02,0x48 0x27 0x00 0x00 0x00 0x00 0x00 0x04,
0x23 0x29 0x10 0x00 0x00 0x00 0x00 0x02,0x46 0x52 0x20 0x00 0x00 0x00 0x00 0x04,
0x20 0xB9 0x00 0x00 0x00 0x00 0x00 0x02,0x41 0x72 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0xA1 0x10 0x00 0x00 0x00 0x00 0x02,0x41 0x42 0x20 0x00 0x00 0x00 0x00 0x04,
0x27 0x18 0x80 0x00 0x00 0x00 0x00 0x02,0x4E 0x31 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x02,0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x04,
0x3F 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF,0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFC,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
};

void glcd_image(int tip)
{
char i,j;
signed char k;
   
if (tip==0)
   {
   for( i = 0 ; i < 64 ; i ++ )
      {
      for( j = 0 ; j < 16 ; j ++)
         {
         for(k=7;k>-1;--k)
            {
            if( bit_test(image_100[j] ,7-k ))
            glcd_pixel( j*8+k,i, ON );
            }
         }
      }
     
   delay_ms(2000);
   glcd_fillScreen(0);
   
   glcd_text57(5,11,very,1,on);
   glcd_text57(5,20,verd,1,on);
   glcd_text57(5,29,degv,1,on);
   glcd_text57(5,38,dega,1,on);
   glcd_text57(9,56,hakkinda,1,on);


   delay_ms(2000);
//   glcd_fillScreen(0);
   }
   
if (tip==1)
   {
   for( i = 0 ; i < 64 ; i ++ )
      {
      for( j = 0 ; j < 16 ; j ++)
         {
         for(k=7;k>-1;--k)
            {
            if( bit_test(image_101[j] ,7-k ))
            glcd_pixel( j*8+k,i, ON );
            }
         }
      }
   }
}

int klavye(void)
   {
   int i, sutun, sayi;
   for ( i = 0 ;i < 4 ;i++)
      {
      SET_TRIS_C(0b11110000);
      switch(i)
         {
         case 0:
         output_high(pin_c0);
         sutun = 0;
         break;
         
         case 1:
         output_high(pin_c1);
         sutun = 1;
         break;
         
         case 2:
         output_high(pin_c2);
         sutun = 2;
         break;
         
         case 3:
         output_high(pin_c3);
         sutun = 3;
         break;
         }
         sayi = PORTC;
         delay_ms(20);
         OUTPUT_c(0x00);
      }
   return(sayi);     
   }

/////////////////////////////////////////////////////////

void main()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(t1_disabled);
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
   menu=0;
   
   delay_ms(1000);

   glcd_init(ON);
   glcd_fillScreen(0);
   glcd_image(0);
   delay_ms(1000);
   glcd_fillScreen(0);
   glcd_image(1);


basla:

while(TRUE){

   menu = klavye();

}
}
Başlık: Ynt: port okuma
Gönderen: JKramer - 20 Haziran 2011, 17:18:06
papsukkal.zip (http://www.4shared.com/file/vpMljkGy/papsukkal.html)

#use fixed_io(c) kullanırsanız giriş-çıkış işlemlerinde tris ayarları yapılmaz, sizin bunu en başta yapmanız gerekir. Herhangi bir şey yazmazsanız (sizin durumunuzda olduğu gibi) derleyici varsayılan olarak #use standart_io(c) şeklinde kabul eder. Bu durumda her giriş-çıkış komutunda ilgili tris register'ı ayarlanır. Mesela c portunu okuyalım:

sayi=input(c);

Bu durumda önce c portu tris register'ına FF yüklenir (tamamı giriş yapılır), daha sonra port değeri sayi değişkenine aktarılır. Eğer en başta #use fixed_io(c) direktifini yazsaydık, yukarıdaki satırla sadece c portunu okuyacak, tris register'ına dokunmayacaktık.

Özetlersek; derleyici her giriş-çıkış işleminde tris register(lar)'ına dokunmasın, ben ayarlarım derseniz #use fixed_io(x) kullancaksınız. İlgili port'u okurken de input(x) komutunu kullanabilirsiniz. Eğer tris ayarını yapamam, derleyici her seferinde kendi ayarlasın fakat port'u da okuyabileyim derseniz en başa #byte PORTC(adresi neyse) yazıp;
sayi=PORTC;
demeniz yeterli.

Bu arada basit, kısa bir kod derken gönderdiğim şekildeki gibi bir kodu kastetmiştim :).
Başlık: Ynt: port okuma
Gönderen: papsukkal - 20 Haziran 2011, 18:00:32
hocam çok sağol bu şekilde deniyeceğim.

daha önceden kodu foruma koymuştum. siz isteyince onun yeterli gelmediğini düşünerek bu şekilde yazdım

kolay gelsin
Başlık: Ynt: port okuma
Gönderen: papsukkal - 20 Haziran 2011, 18:41:37
Jkramer

aradığım tam olarak buymuş istediğim sonucu aldım

yardımın için sağol