51单片机定时器0和定时器1使用冲突
我目前做毕业设计,需要用到ADC0804芯片采集信号,这个过程不必细说,我说一下我这里出现的问题,因为AD采完信号之后就通过串口发给电脑,串口比特率设置用的是T1定时器溢...
我目前做毕业设计,需要用到ADC0804芯片采集信号,这个过程不必细说,我说一下我这里出现的问题, 因为AD采完信号之后就通过串口发给电脑,串口比特率设置用的是T1定时器溢出率,然后使用AD芯片,因为AD芯片的控制过程比较复杂,需要脉冲信号之间有延时,所以要用的定时器中断,这个时候我就用的是T0定时器,然后程序写差不多了,调试的时候发现定时器0中断里的变量不动,定时器0中断貌似是不管用了,但我把设置串口比特率的T1关掉,变量就会走了,不明白51上T1和T0为什么会冲突,望高手帮忙解决一下
void timer0() interrupt 1 //定时器0中断
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
flag++;
if(flag==28)
{
flag=0;
}
}
void chuankou()
{
TH1=0xfd; //定时器1高位赋初值
TL1=0xfd; //定时器1低位赋初值
TR1=1; //开定时器1
REN=1; //开串口控制
SM0=0;
SM1=1; //设置串口工作方式1
}
while(1)
{
if(flag==2)
{
WR=1;
ser_light=0;
}
if(flag==4)
{
WR=0;
}
if(flag==6)
{
WR=1;
}
if(flag==20)
{
P2=0xff;
RD=1;
}
if(flag==22)
{
RD=0;
}
if(flag==24)
{
SBUF=P2;
}
if(flag==26)
{
RD=1;
ser_light=1;
}
}
这是程序的主体部分 初学者 呵 展开
void timer0() interrupt 1 //定时器0中断
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
flag++;
if(flag==28)
{
flag=0;
}
}
void chuankou()
{
TH1=0xfd; //定时器1高位赋初值
TL1=0xfd; //定时器1低位赋初值
TR1=1; //开定时器1
REN=1; //开串口控制
SM0=0;
SM1=1; //设置串口工作方式1
}
while(1)
{
if(flag==2)
{
WR=1;
ser_light=0;
}
if(flag==4)
{
WR=0;
}
if(flag==6)
{
WR=1;
}
if(flag==20)
{
P2=0xff;
RD=1;
}
if(flag==22)
{
RD=0;
}
if(flag==24)
{
SBUF=P2;
}
if(flag==26)
{
RD=1;
ser_light=1;
}
}
这是程序的主体部分 初学者 呵 展开
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
1: TMOD初始化是不是有冲突?
2:T1是不是也开了中断?不能开中断。
3:t0和t1是不是中断冲突?优先级?
建议:
ADC0804采集用延时,不用中断定时方式。
2:T1是不是也开了中断?不能开中断。
3:t0和t1是不是中断冲突?优先级?
建议:
ADC0804采集用延时,不用中断定时方式。
更多追问追答
追问
TMOD 初始化应该是没问题
TMOD=0x21; //设置定时器0工作方式为1 定时器1的工作方式为2
TH0=(65536-5000)/256; //定时器0高8位赋初值50000
TL0=(65536-5000)%256; //定时器0低8位赋初值50000
T1中断没开 这个我知道
我知道采用延时不一定要用中断 只是我想用中断的方式 对以后的单片机学习比较好一点 呵
追答
一般不会有冲突的,为什么开串口接收?
发个完整程序看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
估计是串口初始化时候TMOD装值和定时中断时TMOD装值冲突。。
更多追问追答
追问
TMOD 我是一次性装值的 没冲突吧~~~~
追答
“调试的时候发现定时器0中断里的变量不动,定时器0中断貌似是不管用了,但我把设置串口比特率的T1关掉,变量就会走了”。说明你的程序在串行中断开的情况下没有进入定时中断,会不会是IP设置使中断冲突?还有就是也许不经意间变量定义嵌套不合适使然。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询