現在是檢測電平變化就開始倒計時然后led亮,
我現在想改成K1為低電平時數碼管開始15秒倒計時然后led亮,K1為高電平時led滅倒計時也直接置零改咋改啊!救救孩子都改好久了
單片機源程序如下:- #include <reg52.h>
- #include <intrins.h>
- #include <math.h>
- #define uint8_t unsigned char
- #define uint16_t unsigned int
- sbit K1=P3^1;
- sbit LED1=P3^3;
- sbit LED2=P3^4;
- uint8_t miao=0;
- uint8_t knum[8];
- uint8_t hour_A = 0,min_A = 0,sec_A=0;
- uint8_t code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x89,0xBF,0xc7};
- //D?êy
- uint8_t code index[]={0xFD,0xFE};
- void delay(uint16_t z)
- {
- uint16_t i,j;
- for(i=0;i<z;i++)
- for(j=0;j<121;j++);
- }
- void display()
- {
- uint8_t i;
- for(i=0;i<2;i++)
- {
- P0=0xff;
- P2=index[ i];
- P0=tab[knum[ i]];
- delay(2);
- }
- }
- uint8_t num,Value;
- bit start = 0;
- void main()
- {
- TMOD=0x01;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- ET0=1;
- TR0=1;
- EA=1;
-
- while(1)
- {
- if(!K1)
- {
- while(!K1);
- if(miao==0)
- {
- start = 1;
- miao = 15;
- }
- }
- knum[1] = miao/10;
- knum[0] = miao%10;;
- display();
- }
- }
- void T0_timer () interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(start)
- {
- LED1 = 0;
- LED2 = 0;
- num++;
- if(num>20)
- {
- num = 0;
- if(miao>0)
- {
- miao--;
- }
- else if(miao==0)
- {
- start = 0;
- }
- }
- }
- else
- {
- LED1 = 1;
- LED2 = 1;
- }
- }
復制代碼
|