当前位置: 代码迷 >> 单片机 >> 关于51单片机中断的有关问题。求解,有关问题描述如下:》》》》
  详细解决方案

关于51单片机中断的有关问题。求解,有关问题描述如下:》》》》

热度:91   发布时间:2016-04-28 14:58:00.0
关于51单片机中断的问题。求解,问题描述如下:》》》》
我想要在外部中断0程序中使用串口中断,请问如何写代码????
我的代码可以吗??????



int main(void)
{
while(1);
return 0;
}


//外部中断0
void INT0_Interrput(void) interrupt 0
{

EX0 = 0;  //关中断
Init_Display3();
       Delay1ms(1000);
Usart1_SendString("AT+CLIP=1\r\n");
Delay1ms(1000);
Receive_Count = 0;                                                                                                            
memset( Usart_Receive, 0x00, sizeof(Usart_Receive) );
Init_Display4();
Init_Display3();

while(1)
{
Beep();
Gsm_CallInCheck();
}
EX0 = 1;//开中断
}

//串口中断
void Usart1_Interrupt(void) interrupt 4
{
if (RI)
{
RI = 0;         
Usart_Receive[Receive_Count] = SBUF;     
Receive_Count++;
if (Receive_Count >= BUF_SIZE)
{
Receive_Count = 0;
}
}
}



------解决方案--------------------
不能这样使用 可以在外部中断设置一个变量来控制串口操作
------解决方案--------------------
不能这样做,建议加标志位来控制,还有,不要老想着在中断里面用延时,1ms也不行
------解决方案--------------------
把串口中断优先级设置成高于外部中断 就可以形成中断嵌套了吧

自己没写过 但是如果我第一次写我会这么尝试……
------解决方案--------------------
中断里面不能干太多的活 建议象楼上几位的那样在中断里设置标志 在主程序里做实际的事
  相关解决方案