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函数
} 展开
{
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函数
} 展开
4个回答
展开全部
定时器的初始化要放前面,为什么你打开外部中断的使能,却没打开定时器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中断函数,打开了中断就必须有
{....................
}
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中断函数,打开了中断就必须有
{....................
}
展开全部
头文件你添加进去了没有啊!如:reg51.h,具体我不知道你用的是哪家公司的单片机,没法给你测试一下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定时器中断没打开, 在定时器初始化中加上下面这句
ET0 =1;
ET0 =1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
IT0=0,说明没有启动定时器0
追问
这个不是外部中断触发控制位吗 ?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询