程序是这个,电机一转,数码管就灭了
- #include<reg51.h>
- #include<intrins.h>
- void zhongduan();
- unsigned char num[]={0x00,0x01,0X02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
- void delay(unsigned char x);
- sbit sw=P3^0; sbit gw=P3^1; sbit moshi=P3^2; sbit yewei=P3^3; sbit qidong=P3^4;
- sbit L1=P1^5; sbit L2=P1^4; sbit L3=P1^3; sbit L4=P1^2; sbit L5=P1^6; sbit L6=P1^7;sbit L7=P1^1;sbit L8=P1^0;
- unsigned char s=0,g=0,i=0,b=0;
- unsigned char j,h;
- unsigned char aum=0;
- unsigned char code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
- unsigned char code REV[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
- void SETP_MOTOR_FFW(unsigned char n)
- {
- unsigned char q,w;
- for(q=0;q<5*n;q++)
- {
- for(w=0;w<8;w++)
- {
- P0 = FFW[w];
- delay(25);
- }
- }
- }
- void SETP_MOTOR_REV(unsigned char n)
- {
- unsigned char q,w;
- for(q=0;q<5*n;q++)
- {
- for(w=0;w<8;w++)
- {
- P0 = REV[w];
- delay(25);
- }
- }
- }
- void de(unsigned char z)
- {
- unsigned char e,r;
- for(e=z;e>0;e--)
- for(r=110;r>0;r--);
- }
- sbit SPK=P3^5;
- void main()
- {
- unsigned char N = 3;
- EA=1;
- ET1=1;
- TMOD=0x10;
- TH1=(65535-10000)/256;
- TL1=(65535-10000)%256;
- TR1=1;
- P2=0x08; P3=0xff; P1=0x00; delay(200); P1=0xff; P3=0x00; delay(200); P3=0xff; P1=0xff;
- while(1)
- {
- sw=1; P2=num[s]; delay(1); sw=0;
- gw=1; P2=num[g];delay(1); gw=0;
- if(moshi==0)
- {
- delay(2);
- if(moshi==0)
- {
- while(!moshi);
- b++;
- if(b>2)
- b=1;
- }
- }
- if(yewei==0&&b>0)
- {
- delay(2);
- if(yewei==0&&b>0)
- while(!yewei);
- i++;
- if(i>4)
- i=1;
- }
- switch(i)
- {
- case 0:
- for(j=0;j<50;j++)
- L1=1;L2=1;L3=1;L4=1; break;
- case 1:
- for(j=0;j<50;j++)
- L1=0;L2=1;L3=1;L4=1; break;
- case 2:
- for(j=0;j<50;j++)
- L1=1;L2=0;L3=1;L4=1; break;
- case 3:
- for(j=0;j<50;j++)
- L1=1;L2=1;L3=0;L4=1; break;
- case 4:
- for(j=0;j<50;j++)
- L1=1;L2=1;L3=1;L4=0; break;
- default:break;
- }
- switch(b)
- {
- case 0:
- for(j=0;j<100;j++)
- P1=0xff; break;
- case 1:
- for(j=0;j<100;j++)
- L5=1;L6=0; break;
- case 2:
- for(j=0;j<100;j++)
- L5=0;L6=1; break;
- default:break;
- }
- if(qidong==0&&i>0)
- {
- delay(2);
- if(qidong==0&&i>0)
- {
- while(!qidong);
- g=0;s=6;
- while(1)
- {
- if(aum==100)
- {
- aum=0;
- g--;
- }
- if(g==-1)
- {
- g=9;
- s--;
- }
- if(s==-1)
- {s=0;g=0;}
- if(s==6)
- {L7=0;}
- if(s<5&&s>1)
- {
- L7=1;
- SETP_MOTOR_REV(N);delay(100);SETP_MOTOR_FFW(N);delay(100);
- sw=1; P2=num[s]; delay(1); sw=0;
- gw=1; P2=num[g];delay(1); gw=0;
- }
- if(s<=1)
- {L8=0;}
- if(s<1&&g<1)
- {P1=0xff;
- de(100);
- SPK=0;
- de(100);
- SPK=1;
- }
- sw=1; P2=num[s]; delay(1); sw=0; gw=1; P2=num[g];delay(1); gw=0;
- }
- }
- }
- }
- }
- void delay(unsigned char x)
- {
- unsigned char k;
- while(x--)
- for(k=0;k<255;k++);
- }
- void zhongduan() interrupt 3 using 0
- {
- TH1=(65535-10000)/256;
- TL1=(65535-10000)%256;
- aum++;
- }
复制代码
|