求教单片机高手。stc89c51单片机的2个定时器同时用或者定时器与中断同时用时怎么编程序。

如题所述

你好,一个定时器一个中断如果使用c语言的话(本例采用0为外部中断INT0,1为内部定时溢出中断)
在main函数中需要有
EA=1; //开总中断
EX0=1; //允许INT0中断
ET1=1;//允许定时器1中断
IT0=1;//INT0下降沿产生中断
TMOD=0x01;
TH1=(65536-???)/256; //???可取随意值
TL1=(65536-???)%256;
TR1=1;//开启定时器1

/*如果采用查询法则加入下句等待外部中断或定时中断产生*/
while(1);

在main函数外,加入中断子程序
void int0 (void) interrupt 0 //外部中断0中断子程序
{子程序}
void int1 (void) interrupt 3 //定时器1溢出中断
{子程序}

大体的思路就是这样。其实我也是新手,错误在所难免,但是照着这个思路做应该没问题,如果还是不懂可以百度hi我 ,我们交流一下互相学习
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-23
中断都打开,根据需要设置优先级就可以了追问

优先级是怎样起作用的?
怎样加优先级?
能不能来一段程序举例说明下,多谢。

追答

默认中断优先级 外部中断0>定时器T0>外部中断1>定时器T1>串行口中断
如果需要改变优先级,则更改IP寄存器
IP {— — — PS PT1 PX1 PT0 PX0} 复位值为00H
PS 为串行口中断优先控制位,为1则为高优先级
PT1 为定时器1中断优先控制位,为1则为高优先级
PX1 为外部中断1中断优先控制位,为1则为高优先级
PT0 为定时器0中断优先控制位,为1则为高优先级
PX0 为外部中断0中断优先控制位,为1则为高优先级
都为高优先级中断或低级中断则按默认中断优先级

本回答被提问者采纳
第2个回答  2011-06-22
把相应的中断都打开 比如 EA TR0,TR1,TX0等等