找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2822|回复: 5
收起左侧

求高手帮忙改一段代码

[复制链接]
ID:217754 发表于 2017-10-3 03:05 | 显示全部楼层 |阅读模式
10黑币
帮忙改成按一下按键流水灯开始 ,再按一下中段并重新开始。不按不亮 每按一下只走一遍。不循环。谢谢!
#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);
}


最佳答案

查看完整内容

#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
回复

使用道具 举报

ID:232524 发表于 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;  
}
你看看是不是这样
回复

使用道具 举报

ID:213173 发表于 2017-10-3 11:37 | 显示全部楼层
外部中断P3.2~P3.3
回复

使用道具 举报

ID:213173 发表于 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);
}
回复

使用道具 举报

ID:149988 发表于 2017-10-5 07:07 | 显示全部楼层

RE: 求高手帮忙改一段代码

#include<reg51.h>             //51系列单片机头文件
#include<intrins.h>           //左右循环头文件
#define uint unsigned int     //宏定义
#define uchar unsigned char   //宏定义
void delayms(uint);           //声明子函数
uchar n;                      //定义一个变量,用来控制循环次数
uchar aa;                     //定义一个变量,用来给P1口赋值
void main()                   //主函数
{
        IT0=1;       //下降沿触发
        EX0=1;       //INT0中断允许
        IT1=1;       //下降沿触发
        EX1=1;       //INT1中断允许
        EA=1;        //总中断允许        //P1口赋初值11111110
  while(1){}                   //大循环
}
void delayms(uint X)       //延时子函数
{
        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;   //进入外部INT0中断关闭,防止误操作
        aa=0x01;
        P0=aa;                //先点亮一个发光管
        aa=_crol_(aa,1);      //将aa循环左移1位后再赋给aa         
        delayms(500);         //调用延时500ms
        EX0=1;   //中断函数结束,外部INT0中断打开,中断生效
}       
回复

使用道具 举报

ID:217754 发表于 2017-10-5 22:43 | 显示全部楼层
本帖最后由 xymiss 于 2017-10-6 22:49 编辑
wulin 发表于 2017-10-3 13:42
#include
#include
#define uchar unsigned char
谢谢老师。明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表