Ⅰ 单片机里面的单双工含义是啥,在线等速度
说的是串行通信的单双工吧
1、单工
单工就是指终端A只能发信号,而终端B只能接收信号,通信是单向的。
2、半双工
半双工就是指终端A能发信号给终端B,终端B也能发信号给终端A,但是,这两个过程不能同时进行。
3、全双工
全双工就是指终端A和终端B都能作为信号的收发端,并且,信号的收发可以同时进行。相对来说采用全双工对信道的带宽要求比半双工要高。
Ⅱ MCS-51单片机什么是全双工,半双工,单工串行通信
单工只有一根数据线,信息只能单向传送。半双工也只有一根数据线,但信息可以分时双向传送。全双工有两根数据线,可以同时双向传送。
决定程序执行顺序的寄存器是(PC),它的最大寻址范围是(64K)。PC的值是(程序运行当前)的地址。P0口当不作系统扩展时,可作(IO)使用。当作系统扩展时,P0口担任分时复用的总线口。在这种情况下,应在外部加(锁存器)将地址数据锁存,地址锁存信号用(ALE)。
根据串行通信数据传输的方向,可将串行通信系统传输方式分为(单工)方式,(半双工)方式和(全双工)方式。
MCS-51单片机
采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
(1)51子系列:芯片型号的最末位数字以1作为标志,是基本型产品。
(2)52子系列:芯片型号的最末位数字以2作为标志,是增强型产品。
以上内容参考:网络-MCS-51单片机
Ⅲ 51单片机能不能实现全双工
当定时器用作波特率发生器时,是不是解决了你所考虑的时钟问题。RX,TXD两个脚是用作接收和发送数据的(仅在用作移位功能时一个传数,一个当时钟),其电平是参考了GND脚的。
Ⅳ 在线等!!!求一个51单片机之间串口通信的程序,半双工的。希望给出程序实例
楼上的程序是我在http://z..com/question/115232752.html回答的,也是我写的。竟然被人引用了!!那个程序一个只能发送,一个只能接受,而不能满足你半双工的要求。
下面是我写了一个是用查询方式,甲机先将数据发送给已机,甲机判断是不是停止位,是,就停止发送,然后是已机发送,判断停止位,是,停止发送,如此反复发送,中间有握手信号联络两机。我不清楚你的半双工是怎么工作的,只是写了一个两机循环发送的程序,可以的话,你可以参考一下。
我觉得中断应该比较容易实现的。
下面是程序 甲机
#include <reg51.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char data sendData[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x9};//定义要发送的数据
//设置串口工作方式
void uart_init()
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
PCON=0x00;
TR1=1;
SCON=0x50;
} //设置串口工作方式
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
//延时程序
void shakeHand()
{
do
{
SBUF=0x01;
while(TI==0);
TI=0;
while(RI==0);
RI=0;
}
while(SBUF!=0x02) ;
} //握手信号
void send(unsigned char sendData)
{
SBUF=sendData;
while(TI==0);
TI=0;
}//发送数据程序
unsigned char receive()
{
while(RI==0);
RI=0;
return (SBUF);
}
void main()
{
uart_init();
shakeHand();
while(1)
{
unsigned char i=0;
for(;i<strlen(sendData)-1;i++)
{
send(sendData[i]);
delay(500) ;
}
shakeHand();
do
P2=receive();
while(SBUF!=0x09) ;
shakeHand();
}
}
已机部分
#include <reg51.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char data sendData[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x9};//定义要发送的数据
//设置串口工作方式
void uart_init()
{
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
PCON=0x00;
TR1=1;
SCON=0x50;
} //设置串口工作方式
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
//延时程序
void shakeHand()
{
do
{
SBUF=0x02;
while(TI==0);
TI=0;
while(RI==0);
RI=0;
}
while(SBUF!=0x01) ;
} //握手信号
void send(unsigned char sendData)
{
SBUF=sendData;
while(TI==0);
TI=0;
}//发送数据程序
unsigned char receive()
{
while(RI==0);
RI=0;
return (SBUF);
}
void main()
{
uart_init();
shakeHand();
while(1)
{
unsigned char i=0;
do
P2=receive();
while(SBUF!=0x09) ;
shakeHand();
for(;i<strlen(sendData)-1;i++)
{
send(sendData[i]);
delay(500);
}
shakeHand();
}
}
Ⅳ 请教个单片机和电脑串口通讯(关于半双工)的问题
SBUF=temp;
while(TI == 0); //等待发送完毕
TI = 0; //清除标志
SBUF=0x0D;
while(TI == 0); //等待发送完毕
TI = 0; //清除标志
……
每发送一个字节,都需要等待发送完毕。
Ⅵ 单片机 c语言 嵌入式 max1487芯片和max485芯片的全双工半双工分别什么意思怎么理解一定采纳
所谓全双工,是指发送和接收可以同时进行。半双工是指发送和接收都支持,但是同一时刻,只能发送或者接收,不能同时进行。通常还有一种情况,叫单工,就是只能发送或者接收。
Ⅶ 51单片机半双工和全双工发送和接收数据的时候是在同一根线上还是2根线上
全双工一般指的是异步通信。异步通信时,51单片机允许在RXD和TXD引脚(两根线)上同时进行数据收发传输,两根线上的逻辑电平高低相对于公共接地端VSS。而同步通信只能是半双工,一根线用作时钟,另一个线用来传输数据。两根线上的逻辑电平高低同样相对于公共接地端VSS。拙见,希望对你有帮助。
Ⅷ 用单片机模拟UART通信是全双工还是半双工
双核如果可以独立操作,又有相应寄存器存储收发数据的话,应该是可以的,不过本人没见过双核的单片机,具体你可以编程试下。
Ⅸ 51单片机串口通信是全双工的,但是为什么又说它的发送和接受不可以同时进行呢
51单片机串口通信是全双工的,发送和接受可以同时进行。不可以同时进行的是半双工。
全双工方式分别由两根不同的传输线传送数据时,通信双方都能在同一时刻进行发送和接收操作,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在发送和接受两个方向上传送。
半双工使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据。采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收/发开关实际上是由软件控制的电子开关。
(9)单片机半双工扩展阅读:
全双工方式在发送设备的发送方和接收设备的接收方之间采取点到点的连接,这意味着在全双工的传送方式下,可以得到更高的数据传输速度。
全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。
Ⅹ 俩个单片机之间通信。利用半双工。上位机给发送指令,下位机接受执行,
一个发送数据,另一个处于中断接受状态。
握手?这就需要握手协议了,协议可以自己定义,也可以参考其它的标准协议(很多了),如modbus通讯协议(http://ke..com/view/1861869.htm http://wenku..com/view/3e5f06204b35eefdc8d33396.html )。
上位机给下位机发送指令或数据,下位机接收后编译,并按照要求回复所需数据。