期中考试
期中考试“秒表计时器”
制作一个秒表计时器,记录0-15秒时间。要求精准,可控制。
要求:
1.能够用按键控制秒表开始
2.能够用按键控制秒表停止
3.能够用按键控制秒表清零
4.使用定时器控制时间,要求精确。
5.使用1个数码管和多个按键实现功能。
第一步:先给电路图加两个按钮,如下图。
第二步:根据需求编写代码,并且运行。
1 #include<reg52.h>
2 #define LED P0
3 sbit key1 = P1^0; //开始,暂停按钮
4 sbit key2 = P1^1; //复位按钮
5 unsigned int i = 0;
6 unsigned char n = 0;
7 unsigned char NUM[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,\
8 0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
9 void INT_T0(void)
10 {
11 TMOD = 0X01; //打开定时器0,使用模式1定时
12 TH0 = 0XFC;
13 TL0 = 0X18; //初始值
14 EA = 1;//打开总开关
15 ET0 = 1;//打开中断T0开关
16 }
17 void main(void)
18 {
19 INT_T0();
20 TR0 = 0; //定时功能打开
21 LED = NUM[0];
22 while(1)
23 {
24 if(key1 ==0)
25 {
26 TR0 = 1; //判断按键按下 ,则打开定时计时功能
27 }
28 else
29 {
30 TR0 = 0; //判断按键松开,则断开计时功能
31 }
32 if(key2 == 0)
33 break; //跳出循环,计时归零
34 }
35 }
36 void time0(void) interrupt 1
37 {
38 TH0 = 0XFC;
39 TL0 = 0X18; //初始值
40 if(i < 1000)
41 {
42 i++;
43 }
44 else
45 {
46 P0 = ~NUM[n];
47 if(n<16)
48 {
49 n++;
50 }
51 else
52 {
53 n=0;
54 }
55 i = 0;
56 }
57 }