قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية salah56bachir
salah56bachir
:: مهندس متميز ::
تاريخ التسجيل: Nov 2012
الدولة: بلاد العرب
المشاركات: 497
نشاط [ salah56bachir ]
قوة السمعة:0
قديم 17-01-2017, 03:36 PM المشاركة 1   
ha أين الخطأ؟ Twitter FaceBook Google+



السلام عليكم ...
أريد كتابة حرف "E" على مصفوفة ميتريكس 8X8.
.وبعد التنفيذ ظهر الحرف ولكن به اقتطاع في أطرافه (يعني لم يظهر كاملا كما بالصورة)
فياترى أين الخطأ؟
هل في البرنامج (الكود)؟ أم في بروتس؟ أم في الإعدادات؟ شكرا






كود:
void main() 
{
trisd=0;
portd=0;
trisb=0;
portb=0;
loop:
portb=0b11111111;
portd=0b11111110;
 delay_us(300);
 
portb=0b11111111;
portd=0b11111101;
 delay_us(300);

portb=0b11000000;
portd=0b11111011;
 delay_us(300);

portb=0b11111111;
portd=0b11110111;
 delay_us(300);

portb=0b11111111;
portd=0b11101111;
 delay_us(300);
 
 portb=0b11000000;
portd=0b11011111;
 delay_us(300);
 
   portb=0b11111111;
portd=0b10111111;
 delay_us(300);
 
 portb=0b11111111;
portd=0b01111111;
 delay_us(300);

goto loop;}


التعديل الأخير تم بواسطة : salah56bachir بتاريخ 17-01-2017 الساعة 04:24 PM
اعلانات

الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 17-01-2017, 07:23 PM المشاركة 2   
افتراضي


يبدو الخطأ في الكود بأكمله ,,
جرب هذا

كود:

void main()
{
trisd=0;
portd=0;
trisb=0;
portb=0;
loop:
portb=0b11111110;
portd=0b11111111;
 delay_us(300);

portb=0b11111101;
portd=0b01111111;
 delay_us(300);

portb=0b11111011;
portd=0b00000011;
 delay_us(300);

portb=0b11110111;
portd=0b01111111;
 delay_us(300);

portb=0b11101111;
portd=0b01111111;
 delay_us(300);

portb=0b11011111;
portd=0b00000011;
 delay_us(300);

portb=0b10111111;
portd=0b01111111;
 delay_us(300);

portb=0b01111111;
portd=0b11111111;
 delay_us(300);

goto loop;}


هذا يأخد مساحة كبيرة,, ضع مصفوفة بها بيانات صفوف الحرف مرتبة من اعلى الى الاسفل، وضع حلقة تكرار تعمل ازاحة للبور B وترسل قيم المصفوفة الى الD في كل مرة،، هذا أفضل..

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية salah56bachir
salah56bachir
:: مهندس متميز ::
تاريخ التسجيل: Nov 2012
الدولة: بلاد العرب
المشاركات: 497
نشاط [ salah56bachir ]
قوة السمعة:0
قديم 17-01-2017, 08:18 PM المشاركة 3   
sun


يبدو الخطأ في الكود بأكمله ,,
جرب هذا

[code]
السلام عليكم أخي ياسين الحانوتي
جربت الكود الذي تفضلت به واتضح أن الخلل من بروتس فجزاك الله خيرا
هذا يأخد مساحة كبيرة,, ضع مصفوفة بها بيانات صفوف الحرف مرتبة من اعلى الى الاسفل، وضع حلقة تكرار تعمل ازاحة للبور B وترسل قيم المصفوفة الى الD في كل مرة،، هذا أفضل.
ماتفضلت به قرأته لكن لم أستوعبه بعد..
إذا تكرمت وضح الفكرة التي أشرت إليها أعلاه ب [code] مستعملا المصفوفة ولك الشكر سلفا
.


الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 17-01-2017, 09:42 PM المشاركة 4   
افتراضي


السلام عليكم أخي ياسين الحانوتي
جربت الكود الذي تفضلت به واتضح أن الخلل من بروتس فجزاك الله خيرا

ماتفضلت به قرأته لكن لم أستوعبه بعد..
إذا تكرمت وضح الفكرة التي أشرت إليها أعلاه ب [code] مستعملا المصفوفة ولك الشكر سلفا
.
تفضل أخي:

كود:
char  E[8] = {   255,127,3,127,127,3,127,255}     ;
               char i;
