51单片机串口中断的问题#include unsigned char count;//void serial() interrupt 4{if(RI==1){RI=0;if(SBUF==2)count=0;SBUF=count;ES=0;while(!TI);TI=0;ES=1;}}电路无任何问题,RXD用示波器测试有波形.但就是没有TXD口就是没有
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 19:39:01
51单片机串口中断的问题#include unsigned char count;//void serial() interrupt 4{if(RI==1){RI=0;if(SBUF==2)count=0;SBUF=count;ES=0;while(!TI);TI=0;ES=1;}}电路无任何问题,RXD用示波器测试有波形.但就是没有TXD口就是没有
51单片机串口中断的问题
#include
unsigned char count;
//
void serial() interrupt 4
{
if(RI==1)
{
RI=0;
if(SBUF==2)
count=0;
SBUF=count;
ES=0;
while(!TI);
TI=0;
ES=1;
}
}
电路无任何问题,RXD用示波器测试有波形.
但就是没有TXD口就是没有输出.
接收数据跟发送数据都是在中断函数内完成的 ,跟主程序没有关系
51单片机串口中断的问题#include unsigned char count;//void serial() interrupt 4{if(RI==1){RI=0;if(SBUF==2)count=0;SBUF=count;ES=0;while(!TI);TI=0;ES=1;}}电路无任何问题,RXD用示波器测试有波形.但就是没有TXD口就是没有
我粗看了一下,问题可能出在终端程序里.
void serial() interrupt 4
{
if(RI==1)
{
RI=0;
if(SBUF==2)
count=0;
SBUF=count;//问题在这里
ES=0;
while(!TI);
TI=0;
ES=1;
}
}
按照常理SBUF=count就会启动发送.但是你要看啊,你在串口的中断程序里写这句什么用都没有的.串口中断程序里面是自动屏蔽串口中断的.不然多集嵌套会混乱的.你要把SBUF放到中断程序外面才行.
你如果希望在已收到东西就发送的话可以在中断里设一个标志位abc..
void serial() interrupt 4
{
if(RI==1)
{
RI=0;
if(SBUF==2)
count=0;
if(TI==1)
{
TI=0;
}
abc=1;
}
main()
{
if (abc)
{
SBUF=count;
abc=0;
}