標題: 一個按鍵控制3個led點亮30秒單片機C程序,F(xiàn)在想要讓led2和led3由長亮變?yōu)榻惶媪?.. [打印本頁]

作者: xbcwenxue    時間: 2019-3-5 15:41
標題: 一個按鍵控制3個led點亮30秒單片機C程序,F(xiàn)在想要讓led2和led3由長亮變?yōu)榻惶媪?..
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit sign_a=0,sign_b=0,sign_c=0,sign_d=0;//標志
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;                        
                }
        }
}

作者: xuewenjie1212    時間: 2019-3-5 17:27
帥氣 看看看 查看一下 老板牛逼
作者: 菜鳥來了    時間: 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;  
                   }                                                               
          }  
作者: 菜鳥來了    時間: 2019-3-5 19:01
不是很確定你的交替是指什么,
我在3樓的代碼是led2和led3同時亮滅交替,
如果要led2和led3的流水交替就改一個地方,
把LED3 = i改成LED3 = ~i
作者: xbcwenxue    時間: 2019-3-6 09:21
菜鳥來了 發(fā)表于 2019-3-5 19:01
不是很確定你的交替是指什么,
我在3樓的代碼是led2和led3同時亮滅交替,
如果要led2和led3的流水交替就 ...

謝謝大哥。已經(jīng)搞好。
再幫忙看下整個代碼?刹豢梢栽俸喕
作者: 春風十里吹    時間: 2019-3-6 15:11
xbcwenxue 發(fā)表于 2019-3-6 09:21
謝謝大哥。已經(jīng)搞好。
再幫忙看下整個代碼?刹豢梢栽俸喕

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




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1