找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3879|回復: 11
打印 上一主題 下一主題
收起左側(cè)

期待你們的答復

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:50469 發(fā)表于 2013-5-22 19:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
sbit D1=P0^0;
void main()
{
     for(i=2;i>0;i--)
    {
       d1=0;
      delay(500);
      d1=1;
      delay(500);
     }
}
下面是一個延時函數(shù),
然后為什么,這個發(fā)光二極管沒有閃兩下就不亮了呢??
就是因為單片機是寫什么執(zhí)行什么,然后如果不給它寫挺值得程序是不會停的嗎?
還有怎么實現(xiàn)上兩次以后再也不亮了呢,除了用中斷??
希望能盡快收到大家的答復,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2013-5-23 00:58 | 只看該作者
如果按這樣寫 的話 他就可以一直執(zhí)行不停止了
#include<reg52.h>
sbit D1=P0^0;
void main()
{
     while(1)
    {
       d1=0;
      delay(500);
      d1=1;
      delay(500);
     }
}
回復

使用道具 舉報

板凳
ID:50469 發(fā)表于 2013-5-24 00:01 | 只看該作者
你沒明白我的意思,我是想閃兩下就不閃了,但那個for循環(huán)好像不起作用啊。。
回復

使用道具 舉報

地板
ID:51036 發(fā)表于 2013-6-20 02:24 來自觸屏版 | 只看該作者
可以在for循環(huán)體整體之后加一個  while(1);
回復

使用道具 舉報

5#
ID:18297 發(fā)表于 2013-6-20 16:40 | 只看該作者
#include<reg52.h>
sbit D1=P0^0;
void main()
{
     for(i=2;i>0;i--)
    {
       d1=0;
      delay(500);
      d1=1;
      delay(500);
     }
}

程序中的錯誤:
1、sbit D1=P0^0;和d1=0;要求大小寫一致。即全部都用D1或全都用d1。
2、delay(500);程序中缺少子程序。
3、程序是需要一直循環(huán)執(zhí)行的,或是在等待外部變化(引腳電平變化,外部中斷等),或是內(nèi)部定時等等。
如下完整程序:
#include<reg52.h>
unsigned  char   i;
sbit d1=P1^0;
void delay(unsigned int ms)//延時1毫秒(不夠精確的)
{
unsigned int i,j;
    for(i=0;i<ms;i++)
     for(j=0;j<100;j++);
}
void main()
{
     for(i=2;i>0;i--)
    {
       d1=0;
      delay(500);
      d1=1;
      delay(500);
     }
  while(1);   //D1變化兩次后一直空閑,死循環(huán)。
}

但是仿真中和實際電路中要看,delay(500);的延時時間到底是多少,太少的話仿真程序或人在實驗板上不能看到。

回復

使用道具 舉報

6#
ID:51564 發(fā)表于 2013-7-9 20:42 | 只看該作者
我想問下:你編譯正確么??
回復

使用道具 舉報

7#
ID:51883 發(fā)表于 2013-7-15 20:34 | 只看該作者
難道 你在編譯的時候  編譯軟件不報錯 而且還能生成HEX文件  并下載到單片機里。。!這簡直是 不可思議。。
關于你是否定義了變量 i ;首先如果你的延時子程序 延時時間太短 人的眼睛是  根本無法分辨的  所以就像沒有亮一樣!實際上 是亮了  只是時間太短。!
回復

使用道具 舉報

8#
ID:50469 發(fā)表于 2013-8-6 17:55 | 只看該作者
聽,美妙的旋律 發(fā)表于 2013-7-9 20:42
我想問下:你編譯正確么??

不好意思,我只寫了主要部分,延時子函數(shù)沒寫,d1也是不小心寫錯了,在程序里我寫的是D1
回復

使用道具 舉報

9#
ID:50469 發(fā)表于 2013-8-6 18:03 | 只看該作者
admin 發(fā)表于 2013-5-23 00:58
如果按這樣寫 的話 他就可以一直執(zhí)行不停止了
#include
sbit D1=P0^0;

謝謝!
回復

使用道具 舉報

10#
ID:50469 發(fā)表于 2013-8-6 18:05 | 只看該作者
zjjhtony 發(fā)表于 2013-6-20 16:40
#include
sbit D1=P0^0;
void main()

是正解啊,太感謝了(現(xiàn)在回過頭來再看就知道了,當時怎么也沒想起來),太感謝了。!
回復

使用道具 舉報

11#
ID:153199 發(fā)表于 2016-12-31 11:00 | 只看該作者
感謝分享經(jīng)驗
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表