找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6012|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

[求助]1秒內(nèi)燈閃10次

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:25279 發(fā)表于 2010-10-21 21:23 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

程序要求:1秒之內(nèi)燈閃10次,我編的程序A和B都不能實(shí)現(xiàn)這個要求,哪位熱心人幫幫我

A:

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);
}

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

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

void delay (uint z)
{
 uint x,y;
 for(x=125;x>0;x--)
 for(y=z;y>0;y--);
 }

 

 

B:

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);

delay(689);

  ET0=0;
  TR0=0;

}

 

 

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

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

void delay (uint z)
{
 uint x,y;
 for(x=125;x>0;x--)
 for(y=z;y>0;y--);
 }

[此貼子已經(jīng)被作者于2010-10-21 21:24:43編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:26540 發(fā)表于 2010-10-26 18:18 | 只看該作者
你設(shè)置100ms閃一次,不就等于1s閃10次了嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:25279 發(fā)表于 2010-10-28 11:51 | 只看該作者

首先非常感謝你噢——給我回復(fù)了�。�!

我按照你的提示寫了一個如下,可是運(yùn)行失敗,您可否幫我寫一個程序呢?

 

 

#include  <reg52.h>

#define uchar unsigned char
#define uint unsigned int
uchar a=0;
sbit LED=P0^0;
sbit P1_4=P1^4;
void delay(uint z);
void main()
{
   P1_4=0;
 a=0;
  TMOD = 0x01;
 TH0 = (65536-50000)/256;//50ms
 TL0 = (65536-50000)%256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
 while(1);
}

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

    if(a == 2) //50ms*2=100ms,中斷一次
   {
     a=0;
     LED = ~LED;

    if(a==20)//1000ms 即1秒

           {

               a=0;

               TR0=0;

            }

   }
}

 

請問是這樣的嗎?if(a == 2)之后它還會再實(shí)現(xiàn)if(a==20)嗎?我感覺這個行不通!,我是新學(xué)者,還請多多賜教。

 

 

                          

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表