📄 clockdingshi.lst
字号:
C51 COMPILER V8.02 CLOCKDINGSHI 06/22/2010 11:22:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CLOCKDINGSHI
OBJECT MODULE PLACED IN clockdingshi.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE clockdingshi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //该例程为数码管显示可调钟表,用到TX-1C开发板中矩阵键盘的上三排按键。
2 //若要更改时钟初始值(即时钟校准),可先按下矩阵键盘中的S16键(第三排第三列),此时时钟会暂停。
3 //然后按S6---S15中的键修改矫正当前值,S6--S15分别先后对应数字0到9。
4 //矫正完后,按下S17(第三排最后一个),时钟可继续工作。
5 //注意晶振需为11.0592M。
6 //若为其他数值晶振,请合理改变TH0与TL0参数值,否则计时会有很大误差 。
7
8 #include<reg51.h>
9
10 #define uchar unsigned char
11
12 sbit dula=P2^6;
13 sbit wela=P2^7;
14 sbit beep=P2^3;
15 unsigned char j,k,a1,a0,b1,b0,c1,c0,s,f,m,key=10,temp,qq;
16 uchar shi20,shi10,fen20,fen10,miao20,miao10,ok=1,wei,dingshi,change,yidingshi;
17 uchar baoshi,baoshijieshu;
18 unsigned int pp;
19 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
20 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
21
22 void delay(unsigned char i)
23 {
24 1 for(j=i;j>0;j--)
25 1 for(k=125;k>0;k--);
26 1 }
27 void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1)
28 {
29 1 dula=0;
30 1 P0=table[shi2];
31 1 dula=1;
32 1 dula=0;
33 1
34 1 wela=0;
35 1 P0=0xfe;
36 1 wela=1;
37 1 wela=0;
38 1 delay(5);
39 1
40 1 P0=table[shi1]|0x80;
41 1 dula=1;
42 1 dula=0;
43 1
44 1 P0=0xfd;
45 1 wela=1;
46 1 wela=0;
47 1 delay(5);
48 1
49 1 P0=table[fen2];
50 1 dula=1;
51 1 dula=0;
52 1
53 1 P0=0xfb;
54 1 wela=1;
55 1 wela=0;
C51 COMPILER V8.02 CLOCKDINGSHI 06/22/2010 11:22:43 PAGE 2
56 1 delay(5);
57 1
58 1 P0=table[fen1]|0x80;
59 1 dula=1;
60 1 dula=0;
61 1
62 1 P0=0xf7;
63 1 wela=1;
64 1 wela=0;
65 1 delay(5);
66 1
67 1 P0=table[miao2];
68 1 dula=1;
69 1 dula=0;
70 1
71 1 P0=0xef;
72 1 wela=1;
73 1 wela=0;
74 1 delay(5);
75 1
76 1 P0=table[miao1];
77 1 dula=1;
78 1 dula=0;
79 1
80 1 P0=0xdf;
81 1 wela=1;
82 1 wela=0;
83 1 delay(5);
84 1 }
85
86 void keyscan0()
87 {
88 1 P3=0xfb;
89 1 temp=P3;
90 1 temp=temp&0xf0;
91 1 if(temp!=0xf0)
92 1 {
93 2 delay(10);
94 2 if(temp!=0xf0)
95 2 {
96 3 temp=P3;
97 3 switch(temp)
98 3 {
99 4 case 0xbb:
100 4 ok=0;
101 4 change=1;
102 4 break;
103 4
104 4 case 0x7b:
105 4 ok=1;
106 4 change=0;
107 4 dingshi=0;
108 4 break;
109 4 }
110 3
111 3 }
112 2 }
113 1 P3=0xf7;
114 1 temp=P3;
115 1 temp=temp&0xf0;
116 1 if(temp!=0xf0)
117 1 {
C51 COMPILER V8.02 CLOCKDINGSHI 06/22/2010 11:22:43 PAGE 3
118 2 delay(10);
119 2 if(temp!=0xf0)
120 2 {
121 3 temp=P3;
122 3 switch(temp)
123 3 {
124 4 case 0xe7:
125 4 ok=0;
126 4 dingshi=1;
127 4 break;
128 4 case 0xd7:
129 4 yidingshi=0; //取消定时
130 4 break;
131 4 }
132 3
133 3 }
134 2 }
135 1 }
136
137
138 void keyscan()
139 {
140 1 {
141 2 P3=0xfe;
142 2 temp=P3;
143 2 temp=temp&0xf0;
144 2 if(temp!=0xf0)
145 2 {
146 3 delay(10);
147 3 if(temp!=0xf0)
148 3 {
149 4 temp=P3;
150 4 switch(temp)
151 4 {
152 5 case 0xee:
153 5 key=0;
154 5 wei++;
155 5 break;
156 5
157 5 case 0xde:
158 5 key=1;
159 5 wei++;
160 5 break;
161 5
162 5 case 0xbe:
163 5 key=2;
164 5 wei++;
165 5 break;
166 5
167 5 case 0x7e:
168 5 key=3;
169 5 wei++;
170 5 break;
171 5 }
172 4 while(temp!=0xf0)
173 4 {
174 5 temp=P3;
175 5 temp=temp&0xf0;
176 5 beep=0;
177 5 }
178 4 beep=1;
179 4 }
C51 COMPILER V8.02 CLOCKDINGSHI 06/22/2010 11:22:43 PAGE 4
180 3 }
181 2 P3=0xfd;
182 2 temp=P3;
183 2 temp=temp&0xf0;
184 2 if(temp!=0xf0)
185 2 {
186 3 delay(10);
187 3 if(temp!=0xf0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -