این برنامه باید یه متن رو از پورت سریال بگیره و تشخیص بده که توی اون متن، حرف O بزرگ وجود داره یا نه. اگه وجود نداشت دوباره متن درخواست میکنه و اگه وجود داشت میونویسه OK
ولی درست کار نمیکنه.
یعنی درخواست گرفتن متن رو میکنه، من هیچ متنی رو وارد نمیکنم. پس باید بازم درخواست فرستادن متن رو کنه دیگه. ولی یه بار درخواست میکنه، دفعه بعد OK رو میفرسته
oo:
مشکلش چیه؟
[code=c]
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
unsigned char sub();
unsigned char receive[],r_index;
interrupt [USART_RXC] void usart_rxc_isr(void)
{
receive[r_index]=UDR;
r_index++;
}
void main()
{
unsigned char i;
unsigned char j=1;
UCSRA=0X00;
UCSRB=0X98;
UCSRC=0X86;
UBRRH=0X00;
UBRRL=0X47;
#asm("sei"
while(j)
{
printf("matn ra vared ****d\r\n"
;
delay_ms(10000); // takhir baraye daryafte matn
j=sub();
r_index=0;
for(i=0 ; receive[i] ; i++)
receive[i]='\0';
}
printf("OK\r\n"
;
while(1);
}
unsigned char sub()
{
unsigned char a=0;
for(r_index=0 ; receive[r_index] ; r_index++)
{
if(receive[r_index]=='O'
a=1;
}
if(a==1) return 0;
else return 1;
}
[/code]
ولی درست کار نمیکنه.
یعنی درخواست گرفتن متن رو میکنه، من هیچ متنی رو وارد نمیکنم. پس باید بازم درخواست فرستادن متن رو کنه دیگه. ولی یه بار درخواست میکنه، دفعه بعد OK رو میفرسته

مشکلش چیه؟
[code=c]
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
unsigned char sub();
unsigned char receive[],r_index;
interrupt [USART_RXC] void usart_rxc_isr(void)
{
receive[r_index]=UDR;
r_index++;
}
void main()
{
unsigned char i;
unsigned char j=1;
UCSRA=0X00;
UCSRB=0X98;
UCSRC=0X86;
UBRRH=0X00;
UBRRL=0X47;
#asm("sei"

while(j)
{
printf("matn ra vared ****d\r\n"

delay_ms(10000); // takhir baraye daryafte matn
j=sub();
r_index=0;
for(i=0 ; receive[i] ; i++)
receive[i]='\0';
}
printf("OK\r\n"

while(1);
}
unsigned char sub()
{
unsigned char a=0;
for(r_index=0 ; receive[r_index] ; r_index++)
{
if(receive[r_index]=='O'

a=1;
}
if(a==1) return 0;
else return 1;
}
[/code]
دیدگاه