![]() |
#2
林浩2011-01-12 19:11
就是要用 单片机中断系统, 定时/计数中断, 可以去 看看,
我这里也有 个时钟程序,可以轻松改成秒表,不懂的再问我 #include "REG52.h" unsigned char SHUMA[4]; unsigned int shizhong=0; unsigned char mabiao[10]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; unsigned char k=0; void delay() { int i,j; for(i=0;i<10;i++) for(j=0;j<10;j++); } void sjcf(void) { SHUMA[0]= shizhong/1000; SHUMA[1]= (shizhong- SHUMA[0]*1000)/100; SHUMA[2]= (shizhong- SHUMA[0]*1000- SHUMA[1]*100)/10; SHUMA[3]= shizhong % 10; } void display(void) { sjcf(); P0=mabiao[SHUMA[0]]; // 2 P1=0xfe; delay(); P0=mabiao[SHUMA[1]]; // 0 P1=0xfd; delay(); P0=mabiao[SHUMA[2]]; // 1 P1=0xfb; delay(); P0=mabiao[SHUMA[3]]; //0 P1=0xf7; delay(); } void cpu_initial(void) { EA=1; TMOD = 0x01; ET0=1; EX0=1; EX1=1; TR0=1; TH0=0x3c; TL0=0xb0; } void int0_int(void) interrupt 0 { TR0=0; } void timer0_int(void) interrupt 1 { k ++; TH0=0x3c; TL0=0xb0; if (k == 20) { k=0; shizhong++; } } void int1_int(void) interrupt 2 { TR0=1; } void main(void) { cpu_initial(); while(1) { display(); } } 这个是秒钟,你稍微改下TH0,TL0初值,就可以成秒表了 |
我刚入手单片机,在研究c51的秒表设计,要有两个按键控制开始于暂停,两个按键分别在p1.0和p1.1两个端口,但是现在还没有头绪,请问高手教教我!谢啦