标题: 单片机怎么实现各个不同io口之间的流水 [打印本页]

作者: juu    时间: 2020-5-26 21:01
标题: 单片机怎么实现各个不同io口之间的流水
我做的是花样灯,可以按键控制灯的状态,但是我按一次按键想要实现实现p1口和p2口之间的流水衔接,就是P1.1亮了 接着P1.2亮但是同时P1.1不灭,一直流水,直到P1和P0一共16个灯灯都亮,这一步程序怎么写
void kg8(){P1=o;o=_crol_(o,1);o=o-0x01;mDelay(300);
             if(o==0x00) {P0=q;q=_crol_(q,1);q=q-0x01;mDelay(300);}}

这是我写的,运行有误,我该怎么改

作者: wulin    时间: 2020-5-26 22:18
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
void Delay(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=120;j>0;j--);
}
void main()
{
        num=0x0000;
        while(1)
        {
                if(num==0x0000)
                        num=0xfffe;
                else num<<=1;
                P1=num;
                P2=num>>8;
                Delay(1000);
        }
}
作者: chengp    时间: 2020-5-27 19:03
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
void delay(void)   
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_;  
}
void main()
{
        uchar i=0;
  while(1)
        {
        switch(i)
        {
        case 0:{P1=0X01;P2=0X01;delay();} break;
        case 1:{P1=0x03;P2=0X03;delay();} break;
        case 2:{P1=0X07;P2=0X07;delay();} break;
        case 3:{P1=0X0f;P2=0X0f;delay();} break;
        case 4:{P1=0X1f;P2=0X1f;delay();} break;
        case 5:{P1=0X3f;P2=0X3f;delay();}break;
        case 6:{P1=0X7f;P2=0X7f;delay();} break;
                case 7:{P1=0Xff;P2=0Xff;delay();} break;
                default: break;
        }
        i++;
        P1=0X01;P2=0X01;
}
        delay();
}
作者: juu    时间: 2020-6-3 15:53
chengp 发表于 2020-5-27 19:03
#include
#include
#define uchar unsigned char

好的,谢谢了
作者: juu    时间: 2020-6-3 15:53
wulin 发表于 2020-5-26 22:18
#include
#define uint unsigned int
#define uchar unsigned char

谢了兄弟




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1