单片机中断的函数命名是随意的吗?

中断函数结构:返回值函数名(参数)interruptn[usingm]我的串口中断函数怎么没有interruptn[usingm]也可以成功啊程序如下#include<A... 中断函数结构:返回值 函数名(参数) interrupt n [using m]
我的串口中断函数怎么没有 interrupt n [using m] 也可以成功啊
程序如下
#include<AT89X52.h>//包含单片机寄存器的头文件
/*****************************************************
函数功能:接收一个字节数据
***************************************************/
unsigned char Receive(void)
{
unsigned char dat;
while(RI==0)// 只要接收中断标志位 RI 没有被置“1”
;//等待,直至接收完毕(RI=1)
RI=0;//为了接收下一帧数据,需将 RI 清 0
dat=SBUF;//将接收缓冲器中的数据存于 dat
return dat;
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
TMOD=0x20;//定时器 T1 工作于方式 2
SCON=0x50;//SCON=01010000B,串口工作方式 1,允许接收(REN=1)
PCON=0x00;//PCON=00000000B,波特率 9600
TH1=0xfd;//根据规定给定时器 T1 赋初值
TL1=0xfd;//根据规定给定时器 T1 赋初值
TR1=1;//启动定时器 T1
REN=1;//允许接收
while(1)
{
P1 = Receive();//将接收到的数据送 P1 口显示
}
}
很明显 unsigned char Receive(void)这个函数没按中断格式写 但是编译无错无警告 运行正常
展开
 我来答
jinfahua
推荐于2018-04-21 · TA获得超过590个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:232万
展开全部
C51的中断函数名子是任意的,后面必须加 interrupt n,你的 Receive(void) 函数是在main函数中查询的,当然运行正常。
要改为中断方式的话,改成 void Receive(void) interrupt 4 , 把其中的 return dat 改成 P1 = dat;
在main的while(1)前面加上 EA = 1; ES = 1;再把 P1 = Receive(); 删除掉就行了。
追问
主函数里哪条语句是查询啊?不理解,指令是由哪条语句触发从主函数跳转到Receive(void) 函数的?这个问题困惑很久了,麻烦您给我解答解答吧,非常谢谢!!!
追答
你的main函数中有一个循环语句:
while(1)
{
P1 = Receive();//将接收到的数据送 P1 口显示
}
这是一个死循环,反复调用函数 Receive(),并把返回值送P1口。你的开发板P1口应该有8个LED,可以看到数据的变化。
在函数Receive()中,判断串行接收标志位RI,一旦是1,就去读串行通信缓冲寄存器SBUF到变量dat中,再把值返回给调用它的程序。
看来你对51的硬件及C语言还不熟,努力吧兄弟,祝你成功。
yuquanhai258
2012-03-02 · 超过20用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:38.2万
展开全部
中断的函数名师自己定义的,但是必须在后面加入关键字“interrupt x”,其中“x”是中断向量的编号(中断向量号对应的中断查看任何一本讲解51的书),主函数中不需要写什么语句来跳转到中断函数,因为你定义好中断向量号时,就是定义好了中断的入口地址,因为单片机响应中断是在执行程序的过程中,每个周期都会扫描中断标志位,来判断执行什么中断,比如定时器的定时到了,那么硬件就会自动将对应定时中断标志置为1,此时CPU扫描到这个中断标志为1时,就会自动跳到你定义好的中断函数执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a105865094
2012-03-04 · TA获得超过240个赞
知道小有建树答主
回答量:571
采纳率:100%
帮助的人:248万
展开全部
51明确规定了中断函数是不能带返回值,因此这个接收函数不可能是中断函数,再接合上面两位说的再试试写程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式