[quote=Sallam;770053]
|
ما رأيكم ياشباب
هل نتابع أم ننتظر قليلاً[/QUO
شكرا لتعبك وصبرك ولكنني كنت أحاول بالمثال الذي طرحته حضرتك فكتبت الكود ولكنني عند المحاكاة لا اجد نتيجة بل تظهر لي الرسالة التالية وتتكرر لمئات المرات وهي :
[PIC16CORE]PC=0X0015 stack overflow excuting CALL instructions.
وهذا هو الكود يرجى ابداء الرأي والملاحظة لأعرف مكان الخطأ مع الشكر سلفا
STATUS EQU 3
TRISA EQU 85
PORTA EQU 5
TRISAB EQU 86
PORTB EQU 6
COUNTER1 EQU H'0C'
COUNTER2 EQU H'0D'
F EQU H'01'
W EQU H'00'
Z EQU H'02'
BSF STATUS,5
MOVLW B'00011111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF PORTB
BCF STATUS,5
CLRF PORTB
CLRF COUNTER1
CLRF COUNTER2
START BTFSC PORTA,0
GOTO UPNUM
BTFSC PORTA,1
GOTO DNNUM
UPNUM INCFSZ COUNTER1,F
CALL TAB
MOVWF PORTB
DNNUM DECFSZ COUNTER1,F
CALL TAB
MOVWF PORTB
GOTO START
TAB ADDWF Z,F
RETLW B'11000000'
RETLW B'11111001'
RETLW B'10100100'
RETLW B'10110000'
RETLW B'10011001'
RETLW B'10010010'
RETLW B'10000010'
RETLW B'10000000'
RETLW B'10010000'
END
بالتوفيق
|
أخي العزيز هذا الكود تم تحويله الى هكس وهو صحيح بالنسبة لكتابة التعليمات فهذا يدل على أن الخطأ عند في برنامج التحويل
لكن هناك أخطاء منطقية فهو لن يقوم بالعد صعوداً ونزولاً دقق انت الكود وحاول ان تكتشف الأخطاء
وهنا أحب أن أبين أمراً عن الأخطاء
فهناك أخطاء إملائية وأخطاء منطقية
الأخطاء الإملائية وهي الخطأ في كتابة التعليمة كأن تزيد عليها او تنقص من حروفها او نسيان جزء من اجزائها ومثل هذه الأخطاء يكشفها برنامج التحويل ويدلك عليها
لكن الأخطاء المنطقية هي أوامر مكتوبة بشكل صحيح لكن ليست هي التعليمات المناسبة فتكون النتيجة عمل صحيح ونتيجة غير المطلوبة
مثال من احد الأخطاء عندك في هذا الكود
انظر الى القسم الذي كتبته انت للصعود انه سينفذ الصعود لكن سيقوم بالنزول مرة اخرى لأن المعالج سيقرأ تلك الأسطر فتجبره على النقصان لا يوجد عزل بين الكودين الصعود والنزول
وهناك أخطاء أخرى اترك الأمر لك لتجدها
سأقوم في ما بعد بوضع كود يقوم بهذه المهمة ليستفيد منه الجميع في حال فشل الجميع
لكن الآن حاولوا في ايجاد الكود الصحيح