51单片机串口中断哪里有错?为什么上电就会就去中断服务程序?

#include<reg52.h>unsignedchara,k;voidinit(){TMOD=0x20;//设定定时器1的工作方式为方式2TH1=0xfd;//T1定... #include<reg52.h>
unsigned char a,k;

void init()
{
TMOD=0x20; //设定定时器1的工作方式为方式2
TH1=0xfd; //T1定时器装初值
TL1=0xfd; //T1定时器装初值
TR1=1; //打开定时器1

REN=1; //允许串行接收
SM0=0; //选择串口工作方式为方式1
SM1=1;
EA=1; //开总中断
ES=1; //开串口中断;
RI=0;
k=1;
}
void main()
{
init();
while(1);
}

void ser() interrupt 4
{
RI=0;
P0=0x01;
switch(k)
{
case 1:
{
k++;
P0=0xaa;//P0口 的灯就会隔一个亮一个
return ;
}
case 2:
{
k++;
P1=0xaa;
return ;
}
case 3:
{
P0=0xaa;
k=1;
}

}
}

上电后P0口的灯就会亮。
展开
 我来答
氢探新能源
2011-11-26 · TA获得超过125个赞
知道答主
回答量:85
采纳率:100%
帮助的人:29.4万
展开全部
很简单的问题吗~~
并不是直接进中断,是因为定时时间太短,导致你没反应过来就已经近中断了,你可以在主程序中
设定 P0=0xaa然后演示一段时间,就能看出来了:
原因如下:
TH1=0xfd; //T1定时器装初值
TL1=0xfd; //T1定时器装初值
定时时间太短~~可长一点
追问
时间短能进入串口中断吗?    串口中断只有串口接收到数据才可以进入的    TH1 TL1都是对波特率的设置
追答
请清楚buff
葡萄干_红蛋
2011-11-26
知道答主
回答量:74
采纳率:0%
帮助的人:36.5万
展开全部
你的测试程序似乎不够好。第一P0口的初始状态是什么样儿?第二在主程序里并未改变P0口的状态,你如何知道是进入中断呢。就只因为P0口的灯吗?建议你先写通串口发送程序。如果串口可以正常发送你想要的数据,这样证明波特率和串口相关寄存器之类的设置正确。如果发送都发送不了,就不要谈中断接收了。中断接收可以看做两个东西,一个是中断,一个是接收。如果发送正常。那么就不用用P0口的状态来看你程序是否正确了。直接用串口发送相应错误的状态字节就OK了。比如初始化结束的时候串口发送0x55.。进中断发送一个0xaa等等。这样你就知道你的程序跑到哪里了。希望我的建议你能采纳。
追问
串口是可以正常发送和接收的,数据也正确。关键是现在我不明白的就是:如果我让case 1里面的P0=0x01;case 2的P0=0x02;case 3的P0=0x03;我上电后P0会亮0x01,接收到第一个数据的时候就会进入case 2,第二个数据就会进入case 3,这样循环下去。
谢谢啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuquanhai258
2011-11-26 · 超过20用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:38.2万
展开全部
与case配套使用的是break来推出内层循环体,而不是函数返回return
将SM0 = 0;去掉就能解决问题,或是将REN = 1;放在SM1 =1;后面也能解决问题
追问
我就是想接受一次数据就跳出中断服务程序   我把REN = 1;放在SM1 =1;后面把问题解决了    把SM0 = 0;去掉不行。   谢谢你啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzlvmy
2011-11-26 · TA获得超过718个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:354万
展开全部
P0口的灯是8个还是1个,如果是1个,是哪一位控制?是1亮,还是0亮?
你的串口是和电脑连接吗,看不出来你的硬件环境。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
劫尾3376
2011-11-26 · 超过13用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:43.3万
展开全部
灯亮证明不了就是进中断,最简单的测试方法就是你在中断程序中,不同的case处让不同的灯亮,再看看是不是上电的灯亮和你程序中的灯一样!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式