التعامل مع ذاكرة EEPROM الداخلية وأمثلة على البرمجة بالمترجم CCS C :
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
التعامل مع ذاكرة EEPROM الداخلية وأمثلة على البرمجة بالمترجم CCS C :
التعامل مع ذاكرة EEPROM الداخلية وأمثلة على البرمجة بالمترجم CCS C :
يمكن للمستخدم الوصول لذاكرة EEPROM من خلال الدوال التالية ، ضمن المترجم CCS C :
دالة القراءة : وتكون بالصيغة التالية :
• وظيفة هذه الدالة قراءة read بايت من عنوان address معين بذاكرة EEPROM . يبدأ العنوان من عند الصفر ومداه يعتمد على الميكروكونترولر المستخدم .
• بارامتر "العنوان" address هو عدد صحيح 8 بت أو 16 بت ، يعتمد على الميكروكونترولر المستخدم .
• هذه الدالة عند تنفيذها تعود بعدد صحيح 8 بت (بايت) .
مثال :
دالة الكتابة : وتكون بالصيغة التالية :
• وظيفة هذه الدالة كتابة بايت إلى عنوان محدد بذاكرة EEPROM . هذه الدالة قد تأخذ عدة ملى ثوانى للتنفيذ .
• البارامتر "العنوان" address يكون عدد صحيح 8 بت أو 16 بت بناء على الميكروكونترولر المستخدم ، والبارامتر "القيمة" value يكون عدد صحيح 8 بت .
• هذه الدالة لا تعود بأى شىء عند تنفيذها (كتابة) .
مثال :
تدريب : على التعامل مع الذاكرة EEPROM ، واكتساب بعض مهارات تقنيات البرمجة :
نتيجة المحاكاة ببرنامج Proteus :
Writing ‘A’ to EEPROM address from 0 to 255 , ‘A’ = 0x41
يمكن للمستخدم الوصول لذاكرة EEPROM من خلال الدوال التالية ، ضمن المترجم CCS C :
دالة القراءة : وتكون بالصيغة التالية :
- الكود:
value = read_eeprom (address )
• وظيفة هذه الدالة قراءة read بايت من عنوان address معين بذاكرة EEPROM . يبدأ العنوان من عند الصفر ومداه يعتمد على الميكروكونترولر المستخدم .
• بارامتر "العنوان" address هو عدد صحيح 8 بت أو 16 بت ، يعتمد على الميكروكونترولر المستخدم .
• هذه الدالة عند تنفيذها تعود بعدد صحيح 8 بت (بايت) .
مثال :
- الكود:
#define LAST_VOLUME 10
volume = read_EEPROM (LAST_VOLUME); //Read byte from address “10”
دالة الكتابة : وتكون بالصيغة التالية :
- الكود:
write_eeprom (address, value)
• وظيفة هذه الدالة كتابة بايت إلى عنوان محدد بذاكرة EEPROM . هذه الدالة قد تأخذ عدة ملى ثوانى للتنفيذ .
• البارامتر "العنوان" address يكون عدد صحيح 8 بت أو 16 بت بناء على الميكروكونترولر المستخدم ، والبارامتر "القيمة" value يكون عدد صحيح 8 بت .
• هذه الدالة لا تعود بأى شىء عند تنفيذها (كتابة) .
مثال :
- الكود:
#define LAST_VOLUME 10 // Location in EEPROM
volume++;
write_eeprom(LAST_VOLUME,volume);
//write the byte value in volume variable to address 10 of EEPROM
تدريب : على التعامل مع الذاكرة EEPROM ، واكتساب بعض مهارات تقنيات البرمجة :
- الكود:
#include <16F877A.h>
#use delay(clock=4000000)
#use rs232(baud=2400,xmit=PIN_C6,rcv=PIN_C7)
void main() {
int i = 0, m;
printf("R(ead or W(rite? \n\r"); m = getc();
//1- Writing
if ((m==87)||(m==119)) // 87 = w OR 119 = W
{
printf("Content? \n\r"); m = getc(); // inter a character , say "A"
do
{
write_EEPROM(i,m);// Write this character to EEPROM locations from address 0 to adress 255 = FF for 16F877A
printf("Writing %X to addr %X\n\r",m,i);// Writing "the character ASCII value in HEX formte" to addr "i in HEX"
} while(++i>0); // Repeat 255 times (end of byte range)
}
//2- Reading
do
{
m = read_EEPROM(i);
printf("Addr = %X Content = %X\n\r",i,m);
} while(++i>0);
while(TRUE);
}
نتيجة المحاكاة ببرنامج Proteus :
- الكود:
#include <16F877A.h>
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
- الكود:
printf("R(ead or W(rite? \n\r"); m = getc();
- الكود:
if ((m==87)||(m==119)) // 87 = w OR 119 = W
{
printf("Content? \n\r"); m = getc();
// Only Press ‘w’ or ‘W’ give :
- الكود:
do
{
write_EEPROM(i,m);// Write this character to EEPROM locations from address 0 to adress 255 = FF for 16F877A
printf("Writing %X to addr %X\n\r",m,i);// Writing "the character ASCII value in HEX formte" to addr "i in HEX"
} while(++i>0); // Repeat 255 times (end of byte range)
}
Writing ‘A’ to EEPROM address from 0 to 255 , ‘A’ = 0x41
- الكود:
//2- Reading
do
{
m = read_EEPROM(i);
printf("Addr = %X Content = %X\n\r",i,m);
} while(++i>0);
مواضيع مماثلة
» مشروع قفل إلكترونى بسيط باستخدام ذاكرة EEPROM بالميكروكونترولر ولوحة مفاتيح وشاشة LCD :
» مشروع عداد تصاعدى 0-99 يستخدم CCS-C-Counter-PIC-EEPROM-Interrupt-7 Segment-7447-
» أنظمة مخاطبة الجمهور Public Address Systems (الإذاعة الداخلية)
» بداية ممارسة برمجة الليد ماتريكس بشكل احترافى
» الفصل التاسع الذاكرات EEPROM و FLASH
» مشروع عداد تصاعدى 0-99 يستخدم CCS-C-Counter-PIC-EEPROM-Interrupt-7 Segment-7447-
» أنظمة مخاطبة الجمهور Public Address Systems (الإذاعة الداخلية)
» بداية ممارسة برمجة الليد ماتريكس بشكل احترافى
» الفصل التاسع الذاكرات EEPROM و FLASH
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS - C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى