आपके माइक्रोकंट्रोलर के कई पिन में अलग-अलग कार्य होते हैं। 'सामान्य' फ़ंक्शन GPIO, सामान्य प्रयोजन इनपुट / आउटपुट को संदर्भित करेगा । उस स्थिति में, आप संबंधित रजिस्टरों से लिखने और पढ़ने के द्वारा सीधे इन पिनों का उपयोग कर सकते हैं।
'वैकल्पिक' कार्य अन्य कार्यों को संदर्भित करेंगे, जिसमें I 2 C, SPI, USART, CCP, PWM, घड़ी, ADC, आदि शामिल हो सकते हैं ... वैकल्पिक क्रिया में परिधीय पर निर्भर होने पर आप पिन को कैसे नियंत्रित करते हैं, लेकिन यह आम तौर पर विशेष फ़ंक्शन रजिस्टर (एसएफआर) से लिखने और पढ़ने के लिए नीचे आता है; परिधीय बाकी का ख्याल रखता है।
एक RESET निर्भर होने के बाद कौन सा फ़ंक्शन मानक है (यह हमेशा GPIO नहीं है !), और आप प्रासंगिक डेटाशीट में पा सकते हैं। अधिकांश समय, आप उस फ़ंक्शन का चयन कर सकते हैं जिसे आप ऑन-द-फ्लाई का उपयोग करना चाहते हैं, इसलिए आप बाह्य उपकरणों के बीच स्विच कर सकते हैं।
कई परिधीयों के लिए एक पिन का उपयोग करके, आप बहुत अधिक सुविधाओं के साथ माइक्रोकंट्रोलर बना सकते हैं। हालाँकि, क्योंकि आप अधिकांश समय उस पिन पर परिधीय हर समय चाहते हैं (और फ़ंक्शंस को ऑन-द-फ़्लाई पर स्विच नहीं करना चाहते हैं) आप एक प्रोग्राम में सभी बाह्य उपकरणों का उपयोग नहीं कर सकते हैं, या कम से कम एक ही समय में नहीं कर सकते हैं। समय। दूसरी ओर, यह वास्तव में वैसे भी अक्सर जरूरत नहीं है।
जैसा कि कॉनर बताते हैं , 'अल्टरनेट फंक्शन' किसी और चीज को संदर्भित कर सकता है, बस थोड़े अलग संदर्भ में: यहां यह नहीं है कि आप किस फंक्शन को पिन पर रखते हैं, बल्कि किसी फंक्शन के लिए आप किस पिन का उपयोग करते हैं। इसे पेरिफेरल पिन सिलेक्ट कहा जाता है, और मूल रूप से इसका मतलब है कि आप चुन सकते हैं कि आपका पेरिफेरल किस पिन का उपयोग कर रहा है। उदाहरण के लिए, आप आरएस 1 और आरए 2 या आरबी 1 और आरबी 2 से अधिक आरएस 232 कर सकते हैं ।
अधिक विस्तृत विवरण के लिए कॉनर का जवाब देखें (और इसके लिए उसे अपवोट करें)।