📄 +
字号:
C51 COMPILER V7.50 秒表 05/16/2010 11:32:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 秒表
OBJECT MODULE PLACED IN 秒表.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 秒表.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*-----------------------------------------------
2 名称:秒表
3 内容:1、程序目的:使用定时器学习秒表计时,中断0控制走表,中断1控制清零
4 2、硬件要求:数码管、晶振12M
5
6 ------------------------------------------------*/
7 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
8
9 code unsigned char tab[]=
10 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
11 //共阴数码管 0-9
12
13 unsigned char Dis_Shiwei; //定义十位
14 unsigned char Dis_Gewei; //定义个位
15 unsigned char S_Dis_Shiwei;//定义秒十位
16 unsigned char S_Dis_Gewei; //定义秒个位
17 unsigned char second,msecond;
18 /******************************************************************/
19 /* 函数声明 */
20 /******************************************************************/
21 void CLR(void);
22 /******************************************************************/
23 /* 延时函数 */
24 /******************************************************************/
25 void delay(unsigned int cnt)
26 {
27 1 while(--cnt);
28 1 }
29 /******************************************************************/
30 /* 主函数 */
31 /******************************************************************/
32 main()
33 {
34 1 EX0=1;//外部中断0设置
35 1 IT0=1;
36 1
37 1 EX1=1;//外部中断1设置
38 1 IT1=1;
39 1
40 1 TMOD |=0x01;//定时器设置 10ms in 12M crystal
41 1 TH0=0xd8;
42 1 TL0=0xf0;
43 1 ET0=1; //打开中断
44 1 TR0=0;
45 1
46 1 EA=1;
47 1 CLR();
48 1 while(1)
49 1 {
50 2 P0=S_Dis_Shiwei;//显示秒十位
51 2 P2=1;
52 2 delay(300); //短暂延时
53 2 P0=S_Dis_Gewei; //显示秒个位
54 2 P2=2;
55 2 delay(300);
C51 COMPILER V7.50 秒表 05/16/2010 11:32:45 PAGE 2
56 2 P0=0x40; //显示秒个位
57 2 P2=3;
58 2 delay(300);
59 2 P0=Dis_Shiwei; //显示十位
60 2 P2=4;
61 2 delay(300); //短暂延时
62 2 P0=Dis_Gewei; //显示个位
63 2 P2=5;
64 2 delay(300);
65 2 }
66 1 }
67 /******************************************************************/
68 /* 定时器中断函数 */
69 /******************************************************************/
70 void tim(void) interrupt 1 using 1
71 {
72 1
73 1 TH0=0xd8;//重新赋值
74 1 TL0=0xf0;
75 1 msecond++;
76 1 if (msecond==100)
77 1 {
78 2 msecond=0;
79 2 second++;//秒加1
80 2 if(second==100)
81 2 second=0;
82 2 S_Dis_Shiwei=tab[second/10];//十位显示值处理
83 2 S_Dis_Gewei=tab[second%10]; //个位显示处理
84 2
85 2 }
86 1 Dis_Shiwei=tab[msecond/10];//十位显示值处理
87 1 Dis_Gewei=tab[msecond%10]; //个位显示处理
88 1
89 1 }
90 /******************************************************************/
91 /* 外部中断函数 */
92 /******************************************************************/
93 void ISR_INT0(void) interrupt 0 using 1
94 {
95 1 TR0=!TR0; //利用外部中断打开和关闭定时器0 用于开始和停止计时
96 1
97 1 }
98 void ISR_INT1(void) interrupt 2 using 1
99 {
100 1 if(TR0==0)//停止时才可以清零
101 1 CLR();
102 1 }
103
104 void CLR(void)
105 {
106 1 second=0; //利用外部中断清零
107 1 msecond=0;
108 1 Dis_Shiwei=tab[msecond/10];//十位显示值处理
109 1 Dis_Gewei=tab[msecond%10]; //个位显示处理
110 1 S_Dis_Shiwei=tab[second/10];//十位显示值处理
111 1 S_Dis_Gewei=tab[second%10]; //个位显示处理
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 262 ----
CONSTANT SIZE = 10 ----
C51 COMPILER V7.50 秒表 05/16/2010 11:32:45 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -