superbayi 发表于 2009-8-18 17:00:58

m16 uart问题 cvavr 马老师看下

马老师请教下
我用cvavr系统生成uart程序(芯片用m16)
调用#include <stdio.h> putchar() getchar()有问题
   单独用都正常 ,,用查询方式
   SCON=0;//485允许收
   delay_us(10);
    while(1)
    {
      if (getchar()){
      SCON=1; //485允许发
      delay_us(10);
      putchar('A');
      putchar('B');
      putchar('C');
      putchar('d');
      putchar('F');   
      putchar('A');

      delay_us(10);
      SCON=0;//485允许收
      delay_us(10);
      }

    };
后面      putchar('F');   
      putchar('A');

pc那里就是接受不到,,只接受到putchar('A'); putchar('B'); putchar('C'); putchar('d');
如果发putchar('A'); putchar('B'); putchar('C'); putchar('d'); 那么只接受到putchar('A'); putchar('B');后面 putchar('C'); putchar('d');接受不到,,,如果只发putchar('A');那么就接受不到了,,,不调用getchar()直接让m16发都是正常的
各位知道原因么 ????谢谢

machao 发表于 2009-8-22 10:57:15

BPS是多少?10us能发送几个字节?

按常用9600bps算,每个字节最少10位,那么每秒可以发送960个字节,因此发送一个字节的时间需要1个ms多一点。

你延时了10us就将485芯片发送关掉该接收了,后面的字节根本发不出去的。

这只是小学生的算术,没有什么复杂的。关键大家的基础学的太差。照葫芦画瓢,而后说AVR有问题......

superbayi 发表于 2009-8-29 08:51:57

谢谢马老师
      经过实验是这样
页: [1]
查看完整版本: m16 uart问题 cvavr 马老师看下