ما في العالم هو الخطأ في هذا الرمز جيم؟؟

D

david90

Guest
رمز :

# تشمل <avr/io.h>تأخير باطلة (باطل) ؛

كثافة العمليات أ ، ب ؛باطلة الرئيسي (الفراغ)

(

TCCR0 = 0x03 ؛

DDRB = 0xFF ؛

DDRD = 0x3 ؛

أ = 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 = أ ؛

PORTD = 0x1 ؛

تأخير () ؛PORTB = ب ؛

PORTD = 0x2 ؛

تأخير () ؛

))تأخير باطلة (الفراغ) / / إنتاج تأخير من 65 مللي ثانية في 4 ميغاهرتز

(

TCNT0 = 0x7F ؛

في حين (!) TIFR & 0x02)) ؛

/ / انتظر timer0 العلم الفائض سيتم تعيينه

TIFR = 0x02 ؛ / / بدون تجاوز العلم

)
 
سلام ،

اقتراحات لجعل التعليمات البرمجية تبدو أفضل.

1 -- استخدام وظيفة تسمى ConvertTo7Seg أي () بدلا من أن تكتب وظائف التبديل 2 مرات!

2 -- عدم استخدام وكما فار فار ب العالمي ، بدلا من استخدامها كما فار المحلية واستخدام المؤشر لفار لدعوتهم

أي لاستدعاء الدالةرمز :

س = ConvertTo7Seg (& أ)
 
موافق.

ولكن لا يزال ، لماذا متعود انها تنفذ "التبديل (أ)"؟؟؟انها مجرد القفز الى "التبديل (ب)".

برنامجى هو عدم كفاءة ولكن لا يوجد سبب لذلك يجب أن يتم تنفيذ "التبديل (أ)".

لماذا هو افضل لاستخدام المؤشر؟
رمز :

# تشمل <avr/io.h>

كثافة العمليات أ ، ب ، بي بي ؛باطلة الرئيسي ()

(بي بي = 3 ؛

ب = 1 ؛التبديل (ب)

(

0 الحالة : أ = 0x40 ؛

كسر ؛

القضية 1 : أ = 0x79 ؛

كسر ؛

القضية 2 : أ = 0x24 ؛

كسر ؛

القضية 3 : أ = 0x30 ؛

كسر ؛

القضية 4 : أ = 0x19 ؛

كسر ؛

القضية 5 : أ = 0x12 ؛

كسر ؛

القضية 6 : أ = 0x2 ؛

كسر ؛

case 7 : a=0x78;
كسر ؛

القضية 8 : أ = 0 ؛

كسر ؛

الحالة 9 : أ = 0x10 ؛

كسر ؛)

)

 
وربما يساعد هذا :

رمز :# تشمل <avr/io.h>

تأخير باطلة (باطل) ؛const تشار segment_table [10] =

(

0x40 ، 0x79 ، 0x24 ، 0x30 ، 0x19 ، 0x12 ، 0x2 ، 0x78 ، 0 ، 0x10 ؛

)كثافة العمليات أ ، ب ؛باطلة الرئيسي (الفراغ)

(

TCCR0 = 0x03 ؛

DDRB = 0xFF ؛

DDRD = 0x3 ؛

أ = 0x3 ؛

ب = 0x1 ؛ل(؛) ؛)

(

PORTB = segment_table [أ] ؛

PORTD = 0x1 ؛

تأخير () ؛

PORTB = segment_table [ب] ؛

PORTD = 0x2 ؛

تأخير () ؛

)

)تأخير باطلة (الفراغ) / / إنتاج تأخير من 65 مللي ثانية في 4 ميغاهرتز

(

TCNT0 = 0x7F ؛

في حين (!) TIFR & 0x02)) / / انتظر timer0 العلم الفائض سيتم تعيينه

TIFR = 0x02 ؛ / / بدون تجاوز العلم

)

 
شكرا ، ولكن أنا لا تبحث عن رمز الأمثل.كنت أبحث عن إجابة لماذا بلادي مع بيان رمز التبديل لا يعمل.حتى وإن كان هو رمز سيئة أريد أن أعرف السبب في أنه لا توجد الآن 'العمل ر.

حاولت ولكن رمز اور

avr - دول مجلس التعاون الخليجي ج - mmcu = at90s2313 من أنا.ز - - السراج funsigned - تشار - bitfields - funsigned - fpack - البنية - fshort - enums - الجدار Wstrict - النماذج ، وا ، adhlns - = test.exe.program.lst - الأمراض المنقولة جنسيا = gnu99 test.exe.program.c س - test.exe.program.o
test.exe.program.c : 6 : الخطأ : خطأ في تحليل من قبل '؛ رمزية
test.exe.program.c : 12 : تحذير : عودة نوع من 'الرئيسي' ليست `كثافة العمليات'
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 : تحذير : لا السطر في نهاية الملفtest.exe.program.c: In function `delay': test.exe.program.c : 34 : الخطأ : خطأ في تحليل في نهاية الإدخال
make.exe : *** [test.exe.program.o] خطأ 1

 
ماذا تقصد ب "وتضيف أ و ب معا"؟

إذا كان البرنامج يعمل (تعطيك الناتج المرغوب فيه) ، ثم لا تقلق بشأن سلوك التنفيذ ترون ان في محاكاة.مترجم الخاص بك بعيدا أمثل بلدي وتبديل تلك البيانات لأنها لا لزوم لها ، وبما انك تهيئة أ و ب مع الثوابت.وقال المترجم الذكية الأمثل قد يكون أيضا إلغاء أ و ب ، وببساطة مكتوب ثوابت في 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