PIC 16F शुरुआत .. विभिन्न संकलक का उपयोग करते समय प्रोग्राम-सिंटैक्स में अंतर


9

जैसा कि मैंने उल्लेख किया है, मैंने अभी-अभी प्रोग्रामिंग pic16f877a शुरू किया है। मैं अब 7 सेगमेंट डिस्प्ले के साथ काम कर सकता हूं। वर्तमान में मैं ccs संकलक का उपयोग कर रहा हूँ। कुछ गलत नहीं है उसके साथ। लेकिन मैं एक कंपाइलर स्वतंत्र प्रोग्रामर बनना पसंद करता हूं। इसलिए मैं एक साथ IAR या Hitechc जैसे अन्य संकलक में काम करना चाहता हूं। मैं जानना चाहता हूं कि क्या "कंपाइलर के अलावा अन्य प्रोग्राम्स में प्रोग्राम स्टेटमेंट डिक्लेरेशन" अलग होगा? कृपया मुझे मार्गदर्शन करें कि इस चीज को कैसे अपनाया जाए। मैं सभी प्रकार के सुझावों का स्वागत करूंगा। अग्रिम में धन्यवाद।

जवाबों:


9

वह महान जिसे आप संकलक स्वतंत्र होना चाहते हैं! दुर्भाग्य से हाईटेक और CCS कम अंत PIC के लिए कंपाइलर विशिष्ट प्रीप्रोसेसर घोषणाओं, कंपाइलर विशिष्ट पिन एक्सेस रूटीन का बहुत उपयोग करते हैं, और CCS संकलक विशिष्ट रूटीन जैसे SPI, I2C, ADC और इतने पर एक्सेस कोर कार्यों के लिए उपयोग करते हैं।

बहुत सारे प्रीप्रोसेसर #define, #ifdef, #ifndef इत्यादि के बिना अपने कोड को नॉन-कंपाइलर विशिष्ट होना संभव नहीं है और प्रत्येक कंपाइलर के विशिष्ट भागों तक पहुँच पाने के लिए। यह आपके कोड को अपठनीय बना देगा।

सबसे अच्छी बात जो आप लक्ष्य कर सकते हैं वह है आईडीई स्वतंत्र होना और ग्रहण जैसी किसी चीज़ का उपयोग करना, इसलिए कम से कम आप उसी आईडीई का उपयोग कर रहे हैं। यह कोर कार्यों को स्थापित करने के लिए सीसीएस जादूगरों को खोने का परिणाम देगा, लेकिन आपको उसी आईडीई का उपयोग करने में अधिक लचीलापन देगा।

विचार करने के लिए एक और बात यह है कि हाईटेक और सीसीएस दोनों (कम से कम अतीत में) एक सच्चे सी कंपाइलर लिंकर नहीं है और आपको "#include myfile.c" का उपयोग करने की आवश्यकता है, जो कि मैं व्यक्तिगत रूप से घृणा करता हूं ... लेकिन यह एक और कहानी है।

मैंने IAR कंपाइलर पर कोई टिप्पणी नहीं की है क्योंकि मैंने केवल CCS और हाईटेक का उपयोग किया है। दोनों ने ठीक काम किया, लेकिन मैं मोटोरोला (अब फ़्रीस्केल) प्लेटफ़ॉर्म से पार करने और मेट्रोवर्क्स कंपाइलर का उपयोग करके वास्तव में कभी भी खुश नहीं था, जो उस समय अधिक उन्नत था। IAR कंपाइलर अच्छा लगता है लेकिन मैंने कभी इसका इस्तेमाल नहीं किया।


यदि आप pic18 पर या उससे ऊपर रहना रोक सकते हैं तो आपको c18 संकलक पर एक नज़र डालनी चाहिए। इसके पास बड़ी मात्रा में समर्थन है। IAR PIC का समर्थन छोड़ रहा है, वे अब रखरखाव के साथ लाइसेंस नहीं बेचेंगे।
कोर्तुक

यह मेरी समझ है कि PIC16 / 12/10 वास्तुकला सी भाषा के लिए बहुत अच्छी तरह से मैप नहीं करता है। इसलिए, C कंपाइलर्स के पास PIC आर्किटेक्चर की भरपाई के लिए कुछ असामान्य और गैर-मानक संरचनाएं होनी चाहिए। अंतिम परिणाम संकलकों के बीच का कोई नहीं है।
कॉनर भेड़िया

7

