標(biāo)題: 求高手幫忙改一段代碼 [打印本頁]

作者: xymiss    時間: 2017-10-3 03:05
標(biāo)題: 求高手幫忙改一段代碼
幫忙改成按一下按鍵流水燈開始 ,再按一下中段并重新開始。不按不亮 每按一下只走一遍。不循環(huán)。謝謝!
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit button = P3^0;
uchar press = 1;
uchar luishui = 0xfe;
void Delay(uchar z)
{
    uchar x, y;
    for(x = z; x > 0; x--)  for(y = 255; y > 0; y--);
}
void main()
{
    IT0 = 1;
    EX0 = 1;
    EA = 1;
    while(1) {
      if(press == 1)   P1 = 0xff;
      if(press == 0)  {
        P1 = luishui;
        luishui = _crol_(luishui, 1);
        Delay(200);  
      }
    }
}
X0_INT()   interrupt 0
{
    press += 1; if(press == 2)  press = 0;
    Delay(10);  
    while(button == 0);
}



作者: liut_text    時間: 2017-10-3 03:05
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit button = P3^2;//外部中斷P3^2和P3^3
int b=1;
bit press = 1;
uchar luishui = 0xfe;
void Delay(uchar z)
{
    uchar x, y;
    for(x = z; x > 0; x--)  for(y = 255; y > 0; y--);
}
void main()
{
    int i=0;
    IT0 = 1;
    EX0 = 1;
    EA = 1;
    while(press) P1=0xff;
        while(!press)
        {
          b=1;
          luishui=0xfe;
          for(i=0;i<8;i++)
          {
           if(!b)break;
           P1=luishui;
           Delay(200);
           luishui=_crol_(luishui,1);                               
          }         
         if(i==8)press=1;
        }
}
void X0_INT()   interrupt 0
{  
  b=0;
  press=0;  
}
你看看是不是這樣
作者: wulin    時間: 2017-10-3 11:37
外部中斷P3.2~P3.3
作者: wulin    時間: 2017-10-3 13:42
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit button = P3^2;
uchar press = 1;
uchar luishui = 0xfe;
void Delay(uchar z)
{
        uchar x, y;
        for(x = z; x > 0; x--)  
                for(y = 255; y > 0; y--);
}
void main()
{
        P3=0x0f;
        IT0 = 1;
        EX0 = 1;
        EA = 1;
        while(1)
        {
                if(press == 1)   
                        P1 = 0xff;
                if(press == 0)  
                {
                        P1 = luishui;
                        luishui = _crol_(luishui, 1);
                        Delay(250);  
                        if(P1 == 0x7f)  
                                press = 1;
                }
        }
}
X0_INT()   interrupt 0
{
        press = 0;
//        if(press == 2)  
//        press = 0;
//        Delay(10);  
//        while(button == 0);
}

作者: 不倒翁.WZT    時間: 2017-10-5 07:07
標(biāo)題: RE: 求高手幫忙改一段代碼
#include<reg51.h>             //51系列單片機(jī)頭文件
#include<intrins.h>           //左右循環(huán)頭文件
#define uint unsigned int     //宏定義
#define uchar unsigned char   //宏定義
void delayms(uint);           //聲明子函數(shù)
uchar n;                      //定義一個變量,用來控制循環(huán)次數(shù)
uchar aa;                     //定義一個變量,用來給P1口賦值
void main()                   //主函數(shù)
{
        IT0=1;       //下降沿觸發(fā)
        EX0=1;       //INT0中斷允許
        IT1=1;       //下降沿觸發(fā)
        EX1=1;       //INT1中斷允許
        EA=1;        //總中斷允許        //P1口賦初值11111110
  while(1){}                   //大循環(huán)
}
void delayms(uint X)       //延時子函數(shù)
{
        uint i,j;                //定義i,j
        for(i=X;i>0;i--)       //i=xms即延時約xms毫秒
        for(j=110;j>0;j--);      
}
void  INT0_1(void) interrupt 0  using 1
{  
        EX0=0;   //進(jìn)入外部INT0中斷關(guān)閉,防止誤操作
        aa=0x01;
        P0=aa;                //先點(diǎn)亮一個發(fā)光管
        aa=_crol_(aa,1);      //將aa循環(huán)左移1位后再賦給aa         
        delayms(500);         //調(diào)用延時500ms
        EX0=1;   //中斷函數(shù)結(jié)束,外部INT0中斷打開,中斷生效
}       

作者: xymiss    時間: 2017-10-5 22:43
本帖最后由 xymiss 于 2017-10-6 22:49 編輯
wulin 發(fā)表于 2017-10-3 13:42
#include
#include
#define uchar unsigned char
謝謝老師。明白了




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