51单片机同时开启串口中断和定时器0中断的程序这样为什么错了

voidTime0_Init()//定时器0{TH0=0xfe;TL0=0x33;TR0=1;}voidmain()//程序入口{TMOD=0x21;//定时器0和定时器... void Time0_Init() //定时器0
{
TH0=0xfe;
TL0=0x33;
TR0=1;
}

void main() //程序入口
{
TMOD=0x21; //定时器0和定时器1开启
PCON = 0x80;
SCON = 0x50;
TH1 = 0xfA; //设置波特率 9600
TL1 = 0xfA;
TR1 = 1; //启动定时器1

ET1 =0;
ES = 1; //开串口中断
PS=1; //设计串行口中断优先级
EA = 1; //开总中断
IT0=0;
EX0=1;
Time0_Init(); //调用定时0函数
}
展开
 我来答
ghost4063
推荐于2017-11-28 · TA获得超过6522个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2780万
展开全部
定时器的初始化要放前面,为什么你打开外部中断的使能,却没打开定时器0的使能。
void Time0_Init() //定时器0
{
TH0=0xfe;
TL0=0x33;
TR0=1;
}

void main() //程序入口
{
TMOD=0x21; //定时器0和定时器1开启
PCON = 0x80;
SCON = 0x50;
TH1 = 0xfA; //设置波特率 9600
TL1 = 0xfA;
TR1 = 1; //启动定时器1
Time0_Init(); //调用定时0函数

ET1 =0; //这句多余了
ES = 1; //开串口中断
PS=1; //设计串行口中断优先级

ET0=1; //打开定时器中断

EA = 1; //开总中断
//IT0=0; //这句多余了
//EX0=1; //为什么要打开外部中断??

}
void SERIAL_HANDLE(void) interrupt 4 //串口中断函数,打开了中断就必须有
{....................
}
void T0_HANDLE(void) interrupt 1 //定时器0中断函数,打开了中断就必须有
{....................
}
Laker_Laker
2013-03-29
知道答主
回答量:14
采纳率:0%
帮助的人:4.5万
展开全部
头文件你添加进去了没有啊!如:reg51.h,具体我不知道你用的是哪家公司的单片机,没法给你测试一下!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ywhjp
2013-03-29 · TA获得超过1299个赞
知道小有建树答主
回答量:1002
采纳率:60%
帮助的人:436万
展开全部
定时器中断没打开, 在定时器初始化中加上下面这句
ET0 =1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友982eb4f
2013-03-29 · TA获得超过134个赞
知道答主
回答量:108
采纳率:0%
帮助的人:64万
展开全部
IT0=0,说明没有启动定时器0
追问
这个不是外部中断触发控制位吗 ?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式