0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

单片机

用单片机写个程序出现异常

我测试1S延时程序没有问题,但是我想做成1min延时程序确异常,请帮忙查看下我的程序哪里出错呢?谢谢!

现象就是灯一直不亮

#include

sbit LED=P1^0;

void main()

{

  unsigned char i=0;// 一分钟程序我已经改成了unsigned int i=0;

  TMOD=0x01;

  TH0=0xB8;

  TL0=0x00;

  TR0=1;

  while(1)

  {

    if(TF0==1)

{

  TF0=0;

  TL0=0x00;

  TH0=0xb8;// 这样设置是0.02s

  i++;

  if(i>=50)  //一分钟就是if(i>=3000)

  {

   i=0;

   LED=~LED;

  }

}

  }

}

提问者:60user16 地点:- 浏览次数:4067 提问时间:10-22 10:22
我有更好的答案
提 交
6条回答
60user63 08-23 09:20 回答数: 被采纳数:
TF0==1处理要在中断里进行
wang2222222 08-14 02:12 回答数:0 被采纳数:0
:(  定时器中断认识不够,好好看看。
dpqw 08-23 13:35 回答数: 被采纳数:


程序没有错,是1mS延时,是定时器查询方式的程序,没有任何问题,问题出在1mS灯亮,1mS灯灭,你用什么方法检验灯亮了没有
,用眼睛吗,你能分清500khz的亮和灭吗?
实际上灯已经亮灭了,你检验不出来而已。
你用手捂住灯看,亮度小而已。你把i的值由3000逐渐改小,看灯的闪亮,i值小到一定时候,闪亮速度太快,人的眼睛就分不清亮灭了。
unsigned int i ;不用改类型,逐渐由3000,2000,1000,800,600,500,200,100,50,你试试。
硕达科讯 08-18 05:32 回答数: 被采纳数:
你加上一句LED=0;在前面,应该可以了吧,你的LED是1S中闪烁一次,还是多少时间? 会不会时间太短了,看不出来
lzongpuliu 08-15 06:12 回答数: 被采纳数:
我测试5S也没有问题呀
7346634623q 08-23 02:41 回答数: 被采纳数:
这个程序是OK的,是我烧录程序烧错了呀,今天重新烧了下就OK ,呵呵,不好意思打扰了呀
撰写答案
提 交
1 / 3
1 / 3
相关单片机
具有音调控制的单片机立体声前置放大器
用于单片机与电子装置中的开关电源
单片机软硬件复位的条件都有啥
电动机的单片机控制
单片机应用系统开发实例导航