السلام عليكم ورحمه الله
اخي
أبو زكووور
lovevb6
sofien.j
5282
Ahmed7905
جزاكم الله خيرا علي هذا التشجيع الجميل وهذه الكلمات الرقيقه
للاسف لن استطيع ان اشرح الكود كاملا وذلك لسببين
السبب الاول لست ممن اعطاهم الله موهبه ايصال المعلومه
السبب الثاني هو ضيق الوقت فقد اقتربت امتحاناتي
ولكن يمكن ان اشرح افكار بعض الدوال الرئيسيه في البرنامج
وساشرح فكره الداله write1(char num)
وهي الداله الرئيسيه في هذا البرنامج واللتي تقوم بارسال البيانات الي مسجله الازاحه
لاوضح عمل هذه الدله ساذكر مثال بسيط عند كتابه الامر التالي ماذا يحدث
portb=7;
ما يحدث هو ان اول 3bit يتحولوا الي high اما بقيه البورت يكون low
f7 f6 f5 f4 f3 f2 f1 f0
0 0 0 0 0 1 1 1
ولكن ماذا يحدث اذا اردنا ان نظهر الرقم 7 علي مسجل الازاحه
سيتطلب ذلك تحويل الرقم 7 الي النظام الثنائي اولا وتخزينه في المصفوفه m[8]
وبعد ذلك يتم ارسال محتويات المصفوفه الي مسجل الازاحه
والداله اللتي تقوم بتحويل الرقم الي النظام الثنائي هي
d2b(char hex)
ولاوضح عمل هذه الداله يجب ان نسترجع بعض المبادئ البرمجيه وهو كيفيه تحويل الارقام من النظام العشري الي النظام الثنائي وكان ذلك يتم بقسمه الرقم
العشري علي 2 واخذ باقي القسمه ليكون علي النحو التالي
7/2=3 ويكون باقي القسمه1
3/2=1 ويكون باقي القسمه1
1/2=0 ويكون باقي القسمه1
0/0=0 ويكون باقي القسمه0
0/0=0 ويكون باقي القسمه0
0/0=0 ويكون باقي القسمه0
0/0=0 ويكون باقي القسمه0
0/0=0 ويكون باقي القسمه0
بتجميع باقي قسمه العمليات مقلوبه اي من اسفل الي اعلي ينتج الرقم
00000111
ويتم ذلك برمجيا علي النحو التالي
كود:
void d2b(char hex)
{
for(x=0;x<8;x++)
{
m[7-x]=hex%2;
hex=hex/2;
}
}
وعند استعاء داله الكتابه write1
فانها تقوم بارسال الرقم الي الداله d2bوالتي بدورها تحول الرقم الي النظام الثنائي
وتخزنه في المصفوفه m[8[
وبعد الانتهاء من التحويل والتخزين تبدا عمليه الارسال الي مسجل الازاحه
ليكون كود داله الكتابه بالشكل التالي
كود:
void write1(char num)
{
d2b(num);//call the function that coverts the number
//into binary and save it in m[8]
for(x=0;x<8;x++)//send data to the 74hc595
{
data1=m[x];
clk1
}
show1;
}
اعتذر عن الاطاله
مع تحياتي
the lion