بارك الله فيك يا أخي
geniusse01
لقد أعدت النظر في الدائرة و قمت بحل المشكلة و الحمد لله
وها هي ملاحظاتي :
1- يبدو أن هناك عيب في برنامج mikroc و هو أنك في بعض الأحيان إذا قمت بتعديل الكود و عمل compile فإن ملف الهكس الناتج لا يتغير عن سابقه و يبقى بنفس المشكلة لذلك يجب في هذه الحالة فتح مشروع جديد و لصق الكود و عمل كومبايل من جديد . و قد جربت ذلك تم حل مشكلتي و كذلك الكود الذي أرسلته أي أن A4 أضاء B4 و يمكنك التجربة بنفسك
2- الأمر CMCON = 0x07 مهم جدا لعمل منفذ A بشكل جيد
3- كان هناك خطأ بسيط في الكود و هو كالتالي :
كود:
if(porta.f6==0)
{
portb=0b00000001;
بدلا من :
كود:
if(porta.f6==0)
portb=0b00000001;
{
و جزاك الله أخي الكريم على مجهودك
أخي
زكي شاكر
فعلا الأمر CMCON = 7 مهم جدا و من دونه لا يعمل منفذ A .
أما بالنسبة لحساسية اللغة لحالة الأحرف فقد قمت بتجربة الأحرف الكبيرة و الصغيرة على حد سواء ولم تحدث مشكلة و كما قال أستاذنا أحمد ففي النسخ الحديثة من مايكرو سي فهي لا تهتم بحالة الأحرف ، و جزاك الله خيرا
أستاذي
المهندس أحمد
البرنامج بعد التصحيح :
كود:
void main()
{
int i;
int j;
CMCON = 0x07;
TRISA=0xff;
TRISB=0x00;
portb=0x00;
loop:
if(porta.f4==0)
{
portb=0b00000001;
delay_ms(50);
for(i=0;i<4;i++)
{
for(j=0;j<7;j++)
{
portb=portb<<1;
delay_ms(50);
}
for(j=0;j<7;j++)
{
portb=portb>>1;
delay_ms(50);
}
}
}
if(porta.f5==0)
{
for(i=0;i<4;i++)
{
portb=0b00011000;
delay_ms(100);
portb=0b00111100;
delay_ms(100);
portb=0b01111110;
delay_ms(100);
portb=0b11111111;
delay_ms(100);
portb=0b01111110;
delay_ms(100);
portb=0b00111100;
delay_ms(100);
portb=0b00011000;
delay_ms(100);
portb=0b00000000;
delay_ms(100);
}
}
goto loop;
}
و هو يقوم بإضاءة الليدات الموصولة على منفذ B بشكلين مختلفين عن طريق الضغط على سيوتشين على A4 و A5
عند الضغط على A4 يظهر الشكل التالي
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
ثم العكس ، و يعيد ذلك أربع مرات ، و عملية إزاحة ال1 تتم باستخدام ال shift يمينا ويسارا
وعند الضغط على A5 يظهر الشكل التالي :
00011000
00111100
01111110
11111111
01111110
00111100
00011000
00000000
و التكرار أربع مرات
و جزاك الله خيرا