|
本帖最后由 rjx 于 2017-5-28 14:05 编辑
请教:
原来在M16中用的TC0做溢出中断,每25MS溢出一次,工作正常,后将代码原封不动的用在M8上,好像就不对头了。是什么原因呢?
两者都是用的内部8M时钟。
TCNT0 = 61; //set count
TCCR0 = 0x05; //普通模式,1024分频
TIMSK=0X41; //允许TC0,TC2溢出中断。
interrupt [TIM0_OVF] void timer0_ovf_isr(void) //每25MS溢出一次
{
static uchar count,count1;
static uchar min,sec;
TCNT0 = 61;
count++;
if(count==5)
{ FLAG=1; }
else if(count==10)
{FLAG=0; count=0; }
count1++;
if(count1==40)
{ sec++; count1=0; } //计秒
if(sec==60)
{min++; sec=0; } //计分钟
if(min>=10)
{min=0;}
if((min>=0)&&(min<T1)) //T1是预先设定的1-9之间的一个数。
{flag1=1;}
else if(min>=T1)
{flag1=0;}
}
奇怪的是FLAG=1或FLAG=0可以实现,说明每25MS溢出中断是正常的。但flag1似乎不能实现了,原来在M16中是可以的。
望不吝指教。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|