دوستان این کد چرا نباید کار کنه؟
ایراد کجاست؟
گیرنده
فرستنده
گیرنده هیچی دریافت نمیکنه
پایه فرستنده رو با اهم متر چک کردم.نغیرات کوچیکی تو ولتاژش میوفته که باید نشون دهنده ارسال باشه؟درسته؟
ایراد کجاست؟
گیرنده
کد:
#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include "lcd.h" #include <stdlib.h> #define BAUD 9600 #define BAUDRATE ((F_CPU)/(BAUD*16ul)-1) int w; char r[10]; void uart_init (void) { UBRRH=0x00; UBRRL=BAUDRATE; UCSRB|=(1<<RXEN); UCSRC|=(1<<UCSZ0)|(1<<UCSZ1); } uint8_t uart_r (){ while((UCSRA &(1<<RXC))== 0); return UDR; } int main(void) { char data; while(1) { w++; lcdInit(); lcdGotoxy(0,1); itoa(w,r,10); lcdPuts(r); data=uart_r(); lcdClear(); lcdGotoxy(0,0); lcdPutchar(data); _delay_ms(1000); } }
کد:
#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #define BAUD 9600 #define BAUDRATE ((F_CPU)/(BAUD*16ul)-1) void uart_init (void) { UBRR0H=0x00; UBRR0L=BAUDRATE; UCSR0B|=(1<<TXEN0); UCSR0C|=(1<<UCSZ00)|(1<<UCSZ01); } void uart_transmit (unsigned char data){ while (!(UCSR0A&(1<<UDRE0))); UDR0=data; } int main(void) { uart_init(); DDRC=(1<<PINC5); DDRA=0XFF; DDRB=0XFF; while(1) { if (bit_is_set(PINC,5)) { uart_transmit(40); PORTA=0XFF; PORTB=0XFF; _delay_ms(1000); PORTA=0X00; PORTB=0X00; _delay_ms(1000); } } }
پایه فرستنده رو با اهم متر چک کردم.نغیرات کوچیکی تو ولتاژش میوفته که باید نشون دهنده ارسال باشه؟درسته؟
دیدگاه