m361562990 m361562990
http://www.btlibrary.com/
关注数: 37 粉丝数: 232 发帖数: 6,234 关注贴吧数: 54
能帮忙解释一个秒表的程序吗 刚刚问问题的题目不对,我重发一次。 我想做一个秒表,百度了程序,但是看不懂,,有大神能帮忙解释一下(关键代码解释一下就好了)吗? #include<reg52.h> #include "nokia_5110.h" #define uint unsigned int #define uchar unsigned char sbit key0=P2^0; sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; sbit key4=P2^4; int a=0,b=0,c=0,d=0,e=0,f=0; uchar show1[7]={0}; uchar show2[7]={0}; uchar show3[7]={0}; uchar show4[7]={0}; uchar show5[7]={0}; uint num=0; uchar flag=0; void show() { LCD_WriteNum(30,0,show1[0]); LCD_WriteNum(20,0,show2[0]); LCD_WriteNum(15,0,show3[0]); LCD_WriteNum(5,0,show4[0]); LCD_WriteNum(0,0,show5[0]); LCD_WriteNum(75,0,show1[1]); LCD_WriteNum(65,0,show2[1]); LCD_WriteNum(60,0,show3[1]); LCD_WriteNum(50,0,show4[1]); LCD_WriteNum(45,0,show5[1]); LCD_WriteNum(30,2,show1[2]); LCD_WriteNum(20,2,show2[2]); LCD_WriteNum(15,2,show3[2]); LCD_WriteNum(5,2,show4[2]); LCD_WriteNum(0,2,show5[2]); LCD_WriteNum(75,2,show1[3]); LCD_WriteNum(65,2,show2[3]); LCD_WriteNum(60,2,show3[3]); LCD_WriteNum(50,2,show4[3]); LCD_WriteNum(45,2,show5[3]); LCD_WriteNum(30,4,show1[4]); LCD_WriteNum(20,4,show2[4]); LCD_WriteNum(15,4,show3[4]); LCD_WriteNum(5,4,show4[4]); LCD_WriteNum(0,4,show5[4]); LCD_WriteNum(75,4,show1[5]); LCD_WriteNum(65,4,show2[5]); LCD_WriteNum(60,4,show3[5]); LCD_WriteNum(50,4,show4[5]); LCD_WriteNum(45,4,show5[5]); LCD_write_char(70,0,'.'); LCD_write_char(10,0,'.'); LCD_write_char(55,0,'.'); LCD_write_char(25,0,'.'); LCD_write_char(10,2,'.'); LCD_write_char(25,2,'.'); LCD_write_char(70,2,'.'); LCD_write_char(55,2,'.'); LCD_write_char(25,4,'.'); LCD_write_char(10,4,'.'); LCD_write_char(70,4,'.'); LCD_write_char(55,4,'.'); } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void qingling() { uint i; for(i=0;i<7;i++) { show1[i]=0; show2[i]=0; show3[i]=0; show4[i]=0; show5[i]=0; } } void time0_init() { TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; ET0=0; TR0=1; EA=1; } void keyscan() { if(key0==0)//开始 { delayms(10); if(key0==0) { ET0=1; flag=0; // num=0; // flag=0; // qingling(); while(!key0); } } if(key1==0)//暂停 { delayms(10); if(key1==0) { ET0=0; flag=0; while(!key1); } } if(key2==0)//清零 { delayms(10); if(key2==0) { ET0=0; b=0; c=0; d=0; e=0; f=0; // num=0; // flag=0; // qingling(); while(!key2); } } if(key3==0)//记录 { delayms(10); if(key3==0) { show1[num]=b; show2[num]=c; show3[num]=d; show4[num]=e; show5[num]=f; num+=1; while(!key3); } } if(key4==0)//回显 { delayms(10); if(key4==0) { flag=1; LCD_clear(); while(!key4); } } } void main() { LCD_init(); //初始化液晶 LCD_clear();//清屏 time0_init(); while(1) { keyscan(); while(flag) { show(); if(key2==0) { delayms(10); if(key2==0) { ET0=0; b=0; c=0; d=0; e=0; f=0; num=0; flag=0; qingling(); LCD_clear(); while(!key2); break; } } } LCD_WriteNum(52,5,b); LCD_WriteNum(42,5,c); LCD_WriteNum(36,5,d); LCD_WriteNum(26,5,e); LCD_WriteNum(20,5,f); LCD_write_char(47,5,'.'); LCD_write_char(31,5,'.'); LCD_write_chinese_string(0,0,12,7,0,0); LCD_write_chinese_string(20,2,12,3,7,0); } } void timer_0() interrupt 1 { TH0=(65536-5000)/256; TL0=(65536-5000)%256; a++; if(a==20) {a=0;b++;} if(b==10) {b=0;c++;} if(c==10) {c=0;d++;} if(d==6) {d=0;c=0;e++;} if(e==10) {e=0;f++;} }
急求大神帮忙分析一个秒表的代码 急求大神帮忙分析一个秒表的代码 真的非常谢谢。 #include<reg52.h> #include "nokia_5110.h" #define uint unsigned int #define uchar unsigned char sbit key0=P2^0; sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; sbit key4=P2^4; int a=0,b=0,c=0,d=0,e=0,f=0; uchar show1[7]={0}; uchar show2[7]={0}; uchar show3[7]={0}; uchar show4[7]={0}; uchar show5[7]={0}; uint num=0; uchar flag=0; void show() { LCD_WriteNum(30,0,show1[0]); LCD_WriteNum(20,0,show2[0]); LCD_WriteNum(15,0,show3[0]); LCD_WriteNum(5,0,show4[0]); LCD_WriteNum(0,0,show5[0]); LCD_WriteNum(75,0,show1[1]); LCD_WriteNum(65,0,show2[1]); LCD_WriteNum(60,0,show3[1]); LCD_WriteNum(50,0,show4[1]); LCD_WriteNum(45,0,show5[1]); LCD_WriteNum(30,2,show1[2]); LCD_WriteNum(20,2,show2[2]); LCD_WriteNum(15,2,show3[2]); LCD_WriteNum(5,2,show4[2]); LCD_WriteNum(0,2,show5[2]); LCD_WriteNum(75,2,show1[3]); LCD_WriteNum(65,2,show2[3]); LCD_WriteNum(60,2,show3[3]); LCD_WriteNum(50,2,show4[3]); LCD_WriteNum(45,2,show5[3]); LCD_WriteNum(30,4,show1[4]); LCD_WriteNum(20,4,show2[4]); LCD_WriteNum(15,4,show3[4]); LCD_WriteNum(5,4,show4[4]); LCD_WriteNum(0,4,show5[4]); LCD_WriteNum(75,4,show1[5]); LCD_WriteNum(65,4,show2[5]); LCD_WriteNum(60,4,show3[5]); LCD_WriteNum(50,4,show4[5]); LCD_WriteNum(45,4,show5[5]); LCD_write_char(70,0,'.'); LCD_write_char(10,0,'.'); LCD_write_char(55,0,'.'); LCD_write_char(25,0,'.'); LCD_write_char(10,2,'.'); LCD_write_char(25,2,'.'); LCD_write_char(70,2,'.'); LCD_write_char(55,2,'.'); LCD_write_char(25,4,'.'); LCD_write_char(10,4,'.'); LCD_write_char(70,4,'.'); LCD_write_char(55,4,'.'); } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void qingling() { uint i; for(i=0;i<7;i++) { show1[i]=0; show2[i]=0; show3[i]=0; show4[i]=0; show5[i]=0; } } void time0_init() { TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; ET0=0; TR0=1; EA=1; } void keyscan() { if(key0==0)//开始 { delayms(10); if(key0==0) { ET0=1; flag=0; // num=0; // flag=0; // qingling(); while(!key0); } } if(key1==0)//暂停 { delayms(10); if(key1==0) { ET0=0; flag=0; while(!key1); } } if(key2==0)//清零 { delayms(10); if(key2==0) { ET0=0; b=0; c=0; d=0; e=0; f=0; // num=0; // flag=0; // qingling(); while(!key2); } } if(key3==0)//记录 { delayms(10); if(key3==0) { show1[num]=b; show2[num]=c; show3[num]=d; show4[num]=e; show5[num]=f; num+=1; while(!key3); } } if(key4==0)//回显 { delayms(10); if(key4==0) { flag=1; LCD_clear(); while(!key4); } } } void main() { LCD_init(); //初始化液晶 LCD_clear();//清屏 time0_init(); while(1) { keyscan(); while(flag) { show(); if(key2==0) { delayms(10); if(key2==0) { ET0=0; b=0; c=0; d=0; e=0; f=0; num=0; flag=0; qingling(); LCD_clear(); while(!key2); break; } } } LCD_WriteNum(52,5,b); LCD_WriteNum(42,5,c); LCD_WriteNum(36,5,d); LCD_WriteNum(26,5,e); LCD_WriteNum(20,5,f); LCD_write_char(47,5,'.'); LCD_write_char(31,5,'.'); LCD_write_chinese_string(0,0,12,7,0,0); LCD_write_chinese_string(20,2,12,3,7,0); } } void timer_0() interrupt 1 { TH0=(65536-5000)/256; TL0=(65536-5000)%256; a++; if(a==20) {a=0;b++;} if(b==10) {b=0;c++;} if(c==10) {c=0;d++;} if(d==6) {d=0;c=0;e++;} if(e==10) {e=0;f++;} }
1 下一页