单片机简单题

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:15:46
#include<reg51.h>
#define SYSCLK 12000000
#define c_tmr0 -(SYSCLK/12)*20/1000
void ini_tmr0_c (void)
void main(void)
{
TMOD|=1;
ini_tmr0_c();
ET0=1;
EA=1;
while(1);
}
void tmr0_ISR(void) interrupt 1
{
ini_tmr0_c();
}
void ini_tmr0_c(void)
{
TR0=0;
TL0=c_tmr0;
TH0=c_tmr0>>8;
TR0=1;
}
这个程序是要20ms定时吗?
那要是实现250毫秒定时可以用这个吗?怎么改?

简单一点讲呢,改:#define c_tmr0 -(SYSCLK/12)*20/1000 为#define c_tmr0 -(SYSCLK/12)*250/1000.但是我没有算过250ms是否超过time counter的周期。超过的话就要改一些register设置或者时钟频率。