📄 dy1clock.lst
字号:
C51 COMPILER V6.12 DY1CLOCK 04/27/2009 00:06:27 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DY1CLOCK
OBJECT MODULE PLACED IN DY1CLOCK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DY1CLOCK.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**************************************************************************
2 * 标题: 一位数码时钟
3 * 作者: 杜洋
4 * 日期: 2009.4.26
5 * 软件: Keil C51
6 * 芯片: STC12C2052
7 * 说明: 用一位数码LED管显示时钟
8 * 日志:
9 20090426 首次完成,代码有一些笨重,不过基本的显示和调时功能已经实现。
10
11 **************************************************************************/
12
13 #include <reg51.h>
14 #include <intrins.h>
15 #define uchar unsigned char
16
17 sbit leda1 = P1 ^ 7;//
18 sbit leda2 = P1 ^ 6;//
19 sbit ledb1 = P1 ^ 4;//
20 sbit ledb2 = P1 ^ 2;//
21 sbit ledc1 = P3 ^ 5;//
22 sbit ledc2 = P3 ^ 4;//
23 sbit ledd1 = P3 ^ 2;//
24 sbit ledd2 = P3 ^ 3;//
25 sbit lede1 = P3 ^ 0;//
26 sbit lede2 = P3 ^ 1;//
27 sbit ledf1 = P1 ^ 3;//
28 sbit ledf2 = P3 ^ 7;//
29 sbit ledg1 = P1 ^ 5;//
30 sbit ledg2 = P1 ^ 1;//
31 sbit ledh = P1 ^ 0;//
32
33 sbit key1 = P1 ^ 7;//
34 sbit key2 = P1 ^ 6;//
35
36 sbit LEDA = P1;//
37 sbit LEDB = P3;//
38
39 uchar data sec = 0; // 秒计数器(00s-59s)
40 uchar data min = 1; // 分计数器(00m-59m)
41 uchar data hou = 2; // 时计数器)00h-23h)
42
43 uchar data cou = 0; // 软计数器,对10ms时基信号累加到1s
44
45 uchar data key_v = 0; // 存储键值
46 uchar data key_t = 0; // 按键扫描中临时存储键值
47
48 uchar data MENU = 0; //
49 uchar data SP_DIS = 100; //
50 /**********************************************************************************************/
51
52 void tiem0(void) interrupt 1 // T/C0中断服务程序(产生10ms时基信号)
53 {
54 1 cou++; // 软计数器加1
55 1 if(cou > 99) // 计数值到100(1s)
C51 COMPILER V6.12 DY1CLOCK 04/27/2009 00:06:27 PAGE 2
56 1 {
57 2 cou = 0; // 软计数器清零
58 2 sec++; // 秒计数器加1(进位10ms*100=1s)
59 2 if(sec > 59) // 秒计数值到60
60 2 {
61 3 sec = 0; // 秒计数器清零
62 3 min++; // 分计数器加1(进位60s=1m)
63 3 if(min > 59) // 分计数到60
64 3 {
65 4 min = 0; // 分计数器清零
66 4 hou++; // 时计数器加1(进位60m=1h)
67 4 if(hou > 23) // 时计数到23
68 4 hou = 0; // 时计数器清零
69 4 }
70 3 }
71 2 }
72 1 TH0 = 0xd8; // 重置定时常数
73 1 TL0 = 0xf0;
74 1 }
75 /**********************************************************************************************/
76 void delay_ms(unsigned int a){//-延时函数 1MS/次
77 1 unsigned char i;
78 1 while( --a != 0){
79 2 for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
80 2 } //i 从0加到125,CPU大概就耗时1毫秒
81 1 }
82
83 void delay_P1(void){ //
84 1 delay_ms(SP_DIS);
85 1 }
86 void delay_P2(void){ //
87 1 delay_ms(1300);
88 1 }
89 /**********************************************************************************************/
90
91 void displayN(void){ //
92 1 ledc2=1;delay_P1();ledd2=1;delay_P1();
93 1 ledc1=1;delay_P1();ledd1=1;delay_P1();
94 1 lede2=1;delay_P1();ledg2=1;delay_P1();
95 1 lede1=1;delay_P1();ledg1=1;delay_P1();
96 1 ledb2=1;delay_P1();
97 1 ledb1=1;delay_P1();ledf2=1;delay_P1();
98 1 leda2=1;delay_P1();ledf1=1;delay_P1();
99 1 leda1=1;
100 1 }
101 void displayN2(void){ //
102 1 ledc2=1;ledd2=1;
103 1 ledc1=1;ledd1=1;
104 1 lede2=1;ledg2=1;
105 1 lede1=1;ledg1=1;
106 1 ledb2=1;ledb1=1;ledf2=1;
107 1 leda2=1;ledf1=1;leda1=1;
108 1 }
109
110 void display1(void){ //笔画1
111 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
112 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
113 1 leda1=1;leda2=1;
114 1 ledd1=1;ledd2=1;
115 1 lede1=1;lede2=1;
116 1 ledf1=1;ledf2=1;
117 1 ledg1=1;ledg2=1;
C51 COMPILER V6.12 DY1CLOCK 04/27/2009 00:06:27 PAGE 3
118 1 }
119 void display2(void){ //
120 1 leda1=0;delay_P1();leda2=0;delay_P1();
121 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
122 1 ledg2=0;delay_P1();ledg1=0;delay_P1();
123 1 lede1=0;delay_P1();lede2=0;delay_P1();
124 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
125 1 ledc1=1;ledc2=1;
126 1 ledf1=1;ledf2=1;
127 1 }
128 void display3(void){ //
129 1 leda1=0;delay_P1();leda2=0;delay_P1();
130 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
131 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
132 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
133 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
134 1 lede1=1;lede2=1;
135 1 ledf1=1;ledf2=1;
136 1 }
137 void display4(void){ //
138 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
139 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
140 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
141 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
142 1 leda1=1;leda2=1;
143 1 ledd1=1;ledd2=1;
144 1 lede1=1;lede2=1;
145 1 }
146 void display5(void){ //
147 1 leda2=0;delay_P1();leda1=0;delay_P1();
148 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
149 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
150 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
151 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
152 1 ledb1=1;ledb2=1;
153 1 lede1=1;lede2=1;
154 1 }
155 void display6(void){ //
156 1 leda2=0;delay_P1();leda1=0;delay_P1();
157 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
158 1 lede1=0;delay_P1();lede2=0;delay_P1();
159 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
160 1 ledc2=0;delay_P1();ledc1=0;delay_P1();
161 1 ledg2=0;delay_P1();ledg1=0;delay_P1();
162 1 ledb1=1;ledb2=1;
163 1 }
164 void display7(void){ //
165 1 leda1=0;delay_P1();leda2=0;delay_P1();
166 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
167 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
168 1 ledd1=1;ledd2=1;
169 1 lede1=1;lede2=1;
170 1 ledf1=1;ledf2=1;
171 1 ledg1=1;ledg2=1;
172 1 }
173 void display8(void){ //
174 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
175 1 leda2=0;delay_P1();leda1=0;delay_P1();
176 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
177 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
178 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
179 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
C51 COMPILER V6.12 DY1CLOCK 04/27/2009 00:06:27 PAGE 4
180 1 lede2=0;delay_P1();lede1=0;delay_P1();
181 1 }
182 void display9(void){ //
183 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
184 1 leda2=0;delay_P1();leda1=0;delay_P1();
185 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
186 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
187 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
188 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
189 1 lede1=1;lede2=1;
190 1 }
191 void display0(void){ //
192 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
193 1 lede1=0;delay_P1();lede2=0;delay_P1();
194 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
195 1 ledc2=0;delay_P1();ledc1=0;delay_P1();
196 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
197 1 leda2=0;delay_P1();leda1=0;delay_P1();
198 1 ledg1=1;ledg2=1;
199 1 }
200 /**********************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -