久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6959|回復: 5
打印 上一主題 下一主題
收起左側

[求助][討論]1秒內LED閃10次

[復制鏈接]
跳轉到指定樓層
樓主
ID:25279 發表于 2010-10-12 09:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

編了一個1秒內LED1閃10次的程序(12MHZ,STC89C52),編譯OK,但在實驗板上運行失敗,網友也幫忙寫了個程序,結果也是失敗。現在將此程序貼上來,請大家來一起來幫幫忙,指教指教,探討探討

 

題目要求:1秒內LED1閃10次后停止(或是說燈在1秒之內只閃10次)

 

 

我寫的:

程序分析:閃10次即亮10次滅10次,共20次,1S/20=50MS每次。

#include<reg52.h>

#define uchar unsigned char

sbit P1_4=P1^4;

sbit LED1=P0^0;

uchar a;

 

void main()

{

  P1_4=0;

        a=0;

  TMOD=0X01;

   TH0=0X3C;

   TL0=0Xb0;

   EA=1;

   ET0=1;

   TR0=1;

while(1); 

}

 

void time0() interrupt 1

{

  TH0=0X3c;

   HL0=0Xb0;

a++;

   if(a==1)

      {

          a=0;

     LED1=~LED1;

       }

         if(a==20)

             {

               TR0=0;

              }

}

 

當以上程序運行失敗之后,我在if(a==1)之前加了個while(1)將兩個if都放在了{ }中,但結果仍然達不到題目要求:1秒鐘之內LED1閃爍10次后停止。

 

網友的程序:

#include<reg52.h>

#define uchar unsigned char

sbit P1_4=P1^4;

sbit LED1=P0^0;

uchar a,b;

 

void main()

{

  P1_4=0;

        a=0;

         b=0;

  TMOD=0X01;

   TH0=0X3C;

   TL0=0Xb0;

   EA=1;

   ET0=1;

   TR0=1;

while(1); 

}

 

void time0() interrupt 1

 

 

{

  TH0=0X3c;

   HL0=0Xb0;

a++;

   if(a==1)

      {

          a=0;

     

       }

         for(b=0;b<=10;b++)

                {

               LED1=~LED1;

                }

}

以上是網友的程序,大概是這樣吧,因為他給我的資料沒帶在身邊編譯OK,實驗板上得不到題目要求的結果。

[此貼子已經被作者于2010-10-12 18:56:49編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:25279 發表于 2010-10-12 23:32 | 只看該作者

我做出來了:程序如下,有愿意一起學習共同進步的朋友可以加我Q:125991680

 

#include  <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;
uchar b=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void main()
{
   P1_4=0;
 a=0;
 b=0;
 TMOD = 0x11;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
   ET1=1;
 TR0 = 1;
 TR1=1;
 while(1);
}

void Timer_0() interrupt 1
{
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%256;
   a++;

    if(a == 1)
   {
     a=0;
         LED = ~LED;
   }
}

void time1() interrupt 3
{
   TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%256;
   b++;
 if(b==20)
  {
      a=0;
  b=0;
  TR0=0;
  TR1=0;
  }
}

 

 

回復

使用道具 舉報

板凳
ID:22246 發表于 2010-10-13 02:52 | 只看該作者
好樣的,
回復

使用道具 舉報

地板
ID:25279 發表于 2010-10-13 08:15 | 只看該作者

謝謝你的夸獎呢!但是還是做得不好:

用了兩個定時器,A:占用資源;B:感覺很怪(其實也是編好了之后才想到的可以一個用來定時,另一個用來計數)

 

我現在想用一個定時器也完成它,那個朋友可以幫幫我呢,我上面采用的是用一個定時器,但是失敗了,我現在又想到了

兩個方案:

1,用延時+定時器(這個我要晚上實驗才能有結果)

2,不加延時程序,只用一個定時器(這個希望能夠得到大家的學友們的幫助,因為加上學友的程序,我都實驗了6個之多了,可是都失敗了。。。

 

 

回復

使用道具 舉報

5#
ID:25782 發表于 2010-10-14 09:19 | 只看該作者

#include<reg52.h>

#define uchar unsigned char

sbit P1_4=P1^4;

sbit LED1=P0^0;

uchar a;

 

void main()

{

  P1_4=0;

        a=0;

  TMOD=0X01;

   TH0=0X3C;

   TL0=0Xb0;

   EA=1;

   ET0=1;

   TR0=1;

while(1); 

}

 

void time0() interrupt 1

{

  TH0=0X3c;

   HL0=0Xb0;

a++;

   if(a==1)

      {

          //a=0;把這句去掉就行了吧。

     LED1=~LED1;

       }

         if(a==20)

             {

               TR0=0;

              }

}

回復

使用道具 舉報

6#
ID:25279 發表于 2010-10-18 09:06 | 只看該作者

謝謝你噢。。

我今天晚上回去試一下。

 

 

我試了一下,不行噢,

[此貼子已經被作者于2010-10-18 19:31:52編輯過]
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线一区二区三区 | 91免费在线| 国产精品久久久久久久久免费软件 | 欧美11一13sex性hd | 亚洲精品日日夜夜 | 欧美日本韩国一区二区 | 久久精品国产一区二区电影 | 91久久精品一区二区二区 | 久久久精品一区二区三区 | a在线免费观看 | 精品欧美一区二区三区 | 精品国产伦一区二区三区观看说明 | 国产日韩欧美电影 | 久久久久网站 | 久久久久久网 | www.久久久久久久久久久久 | 天堂成人国产精品一区 | 成年人在线视频 | 九九热在线免费视频 | 国产成人在线一区二区 | 人人草人人干 | 欧美视频免费在线 | www.成人.com | 波多野结衣一二三区 | 久久伊人精品 | 欧美激情99 | 久久免费观看一级毛片 | 午夜三级视频 | 91色网站 | 狠狠亚洲| 综合精品久久久 | 日韩在线不卡视频 | 国产美女高潮 | 国产区视频在线观看 | 在线观看视频91 | 国产午夜精品久久久 | 特级毛片 | 五月激情婷婷在线 | 成人午夜看片 | 久久精品欧美一区二区三区不卡 | 精品国产欧美一区二区三区成人 |