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

أدوات الموضوع

simo aden
:: مهندس ::
تاريخ التسجيل: Mar 2011
المشاركات: 4
نشاط [ simo aden ]
قوة السمعة:0
قديم 29-03-2011, 07:21 PM المشاركة 1   
افتراضي أرجوا المساعدة وبشكل عاجل Twitter FaceBook Google+



السلام عليكم ورحمة الله
أريد المساعدة وبشكل عاجل
لمن له الخبرة في برمجة الmicro controller
معي كود في لغة c لم أستطع تحويله الى ملف ال hex
لذا لمن له الخبرة في هذا المجال أرجوا منه المساعدة وبشكل عاجل لأن مشروعي توقف بسبب هذه المشكلة حيث أنني أعمل على مشروع التحكم ب ac motor عن طريق ال pwm (أذ أنه في حالة أستطاع تحويله الى الhex الرجاء أرساله لي عن طريق ال pdf على هذا العنوان ismaeel.kassem*yahoo.com
وله جزاء الشكر ...............................
وهذا هو الكود :

Software logic: -
The complete operation is based on the software embedded in micro controller 89C2051. The software is written in C language. Different functions are used for different operations like ext1, ext0, delay and keydly etc. Here is the code with necessary comments which it self explains all above functions.

click here for the C code.


#include<reg51.h>
#include <string.h>

sbit led1 = P3^0;
sbit s1 = P3^4;
sbit s2 = P3^5;
sbit s3 = P3^7;

unsigned int d1=0;
unsigned int d2=0;
unsigned int c=0;
bdata unsigned char byte;
sbit b0 = byte^0;
sbit b1 = byte^1;
sbit b2 = byte^2;
sbit b3 = byte^3;
sbit b4 = byte^4;
sbit b5 = byte^5;
sbit b6 = byte^6;
sbit b7 = byte^7;
void dely(void);
void incangle(void);
void decangle(void);
void delay(int d);

void shiftup() // raise the bar graph by one step
{
b7=b6; // shitf the bits one by one to up
b6=b5;
b5=b4;
b4=b3;
b3=b2;
b2=b1;
b1=b0;
b0=1; // insert 1 to first bit
}
void shiftdown() // decrease bar graph by one step
{
b0=b1; // shift all the bits down one by one
b1=b2;
b2=b3;
b3=b4;
b4=b5;
b5=b6;
b6=b7;
b7=0; // insert 0 to last bit
}
void keydly(void) //key debounce delay
{
unsigned int x,y;
for(x=0;x<100;x++)
for(y=0;y<1000;y++);
}
void decangle() //decrease delay by 1ms
{
EX1=0; //first disable all interrupts
if(d1>0)
{
d1--; // decrease delay
shiftdown();
P1=byte;
}
EX1=1; // enable interrupts before leaving
}
void incangle() // increase delay by 1 ms
{
EX1=0; // all other things remains same as above
if(d1<9)
{
d1++;
shiftup()
P1=byte;
}
EX1=1;
}
void delay(int d) // generates delay from 1 to 9 ms
{
int k;
TL0 = 0x17; // load timer 0 with 64535 = FC17h
TH0 = 0xFC; // so it will overflow after 1000 counts
TR0 = 1; // start timer
for(k=0;k<d;k++) // count overflows of timer 0 till
{ // desire delay is required
while(TF0==0);
TF0 = 0;
TL0 = 0x17;
TH0 = 0xFC;
}
TR0 = 0;
}
void int0(void) interrupt 2 // external interrupt 1 subroutine
{
keydly(); // after key debounce delay
if(s1==0) // for first key
{
c++; // increase counter
if((c%2)==1) // check even or odd
{
EX0 = 1; // enable external interrupt 1 if odd
}
else
{
EX0 = 0; // disable external interrupt 1
}
}
else if(s2==0) // for second key
{
incangle(); // increase phase angle
}
else if(s3==0) // for third key
{
decangle(); // decrease phase angle
}
}
void int1(void) interrupt 0 // external interrupt 1 subroutine
{
int t;
led1=0; // led1 is on
delay(d1); // after desired delay
pulse=1; // send pulse on p2.0
for(t=0;t<200;t++);
pulse=0;
led1 = 1; // led1 off
}

void main()
{
TMOD = 0x01; // initialize timer0 as 16 bit timer
P1=0x00; // P1 as output ports
P3=0xFF; // P3 as input port
IE=0x84; // enable external interrupt 1
while(1); // continuous loop
}

اعلانات

بسام1970
:: عضو ::
تاريخ التسجيل: Feb 2011
المشاركات: 960
نشاط [ بسام1970 ]
قوة السمعة:0
قديم 29-03-2011, 07:32 PM المشاركة 2   
افتراضي


http://www.qariya.com/vb/forumdisplay.php?f=76

اطرح السؤال هنا في الرابط اعلاه

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

simo aden
:: مهندس ::
تاريخ التسجيل: Mar 2011
المشاركات: 4
نشاط [ simo aden ]
قوة السمعة:0
قديم 30-03-2011, 11:48 AM المشاركة 3   
ha


ياشباب في حد عنده حل لمشكلتي ؟؟

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025