c51单片机无法进入串口中断

这是我写的源程序:

#include <reg51.H>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar flag,temp;
unsigned char DUAN[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
void init_serial_T1()
{
TMOD=0X20;
TH1=0XF3;
TL1=0XF3;
TR1=1;
SCON=0X50;
PCON=0X80;
ES=1;
EA=1;
// TI=0;
// RI=0;
}
void delay(unsigned char z)
{
unsigned char i;
while(z--)
{
for(i=0;i<125;i++);
}
}
void main()
{
init_serial_T1();
while(1)
{
if(flag==1)
{
ES=0;
RI=0;
P0=temp;
delay(20);
while(!TI);
TI=0;
SBUF=temp;
ES=1;
flag=0;
}
}
}
void serial() interrupt 4
{
RI=0;
temp=SBUF;
flag=1;
}

IE = 0x90;

把里面的上面那句去掉,就行了。把ES=1,再来一个IE = 0x90;实际上ES=0了追问

还是不行呢?你有调好的源程序吗?

温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机把串口唤醒 不会进入中断是什么问题?
1.串口通信设置是否正确(SCON,EA,波特率,定时器初值,重装值,启动定时器)2.中断函数(如果汇编的话,串口中断入口地址应指定为23h),如果C的话,加上中断函数的关键字和串口中断对应编号 3.进入串口接收中断后,别忘记将RI=0

51单片机串口中断发送程序进不去?
数组是13个字符,不是15个,在主程序中先发第一个字符,发送完才能进中断继续发,中断发12个。中断程序改写如下:

51单片机,程序下载失败,显示:打开串口失败! Chinese:串口已被其它程序打...
1、首先在单片机编程软件中,声明头文件,并定义数据类型。2、先写好主函数,如下图所示。3、然后设置波特率函数(可用SPI生成),如下图所示。4、接着设置串口中断函数,在中断里对“TI”“RI”清零,如下图所示。5、然后编写发送字符串程序,最后在主函数直接调用即可。

51单片机串口通信时, 外部中断无法执行
串口通信是不是也是采用中断方式?如果与外部中断为同一优先经中断的话,则当51单片机串口通信时(串口中断时),外部中断是无法执行的。如果想实现外部中断优先,需要改变它们的优先级别,串口低优先级PS=0,外部中断高优先级PX0=1,PX1=1

华大单片机串口不能进接收中断不能
华大单片机串口不能进接收中断方法如下。1、检查一下串口调试助手的串口参数是不是和程序的一致。2、再看看串口中断服务函数有没有清除中断标志。

C51单片机串口通信中断的问题
对于51而言,每帧产生一次中断。接收4个字节是分4次中断接收完成的。51的UART模块从串行移位寄存器接收完成后是直接放入接收缓冲的,而且接收缓冲只有一个单元。

为什么我的51单片机程序无法进入接收中断,而是不断进入发送中断
void Usart() interrupt 4 \/\/这里有问题 { u8 a;if(RI){ a = SBUF;delay1ms();} if(TI){ TI = 0;} }

win11单片机串口打开失败
首先,烧录的时候要确保51单片机为开机状态,51需要转换为机器语言烧录,如果你那块有下载器可以试一试这种原始的方法,不行的话再检查串口和所用串口是否一致,如果一致的话,将软件重新启动试一试,如果仍然不行,将这块插到别的电脑上,或者是用别的单片机插到你电脑上。

大家说说单片机串口中断是怎么回事?
单片机串口中断,例如用串口接收GPS模块的数据(这一般都是串口相连的),单片机可能需要一直的工作,不管是干什么,但是你最需要的是接收GPS数据并进行处理,于是当接收到GPS信号时,就会产生串口中断,然后进入中断接收GPS数据,存储在串口寄存器当中,当接收完之后关掉中断,单片机继续其他工作,当又有GPS数据...

51单片机串口通信中断的问题
你不要使用查询功能,就一直使用中断,具体程序查看下面:include<reg52.h> define uint unsigned int define uchar unsigned char void delay(int z);char a,flag;void main(){ EA=1;TMOD=0x20;TH1=0xfd;TL1=0xfd;ET1=0;TR1=1;ES=1;REN=1;SM0=0;SM1=1;while(1);} void ser_...

相似回答