#include <reg51.h><br />#include <intrins.h><br />#define uchar unsigned char<br />#define uint unsigned int<br />sbit SEC=P1^7;<br />sbit MIN=P1^6;<br />sbit HOU=P1^5;<br />uchar code table[]= //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //<br />{0xc0,0xF9,0xA4,0xB0,0x99, //0 1 2 3 4 5 6 7 8 9 A B C D E F OFF - //<br />0x92,0x82,0xF8,0x80,0x90,<br />0x88,0x83,0xc6,0xa1,0x86,<br />0x8e,0xff,0xbf};<br /><br /><br />void delay(uint);<br />uchar econd[8]={16,16,16,16,16,16,16,16};<br />void display(unsigned char display_buffer[8]);<br />uchar flag=0,hour=12,minute=0,second=0;<br />void main()<br />{ <br /> uchar keyval=0,miao=0;<br /> EA=1;<br /> ET0=1;<br /> TMOD=0X11;<br /> TH0=(65535-50000)/256;<br /> TL0=(65535-50000)%256;<br /> TR0=1;<br />// econd[0]=1; //<br />// econd[1]=2; //显示hour<br /> econd[2]=17; //显示 -<br />// econd[3]=0; //<br />// econd[4]=0; //显示minute<br /> econd[5]=17; //显示 -<br />// econd[6]=0; //<br />// econd[7]=0; //显示second<br /><br /> while(1)<br /> {<br /> if(flag==20)<br /> {<br /> flag=0;<br /> second++;<br /> }<br /> if(second==60)<br /> {second=0;minute++;}<br /> if(minute==60)<br /> {minute=0;hour++;}<br /> if(SEC==0)<br /> {delay(5);if(SEC==0){while(!SEC);}second++;}<br /> if(MIN==0)<br /> {delay(5);if(MIN==0){while(!MIN);}minute++;}<br /> if(HOU==0)<br /> {delay(5);if(HOU==0){while(!HOU);}hour++;}<br /> /////////////////////////////////////////////////<br /> econd[6]=second/10;<br /> econd[7]=second%10;<br /> /////////////////////////////////////////////////<br /> /////////////////////////////////////////////////<br /> econd[3]=minute/10;<br /> econd[4]=minute%10;<br /> /////////////////////////////////////////////////<br /> /////////////////////////////////////////////////<br /> econd[0]=hour/10;<br /> econd[1]=hour%10;<br /> ///////////////////////////////////////////////// <br /> display(econd);<br /> }<br /> <br />}<br /><br />///////////////////////////////////////////////////////<br />void delay(uint z)<br />{<br /> uint x,y;<br /> for(x=z;x>0;x--)<br /> for(y=100;y>0;y--);<br />}<br /><br />//////////////////////////////////////////////////<br />void display(unsigned char display_buffer[8]) <br />{ <br /> uchar temp,i;<br /> temp=0x01;<br /> for(i=0;i<8;i++)<br /> {<br /> P2=temp;<br /> temp=_crol_(temp,1);<br /> P0=table[display_buffer]];<br /> delay(2);<br /> }<br />}<br />void timer0() interrupt 1<br />{<br /> TH0=(65535-50000)/256; //延时50ms<br /> TL0=(65535-50000)%256;<br /> flag++; <br />}<br />
|