السلام عليكم
لقد قمت بتعديل البرنامج لكي ارسل عدد مكون من خمسة ارقام (مثلا 29401 او 00027 او..) وقد قمت بفصل الاحاد عن العشرات عن المئات عن.... لكي استطيع ارسال الرقم باستخدام الامر UART1_Write لانني لا استطيع ارسال اكثر من رقم في آن واحد باستخدام هذا الامر.
المشكلة كانت في المستقبل فقد كان يستقبل اكثر من خمسة ارقام(يقوم بتكرار بعض الارقام) كما بالصورة
وهذا كود الارسال
كود:
unsigned x=0;
unsigned y;
unsigned k;
int n;
void main()
{ TRISD=0xff;
UART1_Init(9600);delay_ms(100);
while(1)
{
if(PORTD.F1==0)
{ while(PORTD.F1==0){}
x=x+9;
}
if(PORTD.F0==0)
{ while(PORTD.F0==0){}
k=x;
UART1_Write(13);
UART1_Write(10);
for(n=4;n>=0;n--)
{ y=k/pow(10,n);
UART1_Write(48+y);
k=k-(y*pow(10,n));
if(n==0)break;
}
}
}
}
وهذا كود المستقبل
كود:
void main() {
unsigned x=0;
int n;
char k;
UART1_Init(9600);delay_ms(100);
while(1)
{
if(UART1_Data_Ready()==1)
{ for(n=4;n>=0;n--)
{k=UART1_Read();
UART1_Write(k);
x=x+((k-48)*pow(10,n));
if(n==0)break;}
}
}
}
ملاحظة: البرنامج مكتوب ببرنامج MicroC Pic Pro
الامر UART1 يعادله الامر Usart في الـ MicroC والباقي كما هو.
وهذه ملفات البرنامج مع البروتس
http://www.4shared.com/file/Pmw3h0X7/TxRx11.html
عفوا على كثرة اسألتي فليس لي الا هذا المنتدى الزاخر بالخبراء والاساتذة
في انتظار حلولكم
وجزاكم الله خير وصبركم علي