PIC 16F acemi .. farklı derleyiciler kullanıldığında program-sözdizimi farkı


9

Bahsettiğim gibi, pic16f877a programlamaya yeni başladım. Şimdi 7 segmentli ekranla çalışabiliyorum. Şu anda ccs derleyici kullanıyorum. Bunda yanlış bir şey yok. Ama derleyici bağımsız bir programcı olmayı tercih ederim. Bu yüzden aynı anda IAR veya Hitechc gibi diğer derleyicilerde çalışmak istiyorum. Ben ccs dışında "derleyiciler program deyimi bildirimi" farklı olup olmadığını bilmek istiyorum? Lütfen bana bu şeye nasıl yaklaşacağımı yönlendir. Her türlü öneriyi memnuniyetle karşılarım. Şimdiden teşekkürler.

Yanıtlar:


9

Derleyici bağımsız olmak istediğiniz harika! Ne yazık ki, düşük uçlu PIC'ler için hitech ve CCS derleyicileri, derleyiciye özgü önişlemci bildirimleri, derleyiciye özgü pim erişim rutinleri ve SPI, I2C, ADC ve benzeri temel işlevler için CCS derleyicisine özel rutinler kullanır.

Her derleyicinin sunduğu belirli bölümlere erişmek için kodunuzu çok sayıda önişlemci #define, #ifdef, #ifndef ve benzeri olmadan derleyiciye özgü olmayacak şekilde yazmak mümkün değildir. Bu, kodunuzu okunamaz hale getirir.

Hedefleyebileceğiniz en iyi şey IDE'den bağımsız olmak ve tutulma gibi bir şey kullanmaktır, bu yüzden en azından aynı IDE'yi kullanıyorsunuz. Bu, çekirdek işlevleri ayarlamak için CCS sihirbazlarını kaybetmenize neden olur, ancak aynı IDE'yi kullanma konusunda size daha fazla esneklik sağlar.

Dikkate alınması gereken başka bir şey, hem hitech hem de CCS'nin (en azından geçmişte) gerçek bir c derleyici bağlayıcısına sahip olmaması ve kişisel olarak hor gördüğüm "#include myfile.c" yi kullanmanız gerektiğidir ... ama bu başka bir hikaye.

Sadece CCS ve hitech kullandığım için IAR derleyicisine yorum yapmadım. Her ikisi de iyi çalıştı, ancak Motorola (şimdi freescale) platformundan geçtikten ve o sırada daha gelişmiş olan metroworks derleyicisini kullandıktan sonra gerçekten mutlu olmadım. IAR derleyicisi iyi görünüyor ama hiç kullanmadım.


Pic18'de veya üstünde kalmayı başarabiliyorsanız, c18 derleyicisine bir göz atmalısınız. Çok miktarda desteği var. IAR PIC desteğini bırakıyor, artık bakımla lisans satmayacaklar.
Kortuk

Benim anlayışım PIC16 / 12/10 mimarisinin C diliyle çok iyi eşleşmediğiydi. Bu nedenle, C derleyicilerinin PIC mimarisini dengelemek için bazı olağandışı ve standart dışı yapılara sahip olması gerekir. Sonuçta hiçbir derleyici birlikte çalışmaz.
Connor Wolf

7

PIC18 parçaları kullanıyorsanız, Microchip'ten C18 derleyicisini tavsiye ederim. ANSI C'ye CCS derleyicisinden çok daha yakındır. Kullanmadığımdan Hi-Tech derleyicisinden emin değilim. Daha önce de belirtildiği gibi, derleyiciden bağımsız kod yapmanız gerekiyorsa, derleyici öncesi birçok yönergeyi kullanmanız gerekecektir. Nasıl yapıldığına dair bir fikir edinmek için birden fazla derleyiciyi destekleyen Microchip örnek programlarına göz atmanızı tavsiye ederim.


pic18 için c18, pic24 için c30 ve dspic, pic32 için c32!
Kortuk

CCS, bazı şeylerin yapılması daha kolay olduğu için iyidir (örneğin, kesmeler ve zamanlayıcılar - tüm Microchip örnekleri,
C18'de

Yalnızca bir montaj yönergesine ihtiyacınız vardır ve bu, kesme vektörünü kesme hizmeti rutinini gösterecek şekilde ayarlamak için kullanılan GOTO'dur.
mjh2007

3

Ne yazık ki bir mikrodenetleyici için derleyiciden bağımsız bir program bulmanın çok zor olduğunu göreceksiniz. Birkaç sorun var, işte sadece iki tane:

  1. Çevre birimleri, SFR adlandırma, vb. (Özellikle diğer işlemciler üzerinde, ancak aynı aileden derleyicilerde bile) ve;

  2. Bazı derleyicilerdeki bitleri tek tek ayarlamak veya montaj kodunu çağırmak için farklı yapılar gibi standart olmayan özellikler.

16F serisi mimari açıdan çok sınırlıdır ve C derleyicisini desteklemek için tasarlanmamıştır. Bu yüzden bunun için GCC yoktur.


3

SDCC'ye bir göz atın . PIC16 ve PIC18 cihazlarının çoğunu destekler. GCC, PIC24 ve dsPIC'yi destekler.


i farklı derleyiciler kullanırken ifadelerdeki farklılıklar hakkında sordum .. neyse ben yaklaşık 1 derleyici 'sdcc' hakkında bilmek geldi .. çok teşekkürler ..
VV Rao

2

Derleyiciye bağımlı olma olasılığı en yüksek olanları şunlardır:

  • tek bit kullanma (özellikle IO bağlantı noktalarında)
  • tamsayı boyutları ve karakter imzalı veya imzasız
  • komik işaretçiler: C18 rom ve ram işaretçileri farklılaştırır :(
  • yapılandırma sigortalar
  • meşgul beklemek

Bunu işlemek için tercih ettiğim yol, bu yönler için makrolar yazmak ve derleyicinin, derleyiciye özel önceden tanımlanmış makrolara dayalı olarak doğru makroyu seçmesini sağlamaktır. PIC14 (HiTechC), PIC16 (C18) ve ARM (GCC) üzerinde çalışan bir RFM70 kütüphanesi ve örnek uygulamalar yaptım.

(güncelleme) RFM70 kütüphanem tamamlandı. PIC 16F (Hitech derleyici) üzerinde C, LPC11114 (Cortex) ve LPC2148 (ARM7TDMI) (GCC derleyici) ve Arduino (ATMega128, GCC derleyici) üzerinde C ve C ++ destekler. Bu, bir Python betiğinde bazı ön işlemler yapılarak aynı kaynaktan üretilir (doxygen belgeleri dahil). Jal desteği geliştiriliyor, belki ProtonBasic takip edecek. http://www.voti.nl/rfm70

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.