㈠ 单片机串口接收数据就会中断一次吗

你可以如下修改程序来达到目的。xx是你要接收多少个字节后结束的判断条件,需要在中断程序外事先赋值(如 j = xx;)。当然你也可以改变结束判断条件(比如隔多久没再收到数据就表示结束)。
void Uart() interrupt 4 using 1//要是中断一次来接收一字节是不是又回到 void main()运行?,
//有什么方法不让他返回 void main()吗?让他完整接收完所有数据在返回!
{
while (j <= xx)
{
if (RI)
{
RI = 0;
str[i++]=SBUF;
RI = 0;
}
j++;
}
}

不认同楼上的说法,串口是个独立的功能部件,是按字节接收的,也就是接收完一整个字节才会产生一次中断,而不是接收1个位(bit)就中断。你的程序进入中断后,虽然串口无法再再次进入中断,但仍然会产生RI。就是因为串口是独立工作的,它的收发并不受程序影响。而是否进能进中断是受程序设定的条件和状态控制的。
但个人也不赞成程序在中断中耽误太多时间(比如上述中断中加入循环,等待接收完成再退出的做法也是不妥的)。中断中呆的时间过长,就会导致同级及低级别中断长时间得不到响应(假如你的T1设定优先级与串口一样,而它产生中断得不到响应,就会造成定时不准)。
所以上述程序还是应该将while循环放到主程序中,等 j 满足条件了再执行相应的程序也是一样的。

㈡ 串行口一次能传送多少位数据

串行口一次传递一位数据,按波特率9600,每秒能传递9600位数据,以8位数据加1起始位、1停止位,每秒能传递960字节的数据。

串口叫做串行接口,现在的PC 机一般有两个串行口COM 1 和COM 2 。串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。

进行串行传输的接口,它一次只能传输1Bit。串行端口可以用于连接外置调制解调器、绘图仪或串行打印机。它也可以控制台连接的方式连接网络设备,例如路由器和交换机,主要用来配置它们。

串行传输由于只有一位信号在信号线上,没有位同步问题,因此传送频率可以继续提高,当前传输速率已经达到1Gb/s(1000Mb)以上,而且还在提高,而并行传输在100Mb/s左右就停滞不前了,可以预见,串行传输将会比并行传输越来越快。

参考:http://ke..com/link?url=