请教:51+Proteus 仿真结果不正确

2020-02-02 09:17发布

我用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;   
}



谢谢各位!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
netawater
1楼-- · 2020-02-02 10:30
50ms的灯当然闪得快吧。
心飞扬
2楼-- · 2020-02-02 12:29
楼上正解
amen
3楼-- · 2020-02-02 17:13
netawater 发表于 2012-11-21 21:20
50ms的灯当然闪得快吧。

呵呵  实际情况是1S的闪的比较快
netawater
4楼-- · 2020-02-02 22:02
 精彩回答 2  元偷偷看……
amen
5楼-- · 2020-02-02 23:38
我弄了个视频  大家帮忙看下  。应该是下面的灯是1S定时到,但是看起来,下面的反而闪的快。
amen
6楼-- · 2020-02-03 01:33
netawater 发表于 2012-11-22 10:49
咳,正文表述有问题。
把驱动LED电路去掉,proteus自己会显示IO口高低电平,再看看行不行。 ...

你好 我试了下,去掉驱动,还是1S的50MS的快,应该是程序有问题

一周热门 更多>