मैं एक कंप्यूटर के साथ वायरलेस रूप से 8051 माइक्रोकंट्रोलर संचार कर रहा हूं। माइक्रोकंट्रोलर अपने सीरियल पोर्ट (डीबी 9) को एक स्ट्रिंग भेज देगा और कंप्यूटर इस स्ट्रिंग को प्राप्त करेगा और इसे कुशल बना देगा।मैं केवल एक बार 8051 से स्ट्रिंग को कैसे भेज सकता हूं?
मेरी समस्या यह है कि मुझे नहीं पता कि 8051 स्ट्रिंग को केवल एक बार कैसे प्रेषित करना है। चूंकि मुझे पीसी अंत में स्ट्रिंग में हेरफेर करने की ज़रूरत है, इसलिए इसे केवल एक बार प्राप्त करना होगा। वर्तमान में, हालांकि सी कोड में मैं एक बार स्ट्रिंग भेज रहा हूं, मेरे कंप्यूटर पर मुझे लगातार एक ही स्ट्रिंग मिल रही है। मुझे लगता है कि ऐसा इसलिए है क्योंकि एसबीयूएफ में जो कुछ भी है, वह लगातार प्रसारित होता है। क्या कोई तरीका है कि मैं केवल एक बार अपनी स्ट्रिंग भेज सकता हूं? क्या एसबीयूएफ खाली करने का कोई तरीका है?
मैंने डीबी 9 पर आरटीएस (भेजने का अनुरोध) पिन (7 वां पिन) का उपयोग करने की कोशिश की क्योंकि मैंने कहीं पढ़ा है कि अगर मैंने उस पिन पर वोल्टेज को अस्वीकार कर दिया है तो यह धारावाहिक बंदरगाह पर डेटा के प्रवाह को रोक देगा। तो मैंने जो किया वह स्ट्रिंग भेजने के लिए मेरे माइक्रोकंट्रोलर को प्रोग्राम किया गया था और उसके बाद मेरे डीबी 9 आरटीएस पिन से जुड़े आउटपुट पिन में तर्क स्तर 0 भेजा गया था। हालांकि, यह काम नहीं किया।
क्या किसी के पास कोई सुझाव है? मैं वास्तव में उनकी सराहना करता हूं।
संपादित
सॉफ्टवेयर है कि मैं पीसी पर उपयोग कर रहा हूँ XBee मॉड्यूल के लिए एक्स-सीटीयू है।
include reg51.h
void SerTx(unsigned char);
void main(void)
{
TMOD = 0x20;
TH1 = 0xFD;
SCON = 0x50;
TR1 = 1;
SerTx('O');
SerTx('N');
SerTx('L');
SerTx('Y');
}
void SerTx(unsigned char x)
{
SBUF = x;
while(TI==0);
TI = 0;
}
किसी को सत्यापित कृपया सकते हैं कि यह केवल स्ट्रिंग भेजे एक बार वास्तव में है: यह मेरा माइक्रोकंट्रोलर पर कोड है?
संपादित
स्टीव, brookesmoses तरह लग रहा है और नील सिर पर कील मारा जब वे ने कहा कि यह था कि क्या मेरी मुख्य कार्य है कि समस्या पैदा कर रहा था के बाद हो रहा था। मैंने अभी सुझाए गए कोड स्टीव को डालने की कोशिश की है (अधिक विशेष रूप से (;;); और मुख्य के बाहर सेरटेक्स को परिभाषित करना) और यह पूरी तरह से काम करता है। नियंत्रक शायद रीबूट किया गया है और इसलिए एक ही कोड खुद को दोहराता रहता है।
मदद के लिए बहुत बहुत धन्यवाद! :)
मैं जिस सॉफ्टवेयर का उपयोग कर रहा हूं वह एक्सबीई मॉड्यूल के लिए एक्स-सीटीयू है। यह मेरे माइक्रोकंट्रोलर पर कोड है: # शामिल शून्य सेरटेक्स (हस्ताक्षरित चार) शून्य; शून्य मुख्य (शून्य) { \t टीएमओडी = 0x20; \t TH1 = 0xFD; \t एससीओएन = 0x50; \t TR1 = 1; \t \t \t सेरटेक्स ('ओ'); \t सेरटेक्स ('एन'); \t सेरटेक्स ('एल'); \t सेरटेक्स ('वाई'); \t शून्य सेरटेक्स (हस्ताक्षरित चार एक्स) { \t एसबीयूएफ = एक्स; \t जबकि (टीआई == 0); \t टीआई = 0; } } क्या कोई यह सत्यापित कर सकता है कि वास्तव में यह केवल एक बार स्ट्रिंग भेज रहा है? –
CodeConfused
कृपया अपना प्रश्न संपादित करें, और कोड के रूप में स्वरूपित कोड डालें, इसलिए इसे पढ़ना आसान है। –
@CodeConfused: मुझे खुशी है कि हम सभी को एक समाधान मिला! मेरे पास आपके लिए दो और अनुरोध हैं। (1) इस प्रश्न के लिए, और स्टैक ओवरफ़्लो पर आपके सभी अन्य प्रश्नों के लिए, कृपया अपने प्रश्न के सर्वोत्तम उत्तर प्रदान करने वाले व्यक्ति द्वारा बड़ी टिक पर क्लिक करके "स्वीकृत" के रूप में एक उत्तर चिह्नित करें। यह उन अन्य लोगों के लिए उपयोगी है जिनके पास भविष्य में एक ही प्रश्न हो सकता है, क्योंकि वे तुरंत सर्वश्रेष्ठ जवाब देख सकते हैं। (2) इस प्रश्न में, कोड को कोड के रूप में प्रारूपित करें। ऐसा करने के लिए, प्रश्न संपादित करें, कोड का चयन करें, और कोड बटन दबाएं (यह उस पर 1s और 0s वाला बटन है)। धन्यवाद। –