با سلام
من میخام یک عدد متغییر رو با USART ارسال کنم و در گیرنده نمایشش بدم کد زیر رو نوشتم.اما انگار به شدت اشتباه هستش.
با تشکر از راهنمایی دوستان
ارسال
کد:
#ifndef F_CPU #define F_CPU 8000000UL
#endif
#include <avr/io.h>
#include <avr/iom8.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
volatile char buff[8];
volatile int i=177;
void Send_Data(char *data)
{
while ((UCSRA & (1<<UDRE))==0);
UDR=*data;
}
int main(void)
{
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
while(1)
{
itoa(i,buff,10);
Send_Data(buff);
}
}
دریافت
کد:
#ifndef F_CPU
#define F_CPU 8000000UL
#endif
#include <avr/io.h>
#include <avr/iom8.h>
#include <util/delay.h>
#include <stdio.h>
#include <stdlib.h>
#include "lcd.h"
volatile char c, buff[8];
volatile int i,j=0;
unsigned char USART_Receive( void )
{
while ( !(UCSRA & (1<<RXC)) );
return UDR;
}
int main(void)
{
UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
while(1)
{
c=USART_Receive();
i=(void*)c;
itoa(i,buff,10);
lcd_clrscr();
lcd_home();
lcd_gotoxy(0,1);
lcd_puts(c);
_delay_ms(50);
}
}