با سلام
من می خواهم بین دو میکرو با یوزارت ارتباط برقرار کنم به صورتی که فرستنده مقدار پورت a را برای گیرنده بفرستد و گیرنده هم اون را در پورت b نشان دهد
برنامه خیلی ساده است در پروتئوس هم خوب جواب میده ولی روی برد مشکل داره
بوادریت را هم یکسان تعریف کردم
فرکانس اسیلاتور داخلی 8 مگ هست
گیرنده
من می خواهم بین دو میکرو با یوزارت ارتباط برقرار کنم به صورتی که فرستنده مقدار پورت a را برای گیرنده بفرستد و گیرنده هم اون را در پورت b نشان دهد
برنامه خیلی ساده است در پروتئوس هم خوب جواب میده ولی روی برد مشکل داره
بوادریت را هم یکسان تعریف کردم
فرکانس اسیلاتور داخلی 8 مگ هست
کد:
#include <avr/io.h>
#include <util/delay.h>
void usart_init (void)
{ UBRRH =0;
UCSRB = (1<<TXEN);
UCSRC = (1<<UCSZ1)|(1<<UCSZ0)|(1<<URSEL);
UBRRL = 0x33;
}
void usart_send (unsigned char ch)
{
while ( (UCSRA & (1<<TXC)));
UDR = ch;
}
int main(void)
{ _delay_ms(500);
unsigned char i;
DDRB=0x00;
DDRD=(1<<1);
PORTD=(1<<1);
PORTB=0xFF;
usart_init();
while(1)
{ usart_send(i);
i=PINB;
}
return 0;
}
گیرنده
کد:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{ _delay_ms(500);
DDRB = 0xFF;
UBRRH =0;
UCSRB =(1<<RXEN);
UCSRC = (1<<UCSZ1)|(1<<UCSZ0)|(1<<URSEL);
PORTD=(1<<0);
UBRRL =0x33;
while(1){
while (!(UCSRA & (1<<RXC)));
PORTB = UDR;
}
return 0;
}




دیدگاه