ARM ADuC7026 & Keil

Başlatan serdarkaradeniz, 04 Mayıs 2007, 15:40:51

serdarkaradeniz

CCS C ' de bir pin çıkışı OUTPUT_HIGH(PIN_X) demek yeterli oluyor. Keil' de ADuC7026 çıkışını (p0.0 ) 1 yapmak için aşağıdakini yazmam gerekli.

GP0DAT = 0x01010000;

DataSheet içinde de belirtiği üzere GP0DAT register configurasyon değerlerinide içeriyor. Ben illa bir pini okumak yada bir pini high/low yapmak için bu register' ı  bu haliylemi kullanmak zorundayım? Mesala P0.0=1;
P0.1=1;
Yazmak varken ben;
GP0DAT = 0x01030000; yazmak zorunda kalıyorum....

ise

GP0SET=0x00010000; yazıldığında 1. biti 1 yapar
GP0CLR=0x00010000; yazıldığında 1. biti 0 yapar

GP0DAT=0x04000000;  3 bit çıkış  diğerleri giriş
GP0DAT Giriş ve çıkış yapılacak bitlerle set ve clr olacak kısımları tek hamlede düzeltebilir.
GP0CON ise portun yapısını belirler  .

#define Led 0x00010000  

GP0DAT=0x01000000;   //  port 1. bit  çıkış yapıldı

GP0SET=Led;  
GP0CLR=Led;

pdfsini daha detaylı incelemenizi tavsiye ederim....

mp3dragon

#define veya struct/typedef tanımlamaları yaparak programının okunabilirliğini arttırabilirsin.

P0.1 = 0; gibi kullanmak için gerekli tanımlamaları senin yapman gerekir.
örnek programları ve anci-c anlatan kitapları incelemeni tavsiye ederim.

Piyasadaki tüm ARM derleyicileri Ansi - C uyumludur. aYe nin bir yerde bahsettiği gibi basic veya CCS bilen birinin Ansi-C öğrenmesi, hiç programlama dili bilmeyen birine göre daha zordur. Bu sebeple yeni dil öğrenmeye başlayan arkadaşlara tavsiyem Ansi-C öğrenmesidir. Yoksa ilerde pinout, output, serin gibi komutlar arayıp bulamayınca bocalarsınız.

Malesef CCS için picte yazdığın bir programı ARM için yeni baştan yazman gerekir.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

serdarkaradeniz

arkadaşlar cevap için teşekkürler...


ise arkadaşım
GP0SET=0x00000001; yazıldığında 1. biti 1 yapar
GP0CLR=0x00000001; yazıldığında 1. biti 0 yapar

yazmışsınız. Fakat aşağıdaki gibi olacak galiba. Takıldıkça başınızı ağrıtırım artık:)

GP0SET=0x00010000; yazıldığında 1. biti 1 yapar
GP0CLR=0x00010000; yazıldığında 1. biti 0 yapar
#define Led  0x00010000;

ise

gönderdikten sonra farketmiştim onu düzeltme yapmıştım sanırım düzeltmeden evvel okumuşsunuz bende hızlı cevap vermişsiniz:D


GP0DAT verisinde
0..7=     GP0CON  
8..15=   GP0PAR
16..23= GP0SET CLR
24..31=  GP0I/O temsil eder..