48路流水灯374扩展流水灯电路仿真,求C怎么控制

2020-02-02 09:34发布

有谁写过这个电路的硬件程序,原来的程序是汇编,我看不懂汇编哪位大哥帮帮忙指导一下这个C程序的流水灯程序怎么写,只需要正传15圈后然后反转15圈,可以按扭调流水灯快慢!带仿真和汇编在里面,大家可以仿真一下,这个我是在其它东风找的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
devcang
2020-02-02 14:19
#include<reg51.h>

#define uchar unsigned char
#define uint  unsigned int
sbit EN=P3^6;

void delay5ms();
void delay400ms();

void hy4(){//;花样4全亮
        uchar a;
        for(a=0; a<6; a++){
                P2=a;
                P0=0xff;
                P2=0;
        }
}

void hy3(){        //;花样3全灭
        uchar a;
        for(a=0; a<6; a++){
                P2=a;
                P0=0x00;
                P2=0;
        }
}

void hy2(){ //;花样2从左到右亮,然后从右到左灭
                // mov a,#01h
        // mov r6,#6

// hy21:   mov dptr,#0000h
// hy22:   mov r7,#8

// hy2lp:  movx @dptr,a
        // setb c
        // rlc a
        // lcall delay5ms
        // djnz r7,hy2lp
        // inc dph
        // djnz r6, hy22
        // lcall delay400ms

        // mov a,#01h
        // mov r6,#6

// hy21a:  dec dph
       // ; mov dptr,#0000h
// hy22a:   mov r7,#8

// hy2lpa:  movx @dptr,a
        // clr c
        // rrc a
        // lcall delay5ms
        // djnz r7,hy2lpa
        // dec dph
        // djnz r6, hy22a
        // lcall delay400ms
}


void hy1(){//;花样1间隔亮 变换
        uchar a, p;
        for(p=0; p<0x10; p++){
                for(a=0; a<=6; a++){
                        P2=a;
                        if( (p % 2)==0){
                                P0=0xAA;
                        }else{
                                P0=0x55;
                        }
                        P2=0;
                }
                delay400ms();
        }
}

void delay5ms(){ //;延时子程序(5MS)
        uchar i,j;
        for(i=25;i>0;i--){
                for(j=100; j>0; j--){
                        ;
                }
        }
}

//;==============延时400毫秒
void delay400ms(){  //;延时子程序(400MS)
        uchar i,j,k;

        for(i=20;i>0;i--){
                for(j=100; j>0; j--){
                        for(k=100; k>0; k--){
                                ;
                        }
                }
        }
}


void main(){
        delay400ms();
        EN=0;
        while(1){
         hy1();         //;间隔亮10次
                 delay400ms();
         hy3();         //;全灭
         delay400ms();  //;延时
         hy4();         //;全亮
         delay400ms();  //;延时
         hy3();         //;全灭
         delay400ms();  //;延时
         hy4();         //;全亮
         delay400ms();  //
         hy3();         //;全灭
         delay400ms();  //
         hy2();         //;从左到右亮,然后从右到左灭
         hy2();         //
        }
}



断断续续修改一下,还有一个函数,没改。

一周热门 更多>