📄 led.lst
字号:
C51 COMPILER V7.50 LED 04/15/2008 19:27:32 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN LED.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE LED.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2 #include "define7279.h"
3 #include "function.h"
4 unsigned int i,j,tmr,a=0;
5 unsigned int sg,ss,mg,ms,hg,hs;
6 unsigned char key_number=0,hour,min,sec,key_value[6]; //时,分,秒初值为23:59:30
7
8
9
10
11 //**********************主函数中完成测试基本功能并进入等待键盘状态******************
12 void main()
13 {
14 1 for (tmr=0;tmr<0x2000;tmr++); //测试
15 1 send_byte(CMD_RESET);
16 1 send_byte(CMD_TEST);
17 1
18 1 for(i=0;i<3;i++) //延时测试时间为3秒
19 1 delay10ms(100);
20 1
21 1
22 1 send_byte(CMD_RESET); //复位
23 1 delay10ms(1);
24 1
25 1
26 1 /* write7279(0x86,0x08); //最左位显8
27 1 delay10ms(50);
28 1 for(j=0;j<23;j++) //右循环3圈
29 1 {
30 1 send_byte(RTR_CYCLE);
31 1 delay10ms(50);
32 1 }
33 1
34 1
35 1 send_byte(CMD_RESET); //复位
36 1 delay10ms(1);
37 1
38 1
39 1 write7279(0x80,0x07); //最右位显7
40 1 delay10ms(50);
41 1 for(j=0;j<23;j++)
42 1 {
43 1 send_byte(RTL_CYCLE); //左循环3圈
44 1 delay10ms(50);
45 1 }
46 1 */
47 1
48 1
49 1 keycontrol(); //进入等待键盘状态
50 1
51 1 }
52
53
54
55
C51 COMPILER V7.50 LED 04/15/2008 19:27:32 PAGE 2
56
57
58
59 //***************************清空key_value中的函数值******************************
60
61 void key_valueclean()
62 {
63 1 char b;
64 1 for(b=0;b<6;b++)
65 1 key_value[b]=0;
66 1 }
67
68
69
70
71
72 //*************************键盘控制程序*********************************
73
74 void keycontrol()
75 {
76 1
77 1 send_byte(CMD_RESET); //复位
78 1 delay10ms(1);
79 1
80 1
81 1
82 1 key_valueclean(); //清空key_value中的函数值
83 1
84 1
85 1 while(1) //键盘控制程序
86 1 {
87 2 while(a<7)
88 2 {
89 3 if(!key) //是否有键按下
90 3 {
91 4
92 4 key_number=read7279(CMD_READ);
93 4 switch(key_number)
94 4 {
95 5 case KEY_0: //0
96 5 key_value[a]=0;
97 5 out();
98 5 a++;
99 5 break;
100 5
101 5 case KEY_1: //1
102 5 key_value[a]=1;
103 5 out();
104 5 a++;
105 5 break;
106 5
107 5 case KEY_2: //2
108 5 key_value[a]=2;
109 5 out();
110 5 a++;
111 5 break;
112 5
113 5 case KEY_3: //3
114 5 key_value[a]=3;
115 5 out();
116 5 a++;
117 5 break;
C51 COMPILER V7.50 LED 04/15/2008 19:27:32 PAGE 3
118 5
119 5 case KEY_4: //4
120 5 key_value[a]=4;
121 5 out();
122 5 a++;
123 5 break;
124 5
125 5 case KEY_5: //5
126 5 key_value[a]=5;
127 5 out();
128 5 a++;
129 5 break;
130 5
131 5
132 5 case KEY_6: //6
133 5 key_value[a]=6;
134 5 out();
135 5 a++;
136 5 break;
137 5
138 5 case KEY_7: //7
139 5 key_value[a]=7;
140 5 out();
141 5 a++;
142 5 break;
143 5
144 5 case KEY_8: //8
145 5 key_value[a]=8;
146 5 out();
147 5 a++;
148 5 break;
149 5
150 5 case KEY_9: //9
151 5 key_value[a]=9;
152 5 out();
153 5 a++;
154 5 break;
155 5
156 5 case KEY_C: //开始计时
157 5 clock();
158 5 break;
159 5
160 5 case KEY_D: //开始倒计时
161 5 countdowntime();
162 5 break;
163 5
164 5 case KEY_F: //操作错误时,重新操作
165 5 a=0;
166 5 keycontrol();
167 5 break;
168 5
169 5 default:
170 5 break;
171 5
172 5
173 5 }
174 4 }
175 3 }
176 2
177 2
178 2
179 2 }
C51 COMPILER V7.50 LED 04/15/2008 19:27:32 PAGE 4
180 1 }
181
182
183
184
185 //*****************************在LED上显示数值*************************************
186 //*********************************************************************************
187 // 因为要显示六位数,前五位左移,最后一位不移
188 //*********************************************************************************
189
190 void out()
191 {
192 1 if(a<5)
193 1 {
194 2 write7279(DECODE1,key_value[a]);
195 2 send_byte(RTL_UNCYL);
196 2 }
197 1 else if(a==5)
198 1 {
199 2 write7279(DECODE1,key_value[a]);
200 2 }
201 1 while (!key);
202 1 }
203
204
205
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -