?? dy1clock_v1.01.lst
字號:
C51 COMPILER V6.12 DY1CLOCK_V1_01 04/28/2009 20:48:57 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DY1CLOCK_V1_01
OBJECT MODULE PLACED IN DY1CLOCK_V1.01.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DY1CLOCK_V1.01.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**************************************************************************
2 * 標(biāo)題: 一位數(shù)碼時鐘
3 * 作者: 杜洋
4 * 日期: 2009.4.26
5 * 軟件: Keil C51
6 * 芯片: STC12C2052
7 * 說明: 用一位數(shù)碼LED管顯示時鐘
8 * 日志:
9 20090426 首次完成,代碼有一些笨重,不過基本的顯示和調(diào)時功能已經(jīng)實現(xiàn)。
10
11 **************************************************************************/
12
13 #include <reg51.h>
14 #include <intrins.h>
15 #define uchar unsigned char
16
17 sbit leda1 = P1 ^ 4;//
18 sbit leda2 = P1 ^ 3;//
19 sbit ledb1 = P1 ^ 1;//
20 sbit ledb2 = P1 ^ 0;//
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 ^ 6;//
28 sbit ledf2 = P1 ^ 7;//
29 sbit ledg1 = P1 ^ 5;//
30 sbit ledg2 = P1 ^ 2;//
31
32 sbit key1 = P1 ^ 4;//
33 sbit key2 = P1 ^ 3;//
34
35 uchar data sec = 0; // 秒計數(shù)器(00s-59s)
36 uchar data min = 1; // 分計數(shù)器(00m-59m)
37 uchar data hou = 2; // 時計數(shù)器)00h-23h)
38
39 uchar data cou = 0; // 軟計數(shù)器,對10ms時基信號累加到1s
40
41 uchar data key_v = 0; // 存儲鍵值
42 uchar data key_t = 0; // 按鍵掃描中臨時存儲鍵值
43
44 uchar data MENU = 0; //
45 uchar data SP_DIS = 100; //
46
47 #define SP2 1300 //數(shù)字之間的停留時間
48 #define SP3 10000 //一個循環(huán)顯示結(jié)束后的間隔時間
49 #define SP4 2000 //分隔點的顯示時間
50
51 /**********************************************************************************************/
52
53 void tiem0(void) interrupt 1 // T/C0中斷服務(wù)程序(產(chǎn)生10ms時基信號)
54 {
55 1 cou++; // 軟計數(shù)器加1
C51 COMPILER V6.12 DY1CLOCK_V1_01 04/28/2009 20:48:57 PAGE 2
56 1 if(cou > 99) // 計數(shù)值到100(1s)
57 1 {
58 2 cou = 0; // 軟計數(shù)器清零
59 2 sec++; // 秒計數(shù)器加1(進位10ms*100=1s)
60 2 if(sec > 59) // 秒計數(shù)值到60
61 2 {
62 3 sec = 0; // 秒計數(shù)器清零
63 3 min++; // 分計數(shù)器加1(進位60s=1m)
64 3 if(min > 59) // 分計數(shù)到60
65 3 {
66 4 min = 0; // 分計數(shù)器清零
67 4 hou++; // 時計數(shù)器加1(進位60m=1h)
68 4 if(hou > 23) // 時計數(shù)到23
69 4 hou = 0; // 時計數(shù)器清零
70 4 }
71 3 }
72 2 }
73 1 TH0 = 0xd8; // 重置定時常數(shù)
74 1 TL0 = 0xf0;
75 1 }
76 /**********************************************************************************************/
77 void delay_ms(unsigned int a){//-延時函數(shù) 1MS/次
78 1 unsigned char i;
79 1 while( --a != 0){
80 2 for(i = 0; i < 125; i++); //一個 ; 表示空語句,CPU空轉(zhuǎn)。
81 2 } //i 從0加到125,CPU大概就耗時1毫秒
82 1 }
83
84 void delay_P1(void){ //
85 1 delay_ms(SP_DIS);
86 1 }
87 void delay_P2(void){ //
88 1 delay_ms(SP2);
89 1 }
90 /**********************************************************************************************/
91
92 void displayN(void){ //
93 1 ledc2=1;delay_P1();ledd2=1;delay_P1();
94 1 ledc1=1;delay_P1();ledd1=1;delay_P1();
95 1 lede2=1;delay_P1();ledg2=1;delay_P1();
96 1 lede1=1;delay_P1();ledg1=1;delay_P1();
97 1 ledb2=1;delay_P1();
98 1 ledb1=1;delay_P1();ledf2=1;delay_P1();
99 1 leda2=1;delay_P1();ledf1=1;delay_P1();
100 1 leda1=1;
101 1 }
102 void displayN2(void){ //
103 1 ledc2=1;ledd2=1;
104 1 ledc1=1;ledd1=1;
105 1 lede2=1;ledg2=1;
106 1 lede1=1;ledg1=1;
107 1 ledb2=1;ledb1=1;ledf2=1;
108 1 leda2=1;ledf1=1;leda1=1;
109 1 }
110
111 void display1(void){ //筆畫1
112 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
113 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
114 1 leda1=1;leda2=1;
115 1 ledd1=1;ledd2=1;
116 1 lede1=1;lede2=1;
117 1 ledf1=1;ledf2=1;
C51 COMPILER V6.12 DY1CLOCK_V1_01 04/28/2009 20:48:57 PAGE 3
118 1 ledg1=1;ledg2=1;
119 1 }
120 void display2(void){ //
121 1 leda1=0;delay_P1();leda2=0;delay_P1();
122 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
123 1 ledg2=0;delay_P1();ledg1=0;delay_P1();
124 1 lede1=0;delay_P1();lede2=0;delay_P1();
125 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
126 1 ledc1=1;ledc2=1;
127 1 ledf1=1;ledf2=1;
128 1 }
129 void display3(void){ //
130 1 leda1=0;delay_P1();leda2=0;delay_P1();
131 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
132 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
133 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
134 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
135 1 lede1=1;lede2=1;
136 1 ledf1=1;ledf2=1;
137 1 }
138 void display4(void){ //
139 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
140 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
141 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
142 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
143 1 leda1=1;leda2=1;
144 1 ledd1=1;ledd2=1;
145 1 lede1=1;lede2=1;
146 1 }
147 void display5(void){ //
148 1 leda2=0;delay_P1();leda1=0;delay_P1();
149 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
150 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
151 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
152 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
153 1 ledb1=1;ledb2=1;
154 1 lede1=1;lede2=1;
155 1 }
156 void display6(void){ //
157 1 leda2=0;delay_P1();leda1=0;delay_P1();
158 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
159 1 lede1=0;delay_P1();lede2=0;delay_P1();
160 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
161 1 ledc2=0;delay_P1();ledc1=0;delay_P1();
162 1 ledg2=0;delay_P1();ledg1=0;delay_P1();
163 1 ledb1=1;ledb2=1;
164 1 }
165 void display7(void){ //
166 1 leda1=0;delay_P1();leda2=0;delay_P1();
167 1 ledb1=0;delay_P1();ledb2=0;delay_P1();
168 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
169 1 ledd1=1;ledd2=1;
170 1 lede1=1;lede2=1;
171 1 ledf1=1;ledf2=1;
172 1 ledg1=1;ledg2=1;
173 1 }
174 void display8(void){ //
175 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
176 1 leda2=0;delay_P1();leda1=0;delay_P1();
177 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
178 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
179 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
C51 COMPILER V6.12 DY1CLOCK_V1_01 04/28/2009 20:48:57 PAGE 4
180 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
181 1 lede2=0;delay_P1();lede1=0;delay_P1();
182 1 }
183 void display9(void){ //
184 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
185 1 leda2=0;delay_P1();leda1=0;delay_P1();
186 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
187 1 ledg1=0;delay_P1();ledg2=0;delay_P1();
188 1 ledc1=0;delay_P1();ledc2=0;delay_P1();
189 1 ledd2=0;delay_P1();ledd1=0;delay_P1();
190 1 lede1=1;lede2=1;
191 1 }
192 void display0(void){ //
193 1 ledf1=0;delay_P1();ledf2=0;delay_P1();
194 1 lede1=0;delay_P1();lede2=0;delay_P1();
195 1 ledd1=0;delay_P1();ledd2=0;delay_P1();
196 1 ledc2=0;delay_P1();ledc1=0;delay_P1();
197 1 ledb2=0;delay_P1();ledb1=0;delay_P1();
198 1 leda2=0;delay_P1();leda1=0;delay_P1();
199 1 ledg1=1;ledg2=1;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -