资源描述:
《单片机的可调秒表时钟程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#includeunsignedchari=0,count,second,minute,hour,key;unsignedchartime[8];unsignedcharconstdofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//显示段码值-unsignedcharcodeseg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮//////////////////////////////////
2、//////////////////////sbitLED0=P1^0;sbitLED1=P1^1;sbitLED2=P1^2;sbitLED3=P1^3;sbitLED4=P1^4;sbitLED5=P1^5;sbitLED6=P1^6;sbitLED7=P1^7;sbitS1=P3^0;sbitS4=P3^1;sbitS7=P3^2;voidInit_Timer0(void){TMOD
3、=0x01;//使用模式1,16位定时器,使用"
4、"符号可以在使用多个定时器时不受影响TH0=0x00;//给定初值,这里使用
5、定时器最大值从0开始计数一直到65535溢出TL0=0x00;EA=1;//总中断打开ET0=1;//定时器中断打开TR0=1;//定时器开关打开}voidInit_Timer1(void){TMOD
6、=0x10;//使用模式1,16位定时器,使用"
7、"符号可以在使用多个定时器时不受影响TH1=0x00;//给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL1=0x00;EA=1;//总中断打开ET1=1;//定时器中断打开TR1=1;//定时器开关打开}voiddelay(unsignedinti
8、)//延时函数{while(i--);}voidkeyscan()//键盘扫描函数,使用行列反转扫描法{if(S1==0){LED2=0;while(S1==0);LED2=1;hour++;}if(S4==0){LED3=0;while(S4==0);LED3=1;minute++;}if(S7==0){LED4=0;while(S7==0);LED4=1;second++;}}voidmain(){hour=12;minute=35;Init_Timer0();Init_Timer1();time[2]=10;
9、time[5]=10;while(1){keyscan();//调用键盘扫描,}}voidTimer1_isr(void)interrupt3using1{TH1=0xF8;TL1=0x30;P0=dofly[time[i]];//取显示数据P2=seg[i];//取段码i++;if(i==8){i=0;LED0=~LED0;}}voidTimer0_isr(void)interrupt1using1{TH0=0xD8;TL0=0xF0;count++;if(count==100){count=0;second++
10、;LED7=~LED7;}if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==24){hour=0;}time[7]=second%10;time[6]=second/10;time[4]=minute%10;time[3]=minute/10;time[1]=hour%10;time[0]=hour/10;}