这是个秒表 怎么在不改动的情况下加个按键控制秒表的暂停和计时?
- #include<reg51.h>
- #define uchar unsigned char
- #define ab P0
- uchar int_time;
- uchar a,b;
- sbit LSA = P2^2;
- sbit LSB = P2^3;
- sbit LSC = P2^4;
- unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x79,0x71};
- uchar displaydata[8];
- void digdisplay();
- void clock(a,b)
- {
- displaydata[0] = table[b/10];
- displaydata[1] = table[b%10];
- displaydata[2] = 0x40;
- displaydata[3] = table[a/10];
- displaydata[4] = table[a%10];
- digdisplay();
- }
- /***********************************
- * Ö÷oˉêy
- ***********************************/
- void main()
- {
- TMOD = 0X01;
- TH0 = (65536-46083)/256;
- TL0 = (65536-46083)/256;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- int_time = 0;
- a =0;b = 0;
- while(1)
- {
- clock(a,b);
- }
- }
- void digdisplay()
- {
- uchar i,j;
- for(i=0;i<5;i++)
- {
- switch(i)
- {
- case 0:
- LSA = 0;LSB = 0;LSC = 0;break;
- case 1:
- LSA = 1;LSB = 0;LSC = 0;break;
- case 2:
- LSA = 0;LSB = 1;LSC = 0;break;
- case 3:
- LSA = 1;LSB = 1;LSC = 0;break;
- case 4:
- LSA = 0;LSB = 0;LSC = 1;break;
- }
- ab = displaydata[i];
- j = 50;
- while(j--);
- ab = 0x00;
- }
- }
- void TO_time() interrupt 1
- {
- TH0 = (65536-50000)/256;
- TL0 = (65536-50000)%256;
- int_time++;
- if(int_time == 2)
- {
- int_time = 0;
- a++;
- }
- if(a == 10)
- {
- b++;
- a=0;
- }
- if(b == 60)
- {
- b = 0;
- }
- }
复制代码
|