《秒表程序.doc》由会员分享,可在线阅读,更多相关《秒表程序.doc(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除 #include#define uint unsigned int#define uchar unsigned charuchar ge,shi,bai,qian,ge1,shi1,bai1,qian1;uint temp,shu,i;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit key4=P35;void delay(uint m) /延时函数 uint n; f
2、or(;m0;m-) for(n=124;n0;n-);void display1() /动态扫描显示函数 P2=0x1f; P0=tableqian; delay(1); P2=0x2f; P0=tablebai&0x7f; delay(1); P2=0x4f; P0=tableshi; delay(1); P2=0x8f; P0=tablege; delay(1);void display2( ) /暂停显示函数 qian1=qian; bai1=bai; shi1=shi; ge1=ge;P2=0x1f;P0=tableqian1;delay(1);P2=0x2f;P0=tablebai
3、1&0x7f;delay(1);P2=0x4f;P0=tableshi1;delay(1);P2=0x8f;P0=tablege1;delay(1); void init()/初始化程序 函数 temp=0; TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=0; void data_change1() /各位显示段运算处理函数 temp=shu; qian=temp/1000; bai=temp/100%10; shi=temp/10%10; ge=temp%10; display1();voi
4、d Mode1(uchar case_1) /模式1控制程序 uchar count; while(case_1) if(key1=0) /由按键1控制定时器开始与停止循环控制 delay(10); count+; TR0=1; temp=shu; if(key2=0) /由按键2控制清零 delay(10); shu=0; temp=shu; TR0=0; count=0; if(count!=0) switch(count%2) case 0: TR0=1;break; case 1: TR0=0;break; data_change1();void Mode2(uchar case_2)
5、/模式2控制程序 uchar k1; while(case_2) if(key1=0) /按键1控制开始/停止 delay(10); key1=1; if(key1=0) k1+; if(k1=2) k1=0; switch(k1) case 0: TR0=0;break; case 1: TR0=1;break; if(key2=0&TR0=0) shu=0; else if(key2=0&TR0=1) /按键2控制暂停显示时间5秒 delay(10); while(qian*10+bai)-(qian1*10+bai1)5) display2(); temp=shu; TR0=1; dis
6、play1(); data_change1(); void timer0() interrupt 1 using 3 /外部中断 溢出处理 TH0=(65536-10000)/256; TL0=(65536-10000)%256; shu+; if(shu=9999) shu=0; void main() /主函数 uchar scan_case1,scan_case2; init(); /初始化子程序 display1(); delay(1); if(key3=0) /按键3选择模式1及控制 delay(10); scan_case1=1; scan_case2=0; Mode1(scan_case1); if(key4=0) /按键4选择模式2及控制 delay(10);scan_case2=1; scan_case1=0; Mode2(scan_case2);【精品文档】第 3 页