सामान्य तौर पर, 8 से 16 से 32 बिट माइक्रोकंट्रोलर्स पर जाने का मतलब है कि आपके पास संसाधनों, विशेष रूप से मेमोरी, और अंकगणित और तार्किक संचालन करने के लिए उपयोग किए जाने वाले रजिस्टरों की चौड़ाई कम होगी। 8, 16, और 32-बिट मॉनीकर्स आम तौर पर आंतरिक और बाहरी डेटा के दोनों प्रकारों को संदर्भित करता है और अंकगणित और तार्किक कार्यों के लिए उपयोग किए जाने वाले आंतरिक रजिस्टर (एस) के आकार को भी कहा जाता है (केवल एक या दो कहा जाता है) , अब आम तौर पर 16 या 32 के रजिस्टर बैंक हैं)।
I / O पोर्ट पोर्ट आकार भी आमतौर पर डेटा बस आकार का पालन करेंगे, इसलिए 8-बिट माइक्रो में 8-बिट पोर्ट, 16-बिट में 16-बिट पोर्ट आदि होंगे।
8-बिट डेटा बस होने के बावजूद, कई 8-बिट माइक्रोकंट्रोलर्स में 16-बिट एड्रेस बस होती है और 2 ^ 16 या 64K मेमोरी बाइट्स को संबोधित कर सकती है (इसका मतलब यह नहीं है कि उनके पास कहीं भी लागू किया गया है)। लेकिन कुछ 8-बिट माइक्रो, लो-एंड PICs की तरह, केवल एक बहुत ही सीमित रैम स्पेस हो सकता है (उदाहरण के लिए PIC16 पर 96 बाइट्स)।
अपनी सीमित संबोधन योजना के आसपास जाने के लिए, कुछ 8-बिट माइक्रोज़ पेजिंग का उपयोग करते हैं, जहां पेज रजिस्टर की सामग्री मेमोरी के कई बैंकों में से एक का उपयोग करने के लिए निर्धारित करती है। आम तौर पर कुछ सामान्य रैम उपलब्ध होगी चाहे कोई भी पेज रजिस्टर करने के लिए सेट हो।
16-बिट माइक्रोकंट्रोलर आम तौर पर 64K मेमोरी तक ही सीमित होते हैं, लेकिन इसे प्राप्त करने के लिए पेजिंग तकनीकों का भी उपयोग कर सकते हैं। 32-बिट माइक्रोकंट्रोलर के पास ऐसी कोई पाबंदी नहीं है और यह 4GB तक की मेमोरी को संबोधित कर सकता है।
अलग-अलग मेमोरी साइज के साथ स्टैक साइज है। निचले अंत के माइक्रो में, यह मेमोरी के एक विशेष क्षेत्र में लागू किया जा सकता है और बहुत छोटा हो सकता है (कई PIC16 में 8-स्तरीय गहरी कॉल स्टैक है)। 16-बिट और 32-बिट माइक्रो में, स्टैक आमतौर पर सामान्य रैम में होगा और केवल रैम के आकार से सीमित होगा।
मेमोरी की मात्रा में भी बहुत अंतर हैं - प्रोग्राम और रैम दोनों - विभिन्न उपकरणों पर लागू। 8-बिट माइक्रोस में केवल कुछ सौ बाइट्स रैम हो सकती है, और कुछ हज़ार बाइट्स प्रोग्राम मेमोरी (या बहुत कम - उदाहरण के लिए PIC10F320 में केवल 256 14-फ्लैश के शब्द और 64 बाइट्स रैम हैं)। 16-बिट माइक्रोस में कुछ हजार बाइट्स रैम, और दस हजार हजार बाइट्स प्रोग्राम मेमोरी हो सकती है। 32-बिट माइक्रोस में अक्सर 64K बाइट्स रैम होता है, और शायद 1/2 एमबी या अधिक प्रोग्राम मेमोरी (PIC32MZ2048 में 2 एमबी फ्लैश और 512KB रैम होता है; नए जारी किए गए PIC32MZ2064DAH176 में ग्राफिक्स के लिए 2 एमबी फ्लैश और है। एक गहन 32MB की चिप रैम)।
यदि आप असेंबली भाषा में प्रोग्रामिंग कर रहे हैं, तो रजिस्टर-आकार की सीमाएं बहुत स्पष्ट होंगी, उदाहरण के लिए दो 32-बिट संख्याओं को जोड़ना 8-बिट माइक्रोकंट्रोलर पर एक कोर है, लेकिन 32-बिट पर तुच्छ है। यदि आप C में प्रोग्रामिंग कर रहे हैं, तो यह काफी हद तक पारदर्शी होगा, लेकिन निश्चित रूप से अंतर्निहित संकलित कोड 8-कड़वा के लिए बहुत बड़ा होगा।
मैंने बड़े पैमाने पर पारदर्शी कहा, क्योंकि विभिन्न सी डेटा प्रकारों का आकार एक आकार से दूसरे सूक्ष्म तक भिन्न हो सकता है; उदाहरण के लिए, एक कंपाइलर जो 8 या 16-बिट माइक्रो को लक्षित करता है, वह 16-बिट हस्ताक्षरित चर का अर्थ "int" का उपयोग कर सकता है, और 32-बिट माइक्रो पर यह 32-बिट चर होगा। इसलिए बहुत सारे प्रोग्राम स्पष्ट रूप से यह कहने के लिए #defines का उपयोग करते हैं, जैसे कि अहस्ताक्षरित 16-बिट चर के लिए "UINT16"।
यदि आप C में प्रोग्रामिंग कर रहे हैं, तो सबसे बड़ा प्रभाव आपके चर का आकार होगा। उदाहरण के लिए, यदि आप जानते हैं कि एक चर हमेशा 256 (या रेंज -128 में 127 से यदि हस्ताक्षरित) से कम होगा, तो आपको 8-बिट माइक्रो (जैसे PIC16) पर 8-बिट (अहस्ताक्षरित चार या चार) का उपयोग करना चाहिए ) चूंकि एक बड़े आकार का उपयोग करना बहुत अक्षम होगा। इसी तरह 16-बिट माइक्रो (जैसे PIC24) पर 16-बिट चर। यदि आप 32-बिट माइक्रो (PIC32) का उपयोग कर रहे हैं, तो यह वास्तव में कोई फर्क नहीं पड़ता क्योंकि MIPS निर्देश सेट में बाइट, शब्द और डबल-शब्द निर्देश हैं। हालांकि, कुछ 32-बिट माइक्रो पर, यदि उनके पास ऐसे निर्देशों का अभाव है, तो 8-बिट चर का हेरफेर मास्किंग के कारण 32-बिट से कम कुशल हो सकता है।
जैसा कि मंच के सदस्य vsz ने कहा, उन प्रणालियों पर जहां आपके पास एक चर है जो डिफ़ॉल्ट रजिस्टर आकार से बड़ा है (उदाहरण के लिए 8-बिट माइक्रो पर 16-बिट चर), और वह चर दो थ्रेड्स के बीच या बेस थ्रेड के बीच साझा किया जाता है और एक बाधा हैंडलर, किसी को भी चर परमाणु पर कोई भी ऑपरेशन (सिर्फ पढ़ने सहित) करना चाहिए , यह है कि यह एक निर्देश के साथ किया जाना दिखाई देता है। इसे महत्वपूर्ण खंड कहा जाता है। इसे कम करने का मानक तरीका महत्वपूर्ण अनुभाग को अक्षम / सक्षम इंटरप्ट जोड़ी के साथ घेरना है।
तो 32-बिट सिस्टम से 16-बिट या 16-बिट से 8-बिट पर जा रहे हैं, इस प्रकार के चर पर कोई भी संचालन जो अब डिफ़ॉल्ट रजिस्टर आकार से बड़ा है (लेकिन पहले नहीं थे) को एक महत्वपूर्ण माना जाना चाहिए अनुभाग।
एक और मुख्य अंतर, एक PIC प्रोसेसर से दूसरे में जा रहा है, बाह्य उपकरणों की हैंडलिंग है। यह शब्द आकार के साथ कम और प्रत्येक चिप पर आवंटित संसाधनों के प्रकार और संख्या के साथ करने के लिए अधिक है। सामान्य तौर पर, माइक्रोचिप ने एक ही परिधीय के प्रोग्रामिंग को विभिन्न चिप्स में उपयोग करने की कोशिश की है, जैसे कि संभव हो (जैसे कि टाइमर 0), लेकिन हमेशा अंतर होगा। अपने परिधीय पुस्तकालयों का उपयोग इन अंतरों को काफी हद तक छिपाएगा। एक अंतिम अंतर इंटरप्ट की हैंडलिंग है। फिर से माइक्रोचिप पुस्तकालयों से यहां मदद मिलती है।