Arduino पर असेंबली: IO रजिस्टर


13

प्रश्न: जब मैं प्रोग्रामिंग के लिए असेंबली का उपयोग कर रहा हूं तो Arduino Uno पर IO तक पहुंचने के लिए मैं कौन से रजिस्टर का उपयोग करता हूं?

पृष्ठभूमि: मैं अरुडिनो पर अपनी विधानसभा भाषा कौशल का अभ्यास करने में रुचि रखता था (मुझे लगा कि कंसोल IO के बारे में चिंता करने की तुलना में एलईड को चालू / बंद करना आसान होगा)। एक करने से प्रारंभिक खोज , मैं ने पाया है कि AVR toolchain Arduino कार्यक्रम के लिए इस्तेमाल किया जा सकता है। फिर भी, मैं काफी नहीं जानता कि कैसे IO पिन के लिए संबंधित रजिस्टर ढूंढना है।

जवाबों:


8

AVR माइक्रोकंट्रोलर्स के लिए डेटशीट पढ़ने के लिए यथोचित हैं। अपने Arduino (जैसे। ATmege328) पर सटीक नियंत्रक के लिए बस Google और atmel.com वेबसाइट पर "पूर्ण" डेटशीट खोजें । "सारांश" डाउनलोड न करें, इसमें बहुत सारी जानकारी शामिल नहीं है। डेटाशीट को atmel.com से डाउनलोड करें, जो हाल ही के प्रलेखन के साथ एकमात्र स्थान है।

बुनियादी IO में तीन रजिस्टर का उपयोग किया जाता है ("I / O-Ports" नामक अध्याय की जाँच करें):

जहाँ n एक पोर्ट आइडेंटिफ़ायर है, A, B, C, ... से एक अक्षर है, जो आपके नियंत्रक द्वारा IO पिन की संख्या पर निर्भर करता है। प्रत्येक रजिस्टर में प्रत्येक बिट एक एकल GPIO पिन का प्रतिनिधित्व करता है (हाँ, आपको इसे समझने के लिए बाइनरी पर कुछ बुनियादी ज्ञान की आवश्यकता है)।

  • DDR n , डेटा डायरेक्शन रजिस्टर: यह मूल रूप से इनपुट (0) या आउटपुट (1) के लिए पिन को कॉन्फ़िगर करता है।
  • पोर्ट एन , पोर्ट एन डेटा रजिस्टर: जब एक पिन आउटपुट के रूप में सेट किया जाता है, तो संबंधित बिट आउटपुट पिन को उच्च (1) या कम (0) करता है। जब इनपुट के रूप में कॉन्फ़िगर किया जाता है, तो यह आउटपुट पिन पर एक कमजोर पुल प्रतिरोधी को सक्षम करता है।
  • PIN n , पोर्ट n इनपुट रजिस्टर: इनपुट के रूप में कॉन्फ़िगर किए गए पिन पर वर्तमान स्तर को पढ़ने के लिए इस रजिस्टर का उपयोग करें।

3
इस। चरण 1: एक arduino के रूप में यह सोचना बंद करो। यह। यह एक पीसीबी पर ATmega MCU है। 2. डेटशीट पढ़ें। 3. वास्तव में नहीं, डेटाशीट पढ़ें
कॉनर वुल्फ

आह ... यह वही है जो मुझे चाहिए था। मुझे लगता है कि मैंने Arduino- लक्षित ट्यूटोरियल की तलाश में इतना समय बिताया, कि मैं भूल गया कि मैं बस एक AVR नियंत्रक प्रोग्रामिंग कर रहा था, और इसके डेटाशीट का उपयोग कर सकता था।
अपनोर्टन

1

इसे देखें : http://arduino.cc/en/Reference/PortManipulation

इसके अलावा: http://arduino.cc/en/Hacking/PinMapping168

अन्य बंदरगाहों और पिनों के लिए, अपने कंट्रोलर के लिए डेटशीट रखें, वे वास्तव में उन लोगों के लिए उपयोगी हैं जो उन्हें समझ सकते हैं! :)


3
लिंक केवल उत्तर साइट के लिए उपयोगी नहीं हैं, क्योंकि हम लिंक का भंडार स्थापित करने का प्रयास नहीं कर रहे हैं। इसके अलावा, लिंक केवल उत्तर बेकार है अगर लिंक भविष्य में कभी नीचे जाता है। बेहतर होगा कि उत्तर के भीतर की सामग्री को संक्षेप में प्रस्तुत या समाहित करें ताकि उपयोगकर्ता यह जान सकें कि उन्हें यहाँ क्या चाहिए या बहुत कम से कम पर्याप्त संदर्भ प्राप्त हो ताकि स्वयं समाधान खोजने में सक्षम हों।
एशेश्र
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.