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

   

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 01-05-2009, 02:45 PM المشاركة 497   
افتراضي



السلام عليكم أخي حيدر
أرجوا أن لا أكون قد أثقلت عليك ...
إذا أردنا جعل البرنامج يتوقف عن العد عند الصفر و التسعة
كيف يصبح شكل الكود ؟؟؟
شكراً جزيلا لك .
وعليكم السلام اخي ابو زكور .
هكذا يكون الكود كما قلت

كود:
 
void main() {trisa=0;trisb=0b11000000;porta=0;portb=0b11000000; loop: if(portb.f6==0) {if(porta==9)goto loop; portb++;porta++;delay_ms(500);} if(portb.f7==0) {if(porta==0)goto loop; portb--;porta--;delay_ms(500);} goto loop; }

اعلانات

octavios
:: مهندس ::
تاريخ التسجيل: Aug 2008
المشاركات: 1
نشاط [ octavios ]
قوة السمعة:
قديم 01-05-2009, 03:42 PM المشاركة 498   
ha


السلام عليكم و جزاكم الله الخير
أريد السؤال عن بعض التعليمات في المايكرو سي
وسبب المشاكل عند ربط الmmcعن طريق البروتس
وكل تعليمة تحوي كلمة FAT وكيفية إزالة خطأ الريال تايم في البروتس
char filename[] = "TEMPERTRTXT";
unsigned short character;
unsigned long file_size,i,rec_size;
unsigned char ch1,ch2,flag,ret_status,choice;
unsigned char temperature[10],txt[12];
//
// This function sends carriage-return and line-feed to USART
//
void Newline()
{
Usart_Write(0x0D); // Send carriage-return
Usart_Write(0x0A); // Send line-feed
}
//
// This function sends a space character to USART
//
void Space()
{
Usart_Write(0x20);
}
//
// This function sends a text to serial port
//
void Text_To_Usart(unsigned char ∗m)
{
unsigned char i;
i = 0;
while(m[i] != 0)
{ // Send TEXT to serial port
Usart_Write(m[i]);
i++;
}
}
//
// This function reads the temperature from analog input AN0
//
void Get_Temperature()
{
unsigned long Vin, Vdec,Vfrac;
unsigned char op[12];
unsigned char i,j;
Vin = Adc_Read(0); // Read from channel 0 (AN0)
Vin = 488∗Vin; // Scale up the result
Vin = Vin /10; // Convert to temperature in C
Vdec = Vin / 100; // Decimal part
Vfrac = Vin % 100; // Fractional part
LongToStr(Vdec,op); // Convert Vdec to string in "op"
//
// Remove leading blanks
//
j=0;
for(i=0;i<=11;i++)
{
if(op[i] != ' ') // If a blank
{
temperature[j]=op[i];
j++;
}
}
temperature[j] = '.'; // Add “.”
ch1 = Vfrac / 10; // fractional part
ch2 = Vfrac % 10;
j++;
temperature[j] = 48+ch1; // Add fractional part
j++;
temperature[j] = 48+ch2;
j++;
temperature[j] = 0x0D; // Add carriage-return
j++;
temperature[j] = 0x0A; // Add line-feed
j++;
temperature[j]='\0';
}
//
// Start of MAIN program
//
void main()
{
rec_size = 0;
//
// Configure A/D converter
//
TRISA = 0xFF;
ADCON1 = 0x80; // Use AN0, Vref = +5V
//
// Configure the serial port
//
Usart_Init(2400);
//
// Initialise the SPI bus
//
Spi_Init_Advanced(MASTER_OSC_DIV16,DATA_SAMPLE_MID DLE,
CLK_IDLE_LOW, LOW_2_HIGH);
//
// Initialise the SD card bus
//
while(Mmc_Init(&PORTC,2));
//
// Initialise the FAT file system
//
while(Mmc_Fat_Init(&PORTC,2));
//
// Display the MENU and get user choice
//
Newline();
Text_To_Usart("TEMPERATURE DATA LOGGER");
Newline();
Newline();
Text_To_Usart("1. Send temperature data to the PC");
Newline();
Text_To_Usart("2. Save temperature data in a new file");
Newline();
Text_To_Usart("3. Append temperature data to an existing file");
Newline();
Newline();
Text_To_Usart("Choice ? ");
//
// Read a character from the PC keyboard
//
flag = 0;
do {
if (Usart_Data_Ready()) // If data received
{
choice = Usart_Read(); // Read the received data
Usart_Write(choice); // Echo received data
flag = 1;
}
} while (!flag);
Newline();
Newline();
//
// Now process user choice
//
switch(choice)
{
case '1':
ret_status = Mmc_Fat_Assign(&filename,1);
if(!ret_status)
{
Text_To_Usart("File does not exist..No saved data...");
Newline();
Text_To_Usart("Restart the program and save data to the file...");
Newline();
for(;;
}
else
{
//
// Read the data and send to UART
//
Text_To_Usart("Sending saved data to the PC...");
Newline();
Mmc_Fat_Reset(&file_size);
for(i=0; i<file_size; i++)
{
Mmc_Fat_Read(&character);
Usart_Write(character);
}
Newline();
text_To_Usart("End of data...");
Newline();
for(;;
}
case '2':
//
// Start the A/D converter, get temperature readings every
// 10 seconds, and then save in a NEW file
//
Text_To_Usart("Saving data in a NEW file...");
Newline();
Mmc_Fat_Assign(&filename,0x80); // Assign the file
Mmc_Fat_Rewrite(); // Clear
Mmc_Fat_Write("TEMPERATURE DATA - SAVED EVERY 10
SECONDS\r\n",43);
//
// Read the temperature from A/D converter, format and save
//
for(;
{
Mmc_Fat_Append();
Get_Temperature();
Mmc_Fat_Write(temperature,9);
rec_size++;
LongToStr(rec_size,txt);
Newline();
Text_To_Usart("Saving record:");
Text_To_Usart(txt);
Delay_ms(10000);
}
break;
case '3':
//
// Start the A/D converter, get temperature readings every
// 10 seconds, and then APPEND to the existing file
//
Text_To_Usart("Appending data to the existing file...");
Newline();
ret_status = Mmc_Fat_Assign(&filename,1); // Assign the file
if(!ret_status)
{
Text_To_Usart("File does not exist - can not append...");
Newline();
Text_To_Usart("Restart the program and choose option 2...");
Newline();
for(;;
}
else
{
//
// Read the temperature from A/D converter, format and save
//
for(;
{
Mmc_Fat_Append();
Get_Temperature();
Mmc_Fat_Write(temperature,9);
rec_size++;
LongToStr(rec_size,txt);
Newline();
Text_To_Usart("Appending new record:");
Text_To_Usart(txt);
Delay_ms(10000);
}
}
default:
Text_To_Usart("Wrong choice...Restart the program and try again...");
Newline();
for(;;
}
}

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

سيد سرور
:: مهندس ::
تاريخ التسجيل: May 2006
المشاركات: 19
نشاط [ سيد سرور ]
قوة السمعة:
قديم 02-05-2009, 12:18 AM المشاركة 499   
افتراضي


نرجو من الله العظيم رب العرش الكريم ان يفرج كرب م / احمد سمير ويقضى عنه حوائجه وييسر له ويبارك له فى وقته وصحته ويحفظ اسرته من كل مكروه ونرجو من الاخوة المشاركين فى الدورة بالدعاء له وانا متاكد باذن الله عودته سريعا الى اخوانه لاستكمال عمل الخير الذى بدائه


الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 428
نشاط [ أبو زكووور ]
قوة السمعة:
قديم 02-05-2009, 02:07 AM المشاركة 500   
attension السلام عليكم


السلام عليكم
شكرا لك أخي حيدر على الكود
لقد أجريت عليه تعديل بفضل ما تعلمته منكم و من هذا المنتدى
و جعلته يعد من 0 حتى 15 تلقائيا عند إستمرار الضغط على المفتاح و يتوقف عند 0 و 15



لكن عندي مشكلة
أريد تغير رقم البيك و إستخدام PIC16F630
في الميكرو سي قمت بإنشاء مشروع جديد و وضعت نفس إعدادات البيك PIC16F84A ( ربما هذا خطأ )
و كتبت نفس الكود السابق فيه
لكن ظهرت أخطاء كثيرة و لم أحصل على ملف الهيكس



ما هو السبب ؟؟؟؟؟؟؟؟؟؟
أرجوا من المشرفين و الأعضاء المساعدة

أشكركم و بارك الله فيكم




الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 02-05-2009, 03:25 AM المشاركة 501   
افتراضي


السلام عليكم :
بالنسبة لسؤال ال set و reset هو كالاتي:
اذا ضغطت على احد الكبسات لمدخل على ال pic ان تحفظ رقم 1 واذا لم اضغط يكون الحفظ رقم صفر ويتم الفحص للقيمة بعد مرور زمن يساوي دقيقة مثلا فاذا كان واحد نفذ البرنامج التالي واذا كان صفر يبقى كما هو يقف عند نفس الامر لا يتحرك.
وشكرا
الفكرة بحاجة الى استخدام المقاطعات . ولازلنا في قيد الدراسة فيها برعاية الاخ فادي


الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 428
نشاط [ أبو زكووور ]
قوة السمعة:
قديم 02-05-2009, 12:10 PM المشاركة 502   
attension السلام عليكم


السلام عليكم أيها الإخوة
شكرا للأستاذ زكي شاكر على الردود و الإهتمام
و للأستاذ حيدر و زملائه على المتابعة .

لقد حملت داتا شيت ل PIC16F630 و عملت تعديلات على البورتات ( حسب خبرتي الضعيفة جدا )
حصلت على ملف الهيكس و لكن في البروتوس لم يعمل المشروع






http://filaty.com/f/905/88866/630.rar.html

هل هناك خطأ في الكود أم في الإعدادات أرجو الإجابة

شكرا لكم و بارك الله فيكم .


التعديل الأخير تم بواسطة : أبو زكووور بتاريخ 02-05-2009 الساعة 12:11 PM السبب: خطأ إملائي

زكي شاكر
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: المغرب
المشاركات: 2,945
نشاط [ زكي شاكر ]
قوة السمعة:
قديم 02-05-2009, 01:05 PM المشاركة 503   
افتراضي


شكرا للأستاذ زكي شاكر على الردود و الإهتمام
و للأستاذ حيدر و زملائه على المتابعة .

لقد حملت داتا شيت ل PIC16F630 و عملت تعديلات على البورتات ( حسب خبرتي الضعيفة جدا )
حصلت على ملف الهيكس و لكن في البروتوس لم يعمل المشروع





http://filaty.com/f/905/88866/630.rar.html
هل هناك خطأ في الكود أم في الإعدادات أرجو الإجابة
شكرا لكم و بارك الله فيكم .

اخي ابو زكوور هل بإمكانك رفع ملف التجربة ب PIC16F84a للمقارنة؟


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 02-05-2009, 01:46 PM المشاركة 504   
افتراضي


تفضل استاذ زكي هذه ملفات التجربة

http://www.4shared.com/file/10295442...12_online.html



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