الوصول إلى بتات السجلات :
هناك العديد من الحالات حيث قد نرغب فى الوصول إلى البتات الفردية لسجل 8 بت .
إذا أردنا الوصول إلى بت لسجل داخلى بالميكروكونترولر :
• إذا كنا نعرف اسم بت السجل المراد الوصول إليها ، عندئذ يمكننا ببساطة "كتابة اسم البت ويتم تحديدها set (جعلها بواحد) أو مسحها clear (تصفيرها) كما هو مطلوب . فيما يلى مثال على ذلك :
كود:
GIE_bit = 0; //Clear GIE bit
• يمكننا أيضا استخدام معرفات البتات B0, B1, . . . . B7 أو F0, F1, . . . . . F7 ، باعتبار أن (0) هى البت الأدنى قيمة LSB (أقصى اليمين) ، و (7) هى البت الأقصى قيمة MSB . فيما يلى مثال ، لتحديد البت bit 0 بالسجل INCON نستخدم الصيغة التالية :
كود:
INTCON.B0 = 1; //Set bit 0 of register INTCON
ولتحديد البت bit 3 يمكن كتابة مايلى :
كود:
INTCON.F3 = 1; //Set bit 3 of register INTCON
البت من نوع sbit :
المترجم ميكروسى برو به نوع من بيانات البتات يسمى sbit ، والذى يوفر "الوصول إلى البتات الخاصة بسجلات الوظائف الخاصة SFRs الداخلية للميكروكونترولر " . يمكنك الوصول إلى البتات الداخلية للسجلات كما فى الأمثلة التالية :
كود:
sbit LEDA at PORTA.B0; //LEDA is assigned to bit 0 of PORT A
sbit LEDB at PORTA.B7; //LEDB is assigned to bit 7 of PORT A
أو بدلا من ذلك ومكافىء له :
كود:
sbit LEDA at RA0_bit; //LEDA is assigned to bit 0 of PORT A
sbit LEDB at RA7_bit; //LEDB is assigned to bit 7 of PORT A
البت من نوع bit :
المترجم ميكروسى برو يدعم أيضا "تعريف بت واحدة باستخدام النوع bit . فيما يلى مثال يوضح ذلك :
|
السلام عليكم استاذ فتح الله
لي بعض الاستفسارات هنا
النوع
GIE_bit = 0;هل يشابه التعريف العادي المتبع مثلا لتعريف البن 3 لبورت A
كود:
TRISA.B3=0;
PORTA.B=1;
ثانيا المسجل INTCON
هل يختلف عن الطرق السابقه ايضا ام ان له عمل خاص مميز ؟
ثالثا النوع sbit تذكرته الان في مثال عارضه lcd
ما معني وظيفه خاصه لان الامر التبس علي
مثلا هذا النوع تعرف به مسارات البيانات بين المتحكم والعارضه lcd هل افترض ان لكل جهاز معين سجل مخصص له لكي يتعامل معه المتحكم ؟