串行口数据发送流程是什么? 谁能帮我回答一个关于51单片机的问题: 简述串行口接收和发送数据的过程。
串行口数据发送流程是什么?
你好像已经问我两次了,不过没有一次采纳.希望你可以及时采纳,因为我们这些帮人回答问题的如果没有一些鼓励会没有什么意愿再帮人回答问题的.
一,异步通信中每个数据都是以特定的帧形式传送,数据在能信线上一位一位地串行传送,每帧的顺序由以下几部分组成:
1起始位:
2数据位(8位)
3奇偶校验位(也可以无)
4停止位
二,同步通信中,通常先发送1-2个字符作业数据传送的开始,称为同步字符SYNC,并由时钟来实现发关端和接收端的同步.即检测到规定的的同步字符后紧接关按顺序开始用同步字符SYNC来指示其数据,中间不能有空闲位,也不需要停止位和开始位,仅在数据位开始时用同步字符SYNC来指示.
谁能帮我回答一个关于51单片机的问题: 简述串行口接收和发送数据的过程。
串行接口的接收和发送是对同一个地址(99H)两个物理控制的特殊寄存器SBUF进行读与写得,当向SBUF发写命令时,即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便发送中断标志T1=1,在满足串行口接收中断标志位R1=0的条件下,置允许接收位REN=1就会接收一帧数据进行移位寄存器,并装载和接收到SBUF中,同时使R1=1当发读SBUF命令时(执行 MOVA SBUF)便由接收缓冲期SBUF的信息通过内部总线送到CPU。
51单片机通过串口实现数据的发送与接收程序
串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。
一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
串口中断处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART()
while(1)
{
//数据发送函数
}
}
请问一下单片机串口接收数据时的过程??
串行口使用T1控制传输速度,只是需要我们写入初值,其余过程都是硬件自动进行的,不再需要人工干预。 以后,我们只要看住RI和TI即可。
数据传到SBUF之前的过程不了解,也没有关系,那应该是电子专业人员研究的。
串口发送和接收一字节的程序
#include
void initUART(void)   
{
 TMOD=0x20   //M1=1,M0=0 定时器1工作方式2(定时常数重装,8 位)
 SCON=0x50   //SM0=0,SM1=1,REN=1 串口工作方式1,允许接收
 TH1=0xfd    //晶振11.0592时,波特率9600
 TL1=TH1     //TL1计数,溢出后,TH1值送入TL1
 EA=1        //开总中断   
 ES=1        //允许串口中断
 TR1=1       //启动定时器1
}
void main()
{ 
while(1)
  initUART()  //调用串口初始化子程序
}
void UARTinterrupt( ) interrupt 4        
{ 
if(RI)
  { 
  RI=0
P1=SBUF
  }
}
关于计算机串口工作过程的问题
连到CPU上,发送接受是高电平为0低电平为1,负逻辑。串口发送就是往自带的发送BUFFER写数据,接受就是读接受BUFFER的数据。自带的buf是指串口控制器自带的,如果串口是CPU带的,那就在CPU里面,如果串口是外扩的,那就是串口扩展芯片带的,16c550什么的.是的应该都是负电压一般是-3V到-15V之间,呵呵,不客气
串口收发数据
CreateFile函数的倒数第二个参数dwFlagsAndAttributes应该为FILE_FLAG_OVERLAPPED,这样才是异步通信。
否则你的程序中设为同步通信,WriteFile()函数将阻塞当前线程。
另:CreateFile函数应注意返回值,看看串口打开是否成功