यदि आप PIC18 भागों का उपयोग कर रहे थे, तो मैं माइक्रोचिप से C18 संकलक की सिफारिश करूंगा। यह CCS संकलक की तुलना में ANSI C के अधिक निकट है। मैं हाई-टेक कंपाइलर के बारे में निश्चित नहीं हूं क्योंकि मैंने इसका इस्तेमाल नहीं किया है। जैसा कि पहले कहा गया था कि अगर आपको वास्तव में संकलक स्वतंत्र कोड बनाने की आवश्यकता है, तो आपको बहुत सारे पूर्व-संकलक निर्देशों का उपयोग करने की आवश्यकता होगी। मैं कुछ माइक्रोचिप उदाहरण के कार्यक्रमों पर एक नज़र डालने की सलाह दूंगा जो कि यह कैसे किया जाता है, इसका अंदाजा लगाने के लिए कई कंपाइलरों का समर्थन करते हैं।


pic18 के लिए c18, pic24 के लिए c30 और dsic, pic32 के लिए c32!
कोर्तुक

सीसीएस अच्छा में है कि कुछ काम करने के लिए सरल कर रहे हैं (, बीच में आता है और टाइमर उदाहरण के लिए - सभी माइक्रोचिप उदाहरण आप लिखते हैं C18 में काम सही करने के लिए बीच में आता है प्राप्त करने के लिए एएसएम है), लेकिन यह एएनएसआई सी के करीब है
जे Polfer

आपको केवल एक असेंबली इंस्ट्रक्शन की जरूरत है और वह है GOTO जो इंटरप्ट सर्विस रूटीन को इंगित करने के लिए इंटरप्ट वेक्टर को सेटअप करने के लिए उपयोग किया जाता है।
mjh2007

3

दुर्भाग्य से आप पाएंगे कि एक माइक्रोकंट्रोलर के लिए एक कंपाइलर स्वतंत्र कार्यक्रम खोजना बहुत मुश्किल है। कई समस्याएं हैं, यहाँ सिर्फ दो हैं:

  1. बाह्य उपकरणों में अंतर, एसएफआर नामकरण, आदि (विशेष रूप से अन्य प्रोसेसर पर, लेकिन यहां तक ​​कि एक ही परिवार से संकलक के साथ), और;

  2. कुछ संकलकों पर गैर-मानक विशेषताएं जैसे व्यक्तिगत रूप से बिट्स स्थापित करना या असेंबली कोड लागू करने के लिए अलग-अलग संरचनाएं।

16F श्रृंखला वास्तुकला के संदर्भ में बहुत सीमित है और वास्तव में सी कंपाइलर का समर्थन करने के लिए डिज़ाइन नहीं किया गया है। इसीलिए इसके लिए कोई GCC नहीं है।


3

SDCC पर एक नज़र डालें । यह PIC16 और PIC18 उपकरणों में से कई का समर्थन करता है। GCC PIC24 और dsPIC का समर्थन करता है।


मैंने विभिन्न संकलक का उपयोग करते समय बयानों में अंतर के बारे में पूछा .. वैसे भी मुझे 1 और संकलक 'sdcc' के बारे में पता चला .. बहुत बहुत धन्यवाद ..
4V पर VV राव

2

संकलक-आश्रित होने के लिए सबसे संभावित पहलू हैं:

  • एकल बिट्स का उपयोग करना (विशेषकर IO बंदरगाहों में)
  • पूर्णांक, और चार के आकार पर हस्ताक्षर किए या अहस्ताक्षरित किया जा रहा है
  • मजेदार संकेत: C18 रोम और राम संकेत को अलग करता है :(
  • कॉन्फ़िगरेशन फ़्यूज़
  • व्यस्त प्रतीक्षा

इसे संभालने के लिए मेरा पसंदीदा तरीका इन पहलुओं के लिए मैक्रोज़ लिखना है, और कंपाइलर को कंपाइलर-विशिष्ट पूर्वनिर्धारित मैक्रोज़ के आधार पर सही मैक्रो का चयन करना है। मैंने RFM70 लाइब्रेरी और उदाहरण एप्लिकेशन इस तरह से बनाए जो PIC14 (HiTechC), PIC16 (C18) और ARM (GCC) पर चलते हैं।

(अद्यतन) मेरा RFM70 पुस्तकालय अब पूरा हो गया है। यह PIC 16F (हाईटेक कंपाइलर), C और C ++ को LPC11114 (कोर्टेक्स) और LPC2148 (ARM7TDMI) (GCC कंपाइलर) और Arduino (ATMega128, GCC कंपाइलर) पर C का समर्थन करता है। यह पायथन लिपि में कुछ प्रीप्रोसेसिंग करने से एक ही स्रोत से (डॉक्सीजन डॉक्यूमेंट सहित) उत्पन्न होता है। जल समर्थन विकास के अधीन है, शायद प्रोटॉनबेसिक का पालन करेगा। http://www.voti.nl/rfm70

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.