打印
[AVR单片机]

百思不得其解,极简单的代码也会乱跳

[复制链接]
1822|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
donkey89|  楼主 | 2009-9-4 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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

相关帖子

沙发
林粼粼| | 2009-9-4 09:40 | 只看该作者
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);
    }
循环里没收到数,vc就不会刷新,那你的if判断语句可不就是一直满足条件

使用特权

评论回复
板凳
donkey89|  楼主 | 2009-9-4 09:52 | 只看该作者
本帖最后由 donkey89 于 2009-9-4 10:01 编辑
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); ...
林粼粼 发表于 2009-9-4 09:40

我在循环的末尾加上这才vc=1,再在循环里面加上一个判断,为'q'的时候退出循环,结果还是不断自己输出字符,但是接受到'q'以后停止了,表明是受控的

使用特权

评论回复
地板
林粼粼| | 2009-9-4 10:06 | 只看该作者
那你研究下你的发送和接收程序

使用特权

评论回复
5
chengfei21| | 2009-9-8 19:50 | 只看该作者
估计是你的这个函数的问题:
uart_getc()
要不贴出来看看

使用特权

评论回复
6
luotianzhi| | 2009-10-10 12:35 | 只看该作者
你的问题就是在接收和发送程序里

使用特权

评论回复
7
wangwo| | 2009-10-14 13:03 | 只看该作者
路过,学习学习

使用特权

评论回复
8
lovelyegle| | 2009-10-14 13:33 | 只看该作者
同意6#的说法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

241

主题

1609

帖子

1

粉丝