单片机串口通信只使接收数据才进入串口中断的程序是否这样?

部分程序如下,串口中断能用,请问运用此方法是否可以只让单片机接收数据用到了串口中断,而发送数据不用进入串口中断?
……
void UART_T (unsigned char UART_data)

SBUF = UART_data;
while(TI == 0);
TI = 0;

……

如果开了串口中断,那么只要满足条件后肯定会进入的。如果发送要不进的话,必须发送前关闭串口中断控制位。
void UART_T (unsigned char UART_data)
{
ES=0;
SBUF = UART_data;
while(TI == 0);
TI = 0;
ES=1;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-07
你的程序可行,没有问题追问

为什么运用了whie循环之后可以使发送数据完后不进入了串口中断?

现在我咋用STM32进行双单片机串口通信,我对串口中断发送程序这不太清除...
你可以先用串口调试助手,向单片机发送一个数据,如果有j-link,用j-link在中断函数里设置断点,进入中断后程序会停在usart中断那里,还有,通常情况下不使用发送中断,而是接收中断,对于多数据发送,可以等待发送完成标志 while(!(USART1->SR & 0X80));\/\/判断发送寄存器的数据是否到移位寄存器发送 USA...

STC单片机串口通信问题!
reg51.h里面是标准51的寄存器,是只有1个串口的,建议你去stc的官网把stc12系列的头文件下载下来进行包含,如果你的程序没错的话,应该就可以用了 欢迎追问

用单片机做串口通信时数据校验问题
中断接收数据不是这样的,不能用循环 if(RI) \/\/判断接收中断产生 { RI=0;Rbuf[Rnum]=SBUF;if(Rnum++ 〉=10)Rnum=0;} 以下语句在其他程序内判断,别再中断函数中 if (Rbuf[1]==0x12)

52单片机串口通信中sbuf的问题
串口中断程序:void ser() interrupt 4 { if(RI==1){ RI=0;for(m=0;m<4;m++)receive[m]=SBUF;} --- 这里,应该是有毛病的。每当发生接收中断,串口只是收到了一个字节而已;而你在中断函数里面,循环了四次,...应该只接收一次,然后修改指针,再设定个标志,通知主程序处理新数据。

51单片机串口通信,下面的何时发生中断?为什么要加一个flag=1?有什么...
是用来切换接收和发送,如果不用flag 的话单片机只能接收,程序里面单片机接收数据完成后。软件关闭接收中断,用flag = 1; 来切换到发送状态,单片机开发发送数据,数据发送结束后,关闭flag = 0;标志,进入接收状态,这时候单片机就不能发送数据,程序里面接收一个字节数据,然后再发送一个字节数据。

C8051F021 单片机串口通信问题
TI0上一次发送完,没有清0),而就算TI0是1,但你刚把数据送到SBUF0里,怎么可能为1呢?(TI0是发送“完成”中断标志),程序退出中断后,过一会(按4800波特率发完一个字节的时间)TI0才是1,然后你中断里又没有处理TI0为1的情况,所以程序会一直进中断,但不会有什么动作,除非是RI0为1....

单片机这个C语言程序对应的硬件应该是什么样子的?还有单片机sbuf怎么...
2. 关于单片机中的sbuf,它是串口通信的缓冲区。在通过串口发送数据时,你只需要将数据写入sbuf,发送操作会自动完成,这个过程可能会触发串口中断。3. 当通过串口接收数据时,你需要在串口中断标志位置位时(这可以通过中断方式或查询方式实现),然后读取sbuf中的数据即可。4. 尽管发送和接收数据都涉及...

单片机与电脑串口通信问题:单片机会不停的发送给电脑
如果是这样,程序执行过程是这样的:首先程序执行完这一段后,会发数据出来.然后程序一直执行,但后面没有程序,也就是程序空间全是FF,执行的指令是MOV R7, A.因为这条指令不会让程序跳转,所以程序一直执行到程序存储器结尾(如89C51为0FFFH,89C52为1FFFFH等),由于后面没有实际的程序空间,之后PC指针会...

单片机串口通信,实现接收到数据后,灯亮。
看你这程序编的,ha查询RI不是等于1,而是0只有当数据传送过来的时候,RI才会由1变为0,所以需要查询的状态是0,不是1当接收完数据后,再进行对RI的清零还是不多说了,上程序,若满意请记得采纳一下,谢谢!这是一个由串口助手发送十六进制码来控制单片机的8个LED亮灭的简单小程序\/***\/#include<...

在单片机中RI实际的意思是什么啊
单片机中RI实际的意思是串行口的接收中断标志。在单片机系统进行通信的时候,当CPU允许接收时,外部数据通过引脚RXD(3.0)串行输入,数据的最低位首先进入输入移位器,一帧接收完毕再并行送入缓冲器SBUF中,同时将接收中断标志RI置位,向CPU发出中断请求。CPU响应中断后,并用软件将RI位清除同时读走输入...

相似回答