本帖最后由 donkey89 于 2009-9-4 09:34 编辑
代码很简单,就是测试用的,先输出"abcdefg',然后判断接收到的是'c'就输出'w',如果是'b'就输出'y',
但是串口接收到第二个数据以后就不断的自己发送数据了
int main (void)
{
uint8_t vc;
sbi(DDRC,RD_PIN);
sbi(RD_PORT,RD_PIN);
//uart 初始化
UBRR0H = 0;
UBRR0L = 25; //9600 baud 6MHz:38 4MHz:25
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
UCSR0C = (1<<UCSZ00)|(1<<UCSZ01);//8位数据,一个停止位
uart_putc('a');
uart_putc('b');
uart_putc('c');
uart_putc('d');
uart_putc('e');
uart_putc('f');
uart_putc('g');
_delay_ms(10);
cbi(RD_PORT,RD_PIN);
_delay_ms(10);
while (1)
{
vc=uart_getc();
if(vc=='c')
{
uart_putc ('w');
_delay_ms(10);
}
else if (vc=='b')
{
uart_putc('y');
_delay_ms(10);
}
_delay_ms(10);
}
}
运行的结果:
输入:cb
abcdefgcwbywwwwwwwwwwwwwwwwwwwwwwwwwwwww一直不断的输出w
输入:hhbt
abcdefghhbytyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy一直不断的输出y |