📄 51
字号:
C51 COMPILER V8.18 EX66 01/04/2010 13:05:34 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE EX66
OBJECT MODULE PLACED IN ex66.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex66.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //数码时钟设计
2 #include<reg52.h> // 包含51单片机寄存器定义的头文件
3 unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //control shape
4 unsigned char port[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
5 unsigned char int_time ; //中断次数计数变量
6 unsigned char second; //秒计数变量
7 unsigned char minute; //分钟计数变量
8 unsigned char hour; //小时计数变量
9
10 /////////////////////////////////////////////////////
11
12 void delay(void) //延时函数,延时约0.6ms
13 {
14 1 unsigned char j;
15 1 for(j=0;j<180;j++)
16 1 ;
17 1 }
18
19 /******************************************************************
20 函数功能:显示秒的子程序
21 入口参数:s
22 ********************************************************************/
23 void DisplaySecond(unsigned char s)
24 {
25 1 P2=0xbf; //P2.6引脚输出低电平, DS6点亮
26 1 P0=Tab[s/10]; //显示十位
27 1 delay();
28 1 delay();
29 1 delay();
30 1
31 1 P2=0x7f; //P2.7引脚输出低电平, DS7点亮
32 1 P0=Tab[s%10]; //显示个位
33 1 delay();
34 1 delay();
35 1 delay();
36 1
37 1 P2=0xff; //关闭所有数码管
38 1 P0=0xff;
39 1 delay();
40 1 delay();
41 1 delay();
42 1
43 1 }
44
45 /******************************************************************
46 函数功能:显示分钟的子程序
47 入口参数:m
48 ********************************************************************/
49 void DisplayMinute(unsigned char m)
50 {
51 1 P2=0xf7; // P2.3引脚输出低电平, DS3点亮
52 1 P0=Tab[m/10];//显示个位
53 1 delay();
54 1 delay();
55 1 delay();
C51 COMPILER V8.18 EX66 01/04/2010 13:05:34 PAGE 2
56 1 delay();
57 1 P2=0xef; // P2.4引脚输出低电平, DS4点亮
58 1 P0=Tab[m%10];
59 1 delay();
60 1 delay();
61 1 delay();
62 1
63 1 P2=0xdf; //P2.5引脚输出低电平, DS5点亮
64 1 P0=0xbf; //分隔符“-”的段码
65 1 delay();
66 1 delay();
67 1 delay();
68 1
69 1 P2=0xff; //关闭所有数码管
70 1 P0=0xff;
71 1 delay();
72 1 delay();
73 1 delay();
74 1
75 1
76 1 }
77 /******************************************************************
78 函数功能:显示小时的子程序
79 入口参数:h
80 ********************************************************************/
81 void DisplayHour(unsigned char h)
82 {
83 1
84 1 P2=0xfe; //P2.0引脚输出低电平, DS0点亮
85 1 P0=Tab[h/10]; //显示十位
86 1 delay();
87 1 delay();
88 1 delay();
89 1
90 1 P2=0xfd; //P2.1引脚输出低电平, DS1点亮
91 1 P0=Tab[h%10]; //显示个位
92 1 delay();
93 1 delay();
94 1 delay();
95 1
96 1 P2=0xfb; //P2.2引脚输出低电平, DS2点亮
97 1 P0=0xbf; //分隔符“-”的段码
98 1 delay();
99 1 delay();
100 1 delay();
101 1
102 1 P2=0xff; //关闭所有数码管
103 1 P0=0xff;
104 1 delay();
105 1 delay();
106 1 delay();
107 1
108 1 }
109 /******************************************************************
110 函数功能:主函数
111 ********************************************************************/
112
113 void main(void)
114 {
115 1
116 1 TMOD=0x01; //使用定时器T0
117 1 EA=1; //开中断总允许
C51 COMPILER V8.18 EX66 01/04/2010 13:05:34 PAGE 3
118 1 ET0=1; //允许T0中断
119 1 TH0=(65536-46083)/256; //定时器高八位赋初值
120 1 TL0=(65536-46083)%256; //定时器低八位赋初值
121 1 TR0=1;
122 1 int_time=0; //中断计数变量初始化
123 1 second=0; //秒计数变量初始化
124 1 minute=0; //分钟计数变量初始化
125 1 hour=0; //小时计数变量初始化
126 1
127 1 while(1)
128 1 {
129 2 DisplaySecond(second); //调用秒显示子程序
130 2 delay();
131 2 DisplayMinute(minute); //调用分钟显示子程序
132 2 delay();
133 2 DisplayHour(hour);
134 2 delay();
135 2 }
136 1 }
137
138 /******************************************************************
139 函数功能:定时器T0的中断服务子程序
140 ********************************************************************/
141 void interserve(void ) interrupt 1 using 1 //using Time0
142 {
143 1 int_time++;
144 1 if(int_time==20)
145 1 {
146 2 int_time=0; //中断计数变量清0
147 2 second++; //秒计数变量加1
148 2 }
149 1 if(second==60)
150 1 {
151 2 second=0; //如果秒计满60,将秒计数变量清0
152 2 minute++; //分钟计数变量加1
153 2 }
154 1 if(minute==60)
155 1 {
156 2 minute=0; //如果分钟计满60,将分钟计数变量清0
157 2 hour++; //小时计数变量加1
158 2 }
159 1 if(hour==24)
160 1 {
161 2 hour=0; //如果小时计满24,将小时计数变量清0
162 2 }
163 1
164 1 TH0=(65536-46083)/256; //定时器重新赋初值
165 1 TL0=(65536-46083)%256;
166 1
167 1
168 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 22 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V8.18 EX66 01/04/2010 13:05:34 PAGE 4
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -