क्या में दुनिया सी इस कोड के साथ गलत है??

D

david90

Guest
कोड:

# शामिल <avr/io.h>शून्य देरी (शून्य);

ए, बी int;शून्य मुख्य शून्य ()

(

0x03 = TCCR0;

= 0xFF DDRB;

= 0x3 DDRD;

एक = 0x3;

ख = 0x1;स्विच (क)

(

0 मामला: एक 0x40 =;

तोड़;

1 केस: एक 0x79 =;

तोड़;

2 केस: एक 0x24 =;

तोड़;

3 मामला: एक 0x30 =;

तोड़;

4 मामला: एक 0x19 =;

तोड़;

5 मामला: एक 0x12 =;

तोड़;

6 मामला: एक = 0x2;

तोड़;

7 मामला: एक 0x78 =;

तोड़;

8 मामला: एक = 0;

तोड़;

9 केस: एक 0x10 =;

तोड़;

)

स्विच (ख)

(

0 मामला ख = 0x40:;

तोड़;

1 मामले ख = 0x79:;

तोड़;

2 मामले ख = 0x24:;

तोड़;

3 मामले ख = 0x30:;

तोड़;

4 मामले ख = 0x19:;

तोड़;

5 मामले ख = 0x12:;

तोड़;

6 मामले ख = 0x2:;

तोड़;

7 मामले ख = 0x78:;

तोड़;

8 मामले ख = 0:;

तोड़;

9 मामले ख = 0x10:;

तोड़;

)समय (1)

(

PORTB एक =;

= 0x1 PORTD;

देरी ();PORTB ख =;

= 0x2 PORTD;

देरी ();

))शून्य देरी (शून्य) / / 4 में 65 एम एस के निर्माण में देरी मेगाहर्टज

(

= 0x7F TCNT0;

जबकि TIFR! ((0x02));

/ / Timer0 अतिप्रवाह ध्वज के लिए इंतजार करना होगा

0x02 = TIFR; / / साफ़ अतिप्रवाह झंडा

)
 
सलाम,

सुझाव बनाने के लिए अपना कोड बेहतर लग रहा है.

1 - एक समारोह अर्थात् ConvertTo7Seg नाम का प्रयोग करें () के बजाय आप स्विच कार्य लिखने 2 बार!

2 - एक और ख वार्स वैश्विक var के रूप में, बजाय उन्हें स्थानीय वार्स का उपयोग करें और सूचक के रूप में उपयोग करने var का उपयोग नहीं कर उन्हें मत बुलाओ

अर्थात् समारोह कॉलकोड:

x ConvertTo7Seg = (क)
 
ठीक है.

लेकिन फिर भी, क्यों अभ्यस्त इसे निष्पादित "स्विच (एक )"???यह बस "(ख) स्विच कूद."

मेरा प्रोग्राम एक कुशल नहीं है, लेकिन वहाँ कोई कारण नहीं यह स्विच "इसलिए लागू नहीं होना चाहिए है (एक)".

यह बेहतर क्यों है सूचक का प्रयोग?
कोड:

# शामिल <avr/io.h>

एक, ख एबीबी int;शून्य मुख्य ()

(एबीबी = 3;

= 1 ख;स्विच (ख)

(

0 मामला: एक 0x40 =;

तोड़;

1 केस: एक 0x79 =;

तोड़;

2 केस: एक 0x24 =;

तोड़;

3 मामला: एक 0x30 =;

तोड़;

4 मामला: एक 0x19 =;

तोड़;

5 मामला: एक 0x12 =;

तोड़;

6 मामला: एक = 0x2;

तोड़;

7 मामला: एक 0x78 =;

तोड़;

8 मामला: एक = 0;

तोड़;

9 केस: एक 0x10 =;

तोड़;)

)

 
शायद इस मदद करता है:

कोड:# शामिल <avr/io.h>

शून्य देरी (शून्य);const segment_table चार [10] =

