السلام عليكم ورحمة الله وبركاتة
هذه طريقة سهله وبسيطة جدا استخدمت فيها خاصية المقاطعة الحاصلة بسبب استقبال بيانات عن طريق UART طبعا الطريقة سهله ومافيهاش اي تعقيد انا عملت ربط بين 2 مايكروكنترول وعندما اضغط على البوتن الاول يرسل حرف A وعندما البيك الثاني يستقبل نفس الحرف يضئ الليد اشتغل تمام ولله الحمد و لكن البوتن الثاني يرسل حرف B لايتم اضاءة الليد الاخر رغم اني اتاكدت من الحرف انه ارسل ياليت نثري هذا الموضوع ونعدل عليه لانه سهل التطبيق وسهل البرمجة
الارسال:
كود:
void main() {
cmcon=0x07;
TRISA = 0b00000011;
porta=0;
TRISB.f2 = 0; TRISB.f1 = 1;
portb=0;
UART1_Init(9600);
while(1)
{ if(PORTA.f0 == 1 )
{
uart1_write( 'A');
while(PORTA.f0);
}
if(PORTA.f1 == 1 )
{
uart1_write( 'B');
while(PORTA.f1);
}
}
}
الاستقبال:
كود:
char x;
void interrupt()
{ int y;
if(uart1_data_ready()){x=uart1_read();
if(x=='A') {
for(y=0;y<5;y++){
porta.f1=1;delay_ms(500);porta.f1=0;delay_ms(500);}}
if(x=='B'){
for(y=0;y<5;y++){
porta.f2=1;delay_ms(500);porta.f2=0;delay_ms(500)
}
} }
pir1.f5=0;
return;
} }
void main()
{
cmcon=0x07;
trisa=0;
triseb.f4=0;triseb.f5=0;
TRISB.f2 = 0; TRISB.f1 = 1;
INTCON.f7=1;INTCON.F6=1;
PIE1.f5=1;
Uart1_Init(9600);
}