80c51单片机定时器灯闪烁时间不对(proteus模拟)

#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit led = P1^0;
u8 timer;
void main (void)
{

TMOD = 0X01;
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
EA = 1;
ET0 = 1;
TR0=1;
while (1)
{
;

}

}
void timer0_service (void) interrupt 1
{

TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;


timer ++;
if (timer == 80);
{
 timer = 0;
led= ~led;

}

}
为什么总是50ms闪烁,怎么改timer值都是50ms。4s根本模拟不出来


if (timer == 80);

把if 后面的分号去掉!!

proteus内部时间流速和显示不一样,建议花20块自己做一个最小系统板(应该不到20),对学习很有帮助。

proteus中,单片机运行的时间是下方状态条中会显示的,跟实际时间不一样的,会慢很多。