سلام
منهم حدس زدم دارین تو تابع وقفه کارمی کنید( با Pic کار نکردم تا حالا )
کلیت کا ر اینجوری میشه:
کد:
//global variables
volatile int i=0;
volatile char data[];
void RDA_isr(void)
{
data[i]=getchar(com1);
i++;
}
char compare(char *str1,char *str2, int nbyte)
{
int t=0;
while(nbyte){
if(str1[t]!=str2[t])
return 0;
nbyte--;
t++;
}
return 1;
}
int main(void){
int j;
//احتمال می دمم مفسر به مقایسه دو رشته غیر هم جنس گیر بده بنابراین رشته های ثابت رو بصورت
// char
//تعریف کنید بهتره
unsigned char c[4]={0x03,0x42,0x80,0xc1};
unsigned char d[5]={0x03,0x42,0x80,0xc1,0xf1};
while(1){
if(compare(data,c,4)){
output_high(CMD4);
data[]={"\0"};
}
if(compare(data,d,5)){
output_high(CMD5);
data[]={"\0"};
}
}
}