新手求助为何加了中断以后整个程序变得非常卡顿。
时间:10-02
整理:3721RD
点击:
如题。做毕业设计中。51单片机和TC35 GSM模块的。
目前遇到的问题是 当写了串口触发的中断函数以后整个程序变得非常卡,主要体现在proteus的仿真上,按键和LCD1602的显示和识别都显得非常卡顿滞后,
部分程序如下~
/////////////////////////////////////////
Ini_UART(void)//串口初始化、定时器初始化
{
SCON = 0x50 ;
TMOD |= 0x20 ;
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFA ; //Baud:19200 fosc="11".0592MHz
TL1=0xFA;
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
TI=1;
ES=1;
}
////////////////////////////////////////////
void main()
{
num=0;
Ini_UART(); //串口神马的初始化
while(1)
{
if(KEY1==0)
{delay(10);
if(KEY1==0)
{Print_Str(baojin); //串口输出数据
delay(100);
clearBuff(); }
}
if(KEY2==0)
{delay(10);
if(KEY2==0)
{Print_Str(qiujiu); //串口输出数据
delay(100);
clearBuff();}
}
if(KEY3==0)
{delay(10);
if(KEY3==0)
{
delay(10);
key();} //4*4矩阵键盘程序
}
}
}
void ser() interrupt 4
{
if(RI==1)
{ ff[j]=SBUF;
RI=0;
j++;
}
}
困扰一整天
目前遇到的问题是 当写了串口触发的中断函数以后整个程序变得非常卡,主要体现在proteus的仿真上,按键和LCD1602的显示和识别都显得非常卡顿滞后,
部分程序如下~
/////////////////////////////////////////
Ini_UART(void)//串口初始化、定时器初始化
{
SCON = 0x50 ;
TMOD |= 0x20 ;
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFA ; //Baud:19200 fosc="11".0592MHz
TL1=0xFA;
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
TI=1;
ES=1;
}
////////////////////////////////////////////
void main()
{
num=0;
Ini_UART(); //串口神马的初始化
while(1)
{
if(KEY1==0)
{delay(10);
if(KEY1==0)
{Print_Str(baojin); //串口输出数据
delay(100);
clearBuff(); }
}
if(KEY2==0)
{delay(10);
if(KEY2==0)
{Print_Str(qiujiu); //串口输出数据
delay(100);
clearBuff();}
}
if(KEY3==0)
{delay(10);
if(KEY3==0)
{
delay(10);
key();} //4*4矩阵键盘程序
}
}
}
void ser() interrupt 4
{
if(RI==1)
{ ff[j]=SBUF;
RI=0;
j++;
}
}
困扰一整天
这个中断主要是用来读串口数据的,程序中涉及到很多串口的发送与接收,但是在其他没有涉及到串口的操作中,反应也特卡。中断函数删了以后特流畅。包括串口发送
“体现在proteus的仿真上”,说明软件问题呗。
还没烧到硬件试过,,,
我是来学习的
我是来学习的。TOO