|
秒表,计数单位分秒,可实现暂停,开始- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit S1=P1^0; //流水灯顺时针流水
- sbit S2=P1^1; //流水灯逆时针
- uchar code discode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF}; //送段码0-9和"-"
- uchar disbitcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- uchar disbuf[8]={0,0,10,0,0,10,0,0};
- uchar disbuf1[8]={0,0,10,0,0,10,0,0}; //显示缓冲区
- uchar cent,fensecond,second,minite;
- /*函数申明*/
- void display(void);
- void ini(void);
- void t0(void);
- /*************延时程序**************/
- void delay(uint m)
- {
- while(--m);
- }
- /*************初始化程序**************/
- void ini(void)
- {
- TMOD=0x01;
- TH0=0XEC;
- TL0=0X78;
- ET0=1;
- EA=1;
- }
- void zd (void)
- {
- uchar i;
- disbuf1[0]=disbuf[0];
- disbuf1[1]=disbuf[1];
- disbuf1[3]=disbuf[3];
- disbuf1[4]=disbuf[4];
- disbuf1[6]=disbuf[6];
- disbuf1[7]=disbuf[7];
- for(i=0;i<8;i++)
- {
- P0=discode[disbuf1[i]];
- P2=disbitcode[i];
- delay(100);
- }
- }
- void shuma()
- {
- while((S1==1)&&(S2==1))
- {
- P0=0X8C;
- P2=0X01;
- }
- }
- /*************显示程序**************/
- void display(void)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- P0=discode[disbuf[i]];
- P2=disbitcode[i];
- delay(100);
- }
- }
- /*************中断程序**************/
- void t0(void) interrupt 1 using 0 //用第0组寄存器
- {
- cent++;
- if(cent==17)
- {
- cent=0;
- fensecond++;
- if(fensecond==60)
- {
- fensecond=0;
- second++;
- if(second==60)
- {
- second=0;
- minite++;
-
- if(minite==60)
- {
- minite=0;
- }
- }
- }
- disbuf[0]=fensecond%10; //更新显示缓冲区
- disbuf[1]=fensecond/10;
- disbuf[3]=second%10;
- disbuf[4]=second/10;
- disbuf[6]=minite%10;
- disbuf[7]=minite/10;
- }
- TH0=0xFC;
- TL0=0x18;
- }
-
- void main(void)
- {
- uchar i,j;
- ini();
- shuma();
-
- while(1)
- {
- i=S1;
- j=S2;
- while((i==0)&(j==1)) //按键1去抖以及动作
- {
- delay(10);
- j=S2;
- if((i==0)&(j==1))
- {
- P3=0xff;
- P2=0x00;
- TR0=1;
- display();
- TR0=0;
- }
- }
- i=S1;
- while((j==0)&(i==1)) //按键1去抖以及动作
- {
- i=S1;
- delay(10);
- if((j==0)&(i==1))
- {
- P3=0xff;
- zd();
- }
- }
- }
- }
复制代码
|
-
-
秒表.zip
24.02 KB, 下载次数: 7, 下载积分: 黑币 -5
|