找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

一個按鍵控制3個led點(diǎn)亮30秒單片機(jī)C程序,F(xiàn)在想要讓led2和led3由長亮變?yōu)榻惶媪?..

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:484913 發(fā)表于 2019-3-5 15:41 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit sign_a=0,sign_b=0,sign_c=0,sign_d=0;//標(biāo)志
uint count1=0,count2=0;                                       
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit key = P3^1;

void keyscan()                                       
{
        static uchar count=0;                                    
        if(key==0)                                       
        {
                count++;                                
                if(count>=100)                        
                {                       
                        count=100;                        
                        if(sign_c==0)               
                        {
                                sign_a=1;               
                                sign_c=1;               
                                EA = 0;                       
                                count2+=600;        
                                EA = 1;                        
                        }
                }
        }
        else                                                
        {
                if(sign_c==1)                        
                {
                        sign_c=0;                        
                        sign_d=1;                        
                }
                count=0;                              
        }
}
void main(void)
{
            TMOD = 0x01;
        TH0 =(65536-50000)/256;               
        TL0 =(65536-50000)%256;               
        TR0=1;
        EA = 1;
        ET0 = 1;
        while(1)
        {
                keyscan();                              
                if(sign_b==1)                     
                        LED1 = 0,LED2 = 0,LED3 = 0;                        
                else
                        LED1 = 1,LED2 = 1,LED3 = 1;                                                                  
        }   
}
void time0() interrupt 1
{
        TH0 =(65536-50000)/256;               
        TL0 =(65536-50000)%256;               
        if(sign_a==1)                                 
        {
                count1++;                                
                if(count1>=20)                        
                {
                        count1=0;                        
                        sign_a=0;                       
                        sign_b=1;                        
                }
        }
        if((sign_b==1)&(sign_d==1))
        {
                count2--;                                
                if(count2==0)                        
                {
                        sign_b=0;                       
                        sign_d=0;                        
                }
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:77064 發(fā)表于 2019-3-5 17:27 | 只看該作者
帥氣 看看看 查看一下 老板牛逼
回復(fù)

使用道具 舉報

板凳
ID:346616 發(fā)表于 2019-3-5 18:09 | 只看該作者
延時自己寫一個,main函數(shù)里面寫:      
   while(1)
        {
                keyscan();                             
                if(sign_b==1)
                 {     
                      uchar i;   
                      LED1 = 0;
                      while(sign_b==1)
                             {               
                                  LED2 = i,LED3 = i;
                                  i=~i;
                                  延時();                        
                              }
                  }                              
                 else
                  {
                       LED1 = 1,LED2 = 1,LED3 = 1;  
                   }                                                               
          }  
回復(fù)

使用道具 舉報

地板
ID:346616 發(fā)表于 2019-3-5 19:01 | 只看該作者
不是很確定你的交替是指什么,
我在3樓的代碼是led2和led3同時亮滅交替,
如果要led2和led3的流水交替就改一個地方,
把LED3 = i改成LED3 = ~i
回復(fù)

使用道具 舉報

5#
ID:484913 發(fā)表于 2019-3-6 09:21 | 只看該作者
菜鳥來了 發(fā)表于 2019-3-5 19:01
不是很確定你的交替是指什么,
我在3樓的代碼是led2和led3同時亮滅交替,
如果要led2和led3的流水交替就 ...

謝謝大哥。已經(jīng)搞好。
再幫忙看下整個代碼?刹豢梢栽俸喕
回復(fù)

使用道具 舉報

6#
ID:478073 發(fā)表于 2019-3-6 15:11 | 只看該作者
xbcwenxue 發(fā)表于 2019-3-6 09:21
謝謝大哥。已經(jīng)搞好。
再幫忙看下整個代碼?刹豢梢栽俸喕

能簡化,將void time0() interrupt 中 兩個if合成一個,用到 &&,可試試

評分

參與人數(shù) 1黑幣 +10 收起 理由
我們的青春阿 + 10

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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