(

0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x2, 0x78, 0, 0x10;

)ए, बी int;शून्य मुख्य शून्य ()

(

0x03 = TCCR0;

= 0xFF DDRB;

= 0x3 DDRD;

एक = 0x3;

ख = 0x1;के लिए (;)

(

PORTB = [एक] segment_table;

= 0x1 PORTD;

देरी ();

PORTB = segment_table ;

= 0x2 PORTD;

देरी ();

)

)शून्य देरी (शून्य) / / 4 में 65 एम एस के निर्माण में देरी मेगाहर्टज

(

= 0x7F TCNT0;

जबकि! (TIFR (0x02)); / / timer0 अतिप्रवाह ध्वज के लिए इंतजार करना होगा

0x02 = TIFR; / / साफ़ अतिप्रवाह झंडा

)

 
धन्यवाद, लेकिन मैं नहीं एक अनुकूलित कोड के लिए देख रहा हूँ.मैं जवाब के लिए देख रहा था कि क्यों स्विच बयान के साथ मेरे कोड काम नहीं करता है.हालांकि यह एक बुरा कोड मैं क्यों 'doesn t काम जानना चाहता है.

मैं उर कोड की कोशिश की लेकिन

avr-जीसीसी-c-mmcu = at90s2313-मैं.-G-OS-funsigned-चार-funsigned bitfields-fpack-struct-fshort-enums-वाल-Wstrict-प्रोटोटाइप, वा, adhlns = test.exe.program.lst-= gnu99 test.exe.program.c एसटीडी -test.exe.program.o ओ
test.exe.program.c: 6: त्रुटि: पार्स त्रुटि से पहले '; टोकन
: 12 test.exe.program.c: चेतावनी: 'के बदले प्रकार मुख्य' ` 'int नहीं है
test.exe.program.c: समारोह में `मुख्य ':
test.exe.program.c: 16: त्रुटि: 'एक' इस समारोह में अघोषित पहले (प्रयोग)
test.exe.program.c: 16: त्रुटि: (हर अघोषित पहचानकर्ता केवल एक बार की सूचना है
test.exe.program.c: 16: त्रुटि: एक समारोह में यह प्रतीत होता है अंदर के लिए)
test.exe.program.c: 17: त्रुटि: ` 'ख इस समारोह में अघोषित पहले (प्रयोग)
test.exe.program.c: 34:40 चेतावनी:: फाइल के अंत में कोई newline
test.exe.program.c: समारोह में देरी ` ':
test.exe.program.c: 34: त्रुटि: इनपुट के अंत में पार्स त्रुटि
make.exe: *** [test.exe.program.o] 1 त्रुटि

 
क्या आप "से यह एक और ख" एक साथ कहते हैं मतलब है?

अगर कार्यक्रम काम करता है (आप इच्छित आउटपुट देता है), तो आप अपने निष्पादन व्यवहार सिम्युलेटर में देखने के बारे में चिंता मत करो.अपने संकलक मेरी दूर अनुकूलित है उन स्विच बयान क्योंकि वे अनावश्यक हैं, जब से तुम initialized एक स्थायी और ख के साथ.एक स्मार्ट अनुकूलन संकलक भी समाप्त हो सकता है एक और बी, और केवल लिखित स्थायी PORTB में.

यदि यह समस्या नहीं है ....मैं अपने संकलक नहीं है, तो मैं अपने कार्यक्रम (लापता avr / io.h) संकलन नहीं कर सकते.शायद अगर तुम हमें दिखा जो कि शीर्षक में है, और अधिक लोगों को आपकी मदद कर सकता है.परिभाषित विशेष रूप से, कैसे PORTB है?

सी है यार कोड एक गलत सेमीकोलन है:
कोड:

const segment_table चार [10] =

(

0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x2, 0x78, 0, 0x10

);
 

Welcome to EDABoard.com

Sponsor

Back
Top