我用51定时器作个1s定时 用的是50MS*20 放了2个LED 进入中断有一个,1S到有一个 ,都是时间到闪烁。可是我仿真结果,50MS定时到的比1S到的灯闪的还快。程序如下:
sbit led=P2^0;
sbit led1=P2^4;
void T0_Init () //定时器0初始化
{
TMOD = 0x01;
TH0 = (65536-50000) /256;
TL0 = (65536-50000) %256;
EA = 1;
ET0 = 1;
}
void Time0_Int() interrupt 1 //中断处理函数:定时器中断0
{ static unsigned int c;
EA = 0;
led=~led;
TH0 = (65536-50000) /256;
TL0 = (65536-50000) %256;
c++;
if(c==20)
{ c=0;
led1=~led1;
//s++;
}
EA = 1;
}
谢谢各位!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
比较奇怪的是,我用示波器测波形 P2.4的周期的确是P2.0的20倍,但不知道为什么P2.4的波形跑的非常快
TL0 = (65536-46080) %256;
这不对的么...顺便,仿真的效果只能定性不能定量的,说不定只是显示的问题.
跑的快的问题,用示波器的one-shot模式可以解决.
无符号16为整型最大值该是65535吧。
一周热门 更多>