在51单片机中 按一个键 程序跳到串口中断中 然后在按一下这个键 又跳回主程序 请问如何实现

作者&投稿:庞坚 (若有异议请与网页底部的电邮联系)
C52单片机按下一个键进入中断,再按这个键退出中断可以实现吗?~

可以的。

在中断程序中,检测按键,没有按,就反复检测。

再次按下后,再退出中断程序。

设置外部中断,再中断函数里设置一个flag,
若按键1触发中断则,flag=1:其它两个类似
再主函数里设置
while(1)
{
if(flag==1){
}
else if(flag==2){
}
else if(flag==3){
}
}

这是不行的,如果是外部中断的话,你可以讲键接到外部中断IO口,可以实现,定时器中断,可以接入到定时器IO口,用计数器模式,也可以实现,但串口中断却不可以的 。

能不能说说你要完成什么功能?非要这么实现我感觉是可以的,可是我想先知道你这是要干什么。

好吧,你可以把A键的外部中断设置为边沿触发(下降沿)(假设是那个外部中断的引脚是sbit ext0=P3^0),然后在中断函数里面写上
int flag=1;
while(flag)
{
if(1==ext0)
{
flag=0;
}
}

我写得这个没加消抖,不过意思应该明白了吧

没这么用过,你的意思还是有键按下后通过串口发送信息,那直接调用一段发送子程序就是了。
如果你非得用中断,试试给TI,RI置1

如果用串口的话,按了A键(打开串口),此时,传送一个数字,并判断是否符合,然后再按B,C键增加或减少数字,D键关闭串口.
如果不用串口的话,可以用A做一个位判断标志,按下时,可以进行B或C的加减,并进行数码管的显示,按D可以将A做的标志清0.,,,

貌似难实现,就算你能跳进中断,你总不能呆在里面不出来吧?中断执行完后会自己返回的。