如何在一个程序里放入两个定时器中断,关于单片机52编程方面的,两个定时器为何只有一个起作用???

voidtimer1_for_38k()//30ms@11.0592MHz//这是第一个定时器函数,30ms触发一次中断{TMOD&=0x0F;//设置定时器模式TMOD... void timer1_for_38k()//30ms@11.0592MHz //这是第一个定时器函数,30ms触发一次中断
{
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式 定时器3工作在方式1
TL0 = 0x00; //设置定时初值
TH0 = 0x94; //设置定时初值
TF1 = 0; //清除TF1标志
ET0=1;//开定时器1中断
EA=1;//开总中断
/*定时器的启动,将放在数据数据初始化的末尾*/
}

void ck_init() //这是第二个定时器函数,用于串口通信的
{
REN=1; //打开允许串口数据接收位
SM1=1; //选择工作方式1 SM0=0(默认) SM1=1
TR1=1; //打开定时器1
TMOD&=0x0f;
TMOD|=0x01;
TH1=0xfd; //设定波特率为9800,给定时器1高八位装永久值253,当第八位溢出后由硬件自动赋值给低八位
TL1=0xfd; //给定时器第八位赋初值
EA=1; //打开总中断
ES=1; //打开串口中断
}
为什么只有第二个函数起作用,把这两个定时器T0,T1换一下,就只有第一个会工作。哪出错了???求大神指点!!!!
展开
 我来答
wjfhsym
2014-08-08 · TA获得超过946个赞
知道小有建树答主
回答量:475
采纳率:85%
帮助的人:305万
展开全部
具体型号是什么,首先第二函数中的定时器是用来产生波特率的,它和上面的定时器中断不会冲突,同时你要弄清楚的是,所用串口波特率发生器取决于哪个定时器,这个弄错当然无法工作。
更多追问追答
追问
STC89C52,所用波特率发生器使用的上面的T1定时器,第一个中断函数interrupt 3,而串口中断函数使用的是interrupt 4。这应该是对的。要不要我把对应的两个中断函数给你粘上来?
追答
串口中断和定时器中断可不相同的,两个中断没影响。你粘上看看吧。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式