ใครพอทราบเรื่อง uart ช่วยหน่อยครับ

#include <16F877A.h>
#fuses   HS,NOPUT,NOWDT,NOPROTECT
#use delay (clock = 10000000)
#use rs232 (baud =9600,parity=N,xmit = PIN_C6,rcv =PIN_C7,stream = rs232,bits=8)
unsigned char c[6]={};
unsigned char pass1[6]={0x02,0x33,0x42,0x30,0x30,0x33};
         int i;
         int light=0;
         int flag=1;
void main()
{
while (true)
{
for(i=0;i<6;i++)
{
c = fgetc(rs232);
}
if((c[0]==pass1[0])&&ร้องไห้c[1]==pass1[1])&&ร้องไห้c[2]==pass1[2])&&ร้องไห้c[3]==pass1[3])&&ร้องไห้c[4]==pass1[4])&&ร้องไห้c[5]==pass1[5]))
{flag++;}
c=0;   
if(flag%2==0)
{
   if(light%2==0)
   {
   output_HIGH(pin_B2);
   output_HIGH(pin_B0);
   delay_ms( 3000 );
   output_LOW(pin_B0);
   }
   else
   {output_LOW(pin_B2);
   output_HIGH(pin_B0);
   delay_ms( 3000 );
   output_LOW(pin_B0);}
light++;
}
else
{output_HIGH(pin_B1);
delay_ms( 3000 );
output_LOW(pin_B1);
}
}
}

คือผมกำลังศึกษาเรื่อง เครื่องอ่าน RFID กับ pic16f877a
ผมได้ทำการทดลองมาเรื่อยๆจนสามารถรับค่าจาก rfid ด้วยฟังก์ชั่น c=fgetc(rs232)แล้วเก็บค่ามาเปรียบเทียบเพื่อให้ pic สั่งการเปิดปิด หลอด led ได้แล้ว

ซึ่งผมอยากจะขอคำปรึกษาว่า ทำไมมันถึงรับค่าจาก rfid ได้เพียงครั้งเดียว ทั้งๆที่ผมใช้ while(true) แล้ว

ขอบคุณมากครับ

ปล.มีพี่ๆแนะนำให้ใช้ interrupts แต่ลองแบบมั่วๆแล้วผลไม่ออก
แต่
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่