|
- #include<reg51.h>
- sbit P1_0=P1^0; //脈沖輸出//
- sbit P1_1=P1^1; //計數(shù)開關(guān)//
- sbit P1_2=P1^2; //脈沖開關(guān)//
- unsigned char xdata w _at_ 0x8002,d _at_ 0x8004; //位選 段選//
- unsigned char j,x0,x1,x2,x3,x4,x5; //定義j(定時倍數(shù)10) x顯示段碼//
- unsigned long i; //累加i 顯示i //
- unsigned char code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)組顯示//
- void delay()
- { unsigned char i;
- for(i=0;i<250;i++);
- }
- void play()
- {
- x0=i%10;
- x1=i/10%10;
- x2=i/100%10;
- x3=i/1000%10;
- x4=i/10000%10;
- x5=i/100000;
- w=0x01;d=a[x0]; delay();
- w=0x02;d=a[x1]; delay();
- w=0x004;d=a[x2];delay();
- w=0x08;d=a[x3]; delay();
- w=0x10;d=a[x4]; delay();
- w=0x20;d=a[x5]; delay();
- }
- void main()
- {
- EA=1;
- ET0=1;
- ET1=1;
- TMOD=0x15;
- TR0=0;
- TR1=0;
- TH0=0x00; TL1=0x00;
- TH1=0x3c; TL1=0xb0;
- while(1)
- {
- if(P1_1==0)
- {
- TR0=0; TH0=0x00; TL0=0x00; i=153091; play();
- }
- if(P1_1==1)
- {
- TR0=1; i=TH0<<8|TL0; play();
- }
- if(P1_2==0)
- {
- TR1=0; TH1=0x3c; TL1=0xb0; j=0; P1_0=0;
- }
- if(P1_2==1)
- {
- TR1=1;
- }
- }
- }
- void int1() interrupt 3
- {
- TH1=0x3c; TL1=0xb0;
- j++;
- if(j==10)
- {
- P1_0=!P1_0; j=0;
- }
- }
復(fù)制代碼 |
|