STC12单片机定时器中断12分频改为1分频时的问题
时间:10-02
整理:3721RD
点击:
写了一个定时器0中断程序,知道把单片机12分频改为1分频时,定时器进入中断的时间快12倍,但是不清楚中断服务程序的指令是否也可以快12被。我测了许久都不能有个结论,还请各位大神帮帮忙呀!如果可以快12倍,那么还要加上什么设置吗,就目前的设置好像是不能快12倍的
小弟在此拜谢!
void T0_Init() //定时/器中断0初始化
{
TMOD|=0X01; //工作模式1
AUXR=0X80; //12分频变为1分频
TH0=0xff;
TL0=tl0;
EA=1; //开总 中断
ET0=1; //开定时器0中断
TR0=1;
}
//******************************************************************************
//定时器0服务程序————波形选择
//******************************************************************************
void T0_timer() interrupt 1 //定时器中断0
{
TH0 = 0xff;
TL0 = tl0;
if(num_bx == 0)
{
Sine();
}
else if(num_bx == 1)
{
Square_wave();
}
else if(num_bx == 2)
{
Incremental_ramp();
}
else if(num_bx == 3)
{
Descending_ramp();
}
else if(num_bx == 4)
{
Triangl_wave();
}
void main ()
{
T0_Init();
while (1)
{
}
}
其中无关程序并没有列出!
小弟在此拜谢!
void T0_Init() //定时/器中断0初始化
{
TMOD|=0X01; //工作模式1
AUXR=0X80; //12分频变为1分频
TH0=0xff;
TL0=tl0;
EA=1; //开总 中断
ET0=1; //开定时器0中断
TR0=1;
}
//******************************************************************************
//定时器0服务程序————波形选择
//******************************************************************************
void T0_timer() interrupt 1 //定时器中断0
{
TH0 = 0xff;
TL0 = tl0;
if(num_bx == 0)
{
Sine();
}
else if(num_bx == 1)
{
Square_wave();
}
else if(num_bx == 2)
{
Incremental_ramp();
}
else if(num_bx == 3)
{
Descending_ramp();
}
else if(num_bx == 4)
{
Triangl_wave();
}
void main ()
{
T0_Init();
while (1)
{
}
}
其中无关程序并没有列出!
中断里面程序的指令不会加快12倍,不过相对于传统12T51单片机速度还是要快很多的。定时器的加快是”计数器“时钟源分频不分频决定的,跟你指令的执行快慢没关系。附上2张STC的PDF文档相关的截图你参考下。以上观点仅供参考~


经过测试似乎指令确实是不会加快,加快的只是进入中断的时间而已。
没看明白
指令确实不会改变速度。进中断也不能说加快了,只能说可以更快的进行计数。如果用来采集信号的话,可以采集更高频率的信号。
小编问题有没有解决?