void main()
{
trisd=0;
portd=0;
trisb=0;
portb=0;

loop:
      portb=0b11111110;
      for(i=0;i<8;i++){
      
            PORTD=E[i];
            
            delay_us(300);

            asm bsf STATUS, C ;
            asm rlf portb ,1 ;
    
    }

goto loop;}


الصورة الرمزية salah56bachir
salah56bachir
:: مهندس متميز ::
تاريخ التسجيل: Nov 2012
الدولة: بلاد العرب
المشاركات: 497
نشاط [ salah56bachir ]
قوة السمعة:0
قديم 18-01-2017, 07:51 AM المشاركة 5   
x1


تفضل أخي:

كود:
char  E[8] = {   255,127,3,127,127,3,127,255}     ;
               char i;
void main()
{
trisd=0;
portd=0;
trisb=0;
portb=0;

loop:
      portb=0b11111110;
      for(i=0;i<8;i++){
      
            PORTD=E[i];
            
            delay_us(300);

             }

goto loop;}
السلام عليكم
بارك الله فيك أخي ياسين ...وصلت فكرة المصفوفة.
لكنني لم أفهم معنى الكود التالي:

كود:
asm bsf STATUS, C ;
            asm rlf portb ,1 ;
تقبل تحياتي.


الصورة الرمزية ياسين الحانوتي
ياسين الحانوتي
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2013
المشاركات: 164
نشاط [ ياسين الحانوتي ]
قوة السمعة:0
قديم 18-01-2017, 01:42 PM المشاركة 6   
افتراضي


السلام عليكم
بارك الله فيك أخي ياسين ...وصلت فكرة المصفوفة.
لكنني لم أفهم معنى الكود التالي:

كود:
asm bsf STATUS, C ;
            asm rlf portb ,1 ;
تقبل تحياتي.
طبعا تبقى مجرد فكرة.. لا تنسى انه بامكانك ايجاد حلول أخرى ابسط

هذا كود بالأسمبلي يمكنك استبداله بهذا السطر في السي:
كود:
portb=~(~portb<<1);
(مع انها ترجمة غير دقيقة لكن سيؤدي نفس الوظيفة)

التعليمة rlf في الاسمبلي تعمل دوران للسجل portb بمقدار خانة واحدة نحو اليسار، وهذا ما نريد.. حتى ينتقل ال 0 ويشغل كل صف في الماتركس على حدى
التعليمة قبلها تضع في كل مرة 1 في بت ال CARRY BIT حتى تملئ الخانات الجديدة بالوحدات


في السي توجد الإزاحة:
كود:
portb<<1;
هذه ازاحة نحو اليسار خانة واحدة لكنها تملئ البتات الجديدة على اليمين بالأصفار ..
اتركك تفهم الحل أعلاه بالسي

تحياتي,,


الصورة الرمزية salah56bachir
salah56bachir
:: مهندس متميز ::
تاريخ التسجيل: Nov 2012
الدولة: بلاد العرب
المشاركات: 497
نشاط [ salah56bachir ]
قوة السمعة:0
قديم 18-01-2017, 02:51 PM المشاركة 7   
افتراضي


طبعا تبقى مجرد فكرة.. لا تنسى انه بامكانك ايجاد حلول أخرى ابسط

هذا كود بالأسمبلي يمكنك استبداله بهذا السطر في السي:
كود:
portb=~(~portb<<1);
(مع انها ترجمة غير دقيقة لكن سيؤدي نفس الوظيفة)

التعليمة rlf في الاسمبلي تعمل دوران للسجل portb بمقدار خانة واحدة نحو اليسار، وهذا ما نريد.. حتى ينتقل ال 0 ويشغل كل صف في الماتركس على حدى
التعليمة قبلها تضع في كل مرة 1 في بت ال CARRY BIT حتى تملئ الخانات الجديدة بالوحدات


في السي توجد الإزاحة:
كود:
portb<<1;
هذه ازاحة نحو اليسار خانة واحدة لكنها تملئ البتات الجديدة على اليمين بالأصفار ..
اتركك تفهم الحل أعلاه بالسي

تحياتي,,
شكرا جزيلا أخي ياسين على التوضيح...والعودة إلى أكواد لغة c
فقد جاءني الكود غريبا ذلك أنني لم أر أي كود بلغة الأسمبلي.
و بحكم أنني مبتدئ في هذا الميدان فإنني أفضل أن ألتزم بتعليمات c حتى لاأضل الطريق بين الأكواد الكثيرة...لك مني أطيب تحية.

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:10 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025