سلام خدمت دوستان
سوال1) مثلا من دیتا رو با وقفه USART_RXC به صورت زیر دریافت میکنم.....ببینید درست فهمیدم(آخه یکم قاطی کردم
) :
*) وقتی دیتا از سمت فرستنده ارسال میشه این وقفه رخ میده و دیتا رو بیت بیت در آرایه str ذخیره میکنه.....درست گفتم؟؟؟؟؟
**)یا این که کدهای داخل وقفه USART_RXC رو باید داخل تابع main بنویسم و این وقفه هم کارش اینه که وقتی هر بیت از دیتا دریافت بشه..این وقه رخ میده....
کدوم یکی از این 2 تا موردی که گفتم درسته؟؟؟؟؟
[code=c]char str[10];
char data;
unsigned int i=0;
interrupt[USART_RXC] void USART_RX_Complete(void)
{
data=UDR;
str[i]=data;
i++;
if(i>8)i=0;
}[/code]
سوال2) حالا تو وقفه برا ارسال کننده....من کد زیر رو در حلقه while گزاشتم تا هر موقع خواستم دیتا رو بفرستم.....کارم درسته؟؟؟؟؟
[code=c]for(i=0;i<=7;i++){UDR=a[i];delay_ms(100);}[/code]
و وقفه ارسال کننده رو هم به صورت زیر نوشتم....
ببینید درست میگم یا نه : هر موقع هر بیت از دیتامون ارسال میشه وقفه USART_TXC رخ میده....درست گفتم؟؟؟؟؟
[code=c]interrupt[USART_TXC] void USART_TX_Complete(void)
{
PORTB.2=!PORTB.2;
}[/code]
سوال1) مثلا من دیتا رو با وقفه USART_RXC به صورت زیر دریافت میکنم.....ببینید درست فهمیدم(آخه یکم قاطی کردم

*) وقتی دیتا از سمت فرستنده ارسال میشه این وقفه رخ میده و دیتا رو بیت بیت در آرایه str ذخیره میکنه.....درست گفتم؟؟؟؟؟
**)یا این که کدهای داخل وقفه USART_RXC رو باید داخل تابع main بنویسم و این وقفه هم کارش اینه که وقتی هر بیت از دیتا دریافت بشه..این وقه رخ میده....
کدوم یکی از این 2 تا موردی که گفتم درسته؟؟؟؟؟
[code=c]char str[10];
char data;
unsigned int i=0;
interrupt[USART_RXC] void USART_RX_Complete(void)
{
data=UDR;
str[i]=data;
i++;
if(i>8)i=0;
}[/code]
سوال2) حالا تو وقفه برا ارسال کننده....من کد زیر رو در حلقه while گزاشتم تا هر موقع خواستم دیتا رو بفرستم.....کارم درسته؟؟؟؟؟
[code=c]for(i=0;i<=7;i++){UDR=a[i];delay_ms(100);}[/code]
و وقفه ارسال کننده رو هم به صورت زیر نوشتم....
ببینید درست میگم یا نه : هر موقع هر بیت از دیتامون ارسال میشه وقفه USART_TXC رخ میده....درست گفتم؟؟؟؟؟
[code=c]interrupt[USART_TXC] void USART_TX_Complete(void)
{
PORTB.2=!PORTB.2;
}[/code]
دیدگاه