找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1470|回復: 8
收起左側

單片機新人剛學,在學到LED流水程序有些不會

[復制鏈接]
ID:1015310 發(fā)表于 2022-4-2 23:36 | 顯示全部樓層 |閱讀模式
這個閃爍間隔300ms左右還有:增加閃爍間隔時間(一次增加50ms)
        增加閃爍間隔時間(一次減少加50ms)   
單片機程序寫到這不會寫了  求求幫幫可以嘛   需要咋改

#include<AT89X52.H>
#include<intrins.h>
sbit SW=P3^0;
typedef unsigned int u16;
void delay(u16 i)
{
         
                while(i--);
}

void main()
{
  unsigned char i;
        unsigned char temp;
         unsigned int CYCLE=600,PWM_LOW=0;

        
               
        if(SW!=0)
        {
                temp=0x80;
                for(i=0;i<8;i++)
                  {
                        P1=~temp;
                        delay(50000);
                        temp=_cror_(temp,1);
                  }
                        
        }        

        if(SW==0)
          {
                        
                temp=0x01;
                 for(i=0;i<8;i++)
      {
                        P1=~temp;
                        delay(50000);
                  
                                
                        temp=_crol_(temp,1);
            }
               
    }

}

回復

使用道具 舉報

ID:121859 發(fā)表于 2022-4-3 08:44 | 顯示全部樓層
你這個程序框架是無法實現(xiàn)所說的功能的?梢钥紤]用定時器,或者增加幾個變量來嘗試。最好還是用中斷比較好。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1015310 發(fā)表于 2022-4-3 09:24 | 顯示全部樓層
zhxiufan 發(fā)表于 2022-4-3 08:44
你這個程序框架是無法實現(xiàn)所說的功能的?梢钥紤]用定時器,或者增加幾個變量來嘗試。最好還是用中斷比較好 ...

謝謝啦   可是我還是不太懂  因為剛學有些東西沒學到      我現(xiàn)在想做的是用開關改變流水燈的走向 和 延遲遞增
回復

使用道具 舉報

ID:842100 發(fā)表于 2022-4-3 11:20 | 顯示全部樓層
你可以用這種方式,能實現(xiàn)就是太啰嗦了,適合我這樣的新手,你試試肯定可以完成你說的功能,精確度不高,可以用debug,盡量減小誤差
void main()
{   sbit  SW=P3^0;//盡量不用這個端口,P3口的端口都是雙功能口,可以用P012的任意端口
   unsigned  long i=0;
  unsigned char  j=xx;
  while(1)
  {
     while(j--)//這里的值需要計算看下面一次循環(huán)需要多少時間給j賦值
    {
      SW=1;
      for(i=0;i<xx;i++);
      SW=0;
      for(i=0;i<xx;i++);
    }
     j=xx;//
while(j--)//這里的值需要計算看下面一次循環(huán)需要多少時間給j賦值
    {
      SW=1;
      for(i=0;i<xx;i++);
      SW=0;
      for(i=0;i<xx;i++);
    }
  }
}


評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:96744 發(fā)表于 2022-4-3 15:38 | 顯示全部樓層
把Delay(50000) 改成Delay(X),然后,通過按鍵改變X的值即可。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1015310 發(fā)表于 2022-4-4 08:15 | 顯示全部樓層
alunli 發(fā)表于 2022-4-3 15:38
把Delay(50000) 改成Delay(X),然后,通過按鍵改變X的值即可。

我試過了  改為X就會閃得超級很快
回復

使用道具 舉報

ID:1007932 發(fā)表于 2022-4-4 17:05 | 顯示全部樓層
有一個簡單的方法,把端口的狀態(tài)值寫到一個數(shù)組里(數(shù)組最好加code關鍵字),然后再循環(huán)延時調用。
回復

使用道具 舉報

ID:1015310 發(fā)表于 2022-4-7 07:50 | 顯示全部樓層
一事無成 發(fā)表于 2022-4-4 17:05
有一個簡單的方法,把端口的狀態(tài)值寫到一個數(shù)組里(數(shù)組最好加code關鍵字),然后再循環(huán)延時調用。

不會呀。。。聽不懂
回復

使用道具 舉報

ID:807651 發(fā)表于 2022-4-7 08:41 | 顯示全部樓層
herohr0209 發(fā)表于 2022-4-4 08:15
我試過了  改為X就會閃得超級很快

有沒有給X賦值啊,按現(xiàn)在一開始X=50000,通過按鍵1按一下 X=X+5000,按鍵2按一下X=X-5000,通過按鍵改變延時時間。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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