
51单片机中断函数可以有返回值吗
51单片机中断函数可以有返回值吗?unsignedcharreceiveCharacter(void)interrupt4{tempChar=SBUF;TI=0;retu...
51单片机中断函数可以有返回值吗?
unsigned char receiveCharacter( void ) interrupt 4
{
tempChar = SBUF;
TI = 0;
return( tempChar );
}
非常感谢 shark_8309和 谢应宸 两人的回答,谢谢。 展开
unsigned char receiveCharacter( void ) interrupt 4
{
tempChar = SBUF;
TI = 0;
return( tempChar );
}
非常感谢 shark_8309和 谢应宸 两人的回答,谢谢。 展开
展开全部
中断函数不会返回
中断使用interrupt 关键字和终端编号0-4来实现:
返回值 函数名 interrupt n
n对应中断源的编号,中断编号告诉中断器中断程序的入口地址,它对应着IE寄存器中的使能位,即IE寄存器中的0位对应着外部中断0。
8051单片机的中断源以及终端编号如下:
中断编号 中断源 入口地址
0 外部中断0 0003H
1 定时器/计数器0 溢出 000BH
2 外部中断1 0013H
3 定时器/计数器1 溢出 001BH
4 串行口中断 0023H
在51系列单片机中,有的单片机多达32哥中断源,所以终端编号是0-31.
当正在执行一个特定的任务时,可能有更紧急的事情需要CPU处理,这就涉及到了中断优先级。高优先级中断可以中断正在处理的低优先级中断程序,因而最好给每种优先级程序分配不同的寄存器组。在C51中可使用using指定寄存器组,using后的变量为0-3的常整数,分别表示51单片机内的4哥寄存器组。中断函数的完整语法如下:
返回值 函数名([参数])[模式][重入]interrupt n[usingn]
unsigned int interruptcnt;
unsigned char second;
void timer0(void) interrupt 1 using 2
if(++interruptcnt==4000) // 计数到4000
second++; //另一个计数器
interruptcnt=0; //计数器清零
中断使用interrupt 关键字和终端编号0-4来实现:
返回值 函数名 interrupt n
n对应中断源的编号,中断编号告诉中断器中断程序的入口地址,它对应着IE寄存器中的使能位,即IE寄存器中的0位对应着外部中断0。
8051单片机的中断源以及终端编号如下:
中断编号 中断源 入口地址
0 外部中断0 0003H
1 定时器/计数器0 溢出 000BH
2 外部中断1 0013H
3 定时器/计数器1 溢出 001BH
4 串行口中断 0023H
在51系列单片机中,有的单片机多达32哥中断源,所以终端编号是0-31.
当正在执行一个特定的任务时,可能有更紧急的事情需要CPU处理,这就涉及到了中断优先级。高优先级中断可以中断正在处理的低优先级中断程序,因而最好给每种优先级程序分配不同的寄存器组。在C51中可使用using指定寄存器组,using后的变量为0-3的常整数,分别表示51单片机内的4哥寄存器组。中断函数的完整语法如下:
返回值 函数名([参数])[模式][重入]interrupt n[usingn]
unsigned int interruptcnt;
unsigned char second;
void timer0(void) interrupt 1 using 2
if(++interruptcnt==4000) // 计数到4000
second++; //另一个计数器
interruptcnt=0; //计数器清零

2023-06-12 广告
单片机原理由运算器、控制器、存储器、输入输出设备构成,单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程;单片机的应用:节能控制;智能语音设备;报警控制;医疗设备。
单片机原理及应用 本书详细地介绍了MC...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
这样恐怕编译不通过吧。
你想想,中断函数是硬件调用的,你想返回什么给硬件?
如果你想返回什么信息给主程序的话就只能使用全局变量了。暂时我都没想到其他好的方法。
通常像你这种情况我是使用队列表的,由中断函数把读到的数据写入队列,然后在主程序读数的时候就可以逐个字节读出了。当然,51就不要用链表做队列表了。通过指针求余就好了。
你想想,中断函数是硬件调用的,你想返回什么给硬件?
如果你想返回什么信息给主程序的话就只能使用全局变量了。暂时我都没想到其他好的方法。
通常像你这种情况我是使用队列表的,由中断函数把读到的数据写入队列,然后在主程序读数的时候就可以逐个字节读出了。当然,51就不要用链表做队列表了。通过指针求余就好了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
中断函数不会返回
中断函数是一个特殊的函数,没有参数,也没有返回值;但是程序中允不允许使用return呢?答案是允许的,不过只能用"return;",不能用"return(z);";用在一些需要快速返回的地方,对应的汇编会有多个ret语句,相对效率会高一些。
中断函数是一个特殊的函数,没有参数,也没有返回值;但是程序中允不允许使用return呢?答案是允许的,不过只能用"return;",不能用"return(z);";用在一些需要快速返回的地方,对应的汇编会有多个ret语句,相对效率会高一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把tempchar定义为一个全局变量不就行了,中断函数不能有返回值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询