2021-10-13

LW9wZW5pbnN0YWxsLXBiLTEwMTAxMzk4MDgzNzE3LQ==
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit  key_stop = P3^0;		//按键定义
sbit  key_star = P3^1;
sbit  key_hour = P3^2;sbit  key_min = P3^3;u8 code ledduan[] = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴段码u8 hour=0,min=0,second=0;  //时,分,秒void delay(u16 i)		  //延时函数{u16 z,j;for(z=0;z<i;z++){for(j=0;j<125;j++);}}void Timer0Int()		//定时器初始化{TMOD = 0x01;TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;ET0 = 1;EA = 1;TR0 = 1;}void display()			//显示定义{ P0 = 0x7f;			//0111 1111			  //共阴用P0口低电平不用上拉,												//低位到高位,这里是最后一位数码管P2 = ledduan[second%10];			   //得到秒的个位delay(1);P0 = 0xbf;			   //1011 1111			  P2 = ledduan[second/10];				//得到秒的十位delay(1);P0 = 0xdf;			   //1101 1111P2 = 0x40;								//  -delay(1);P0 = 0xef;			   //1110 1111P2 =ledduan[min%10];delay(1);P0=0xf7;			   //1111 0111P2 = ledduan[min/10];delay(1);P0 = 0xfb;			   //1111 1011P2 = 0x40;delay(1);P0 = 0xfd;			   //1111 1101P2 = ledduan[hour%10];delay(1);P0 = 0xfe;			   //1111 1110P2 = ledduan[hour/10];delay(1);}void key()		  //按键定义{if(key_stop==0){delay(1);			  //消抖延时if(key_stop==0){while(!key_stop);EA = 0;				  //关中断}}if(key_star==0){delay(1);while(!key_star);if(key_star==0){EA = 1;				  //开中断}}if(key_hour==0){delay(1);if(key_hour==0){while(!key_hour);hour++;if(hour==24){hour=0;}}}if(key_min==0){delay(1);if(key_min==0){while(!key_min);min++;if(min==60){min=0;} } } }void main()			   //执行{Timer0Int();while(1){key();display();}}void Timer0()interrupt 1 	//中断函数{u8 num;num++;if(num==20){second++;num = 0;if(second==60){second=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;min =0;second=0;}}}}}
```</textarea>

上一篇:2021-10-16 28byj-48步进电机实验


下一篇:2021年Java笔试题总,4年小Java的心路历程