找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求高手幫忙改一段代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:217754 發(fā)表于 2017-10-3 03:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
10黑幣
幫忙改成按一下按鍵流水燈開始 ,再按一下中段并重新開始。不按不亮 每按一下只走一遍。不循環(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);
}


最佳答案

查看完整內(nèi)容

#include #include #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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:232524 發(fā)表于 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;  
}
你看看是不是這樣
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2017-10-3 11:37 | 只看該作者
外部中斷P3.2~P3.3
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 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);
}
回復(fù)

使用道具 舉報(bào)

5#
ID:149988 發(fā)表于 2017-10-5 07:07 | 只看該作者

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;                      //定義一個(gè)變量,用來控制循環(huán)次數(shù)
uchar aa;                     //定義一個(gè)變量,用來給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í)子函數(shù)
{
        uint i,j;                //定義i,j
        for(i=X;i>0;i--)       //i=xms即延時(shí)約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)亮一個(gè)發(fā)光管
        aa=_crol_(aa,1);      //將aa循環(huán)左移1位后再賦給aa         
        delayms(500);         //調(diào)用延時(shí)500ms
        EX0=1;   //中斷函數(shù)結(jié)束,外部INT0中斷打開,中斷生效
}       
回復(fù)

使用道具 舉報(bào)

6#
ID:217754 發(fā)表于 2017-10-5 22:43 | 只看該作者
本帖最后由 xymiss 于 2017-10-6 22:49 編輯
wulin 發(fā)表于 2017-10-3 13:42
#include
#include
#define uchar unsigned char
謝謝老師。明白了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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