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发都是正常的
各位知道原因么 ????谢谢 BPS是多少?10us能发送几个字节?
按常用9600bps算,每个字节最少10位,那么每秒可以发送960个字节,因此发送一个字节的时间需要1个ms多一点。
你延时了10us就将485芯片发送关掉该接收了,后面的字节根本发不出去的。
这只是小学生的算术,没有什么复杂的。关键大家的基础学的太差。照葫芦画瓢,而后说AVR有问题...... 谢谢马老师
经过实验是这样
页:
[1]