📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 03/02/2006 23:49:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3 我的邮箱:computer-lov@tom.com
4 欢迎访问我的blog: http://computer00.21ic.org
5
6 Main.C file
7
8 Created by Computer-lov
9 Date: 2004.11.12
10
11 Edit date:2006.3.2
12
13 Version V1.1
14 Copyright(C) Computer-lov 2004-2014
15 All rigths reserved
16 *******************************************************************/
17
18
19 #include "main.h"
20 #include "hardware.h"
21 #include "LCD1602.H"
22 #include "square_wave_generator.h"
23 #include "measure_capacity.h"
24 #include "system_initial.h"
25 #include "isr.h"
26 #include "measure_frequency.h"
27
28 unsigned char buffer[17];
29 unsigned char TVH0;
30 unsigned char status=0;
31 unsigned long int result;
32 unsigned char menu_value;
33 unsigned char NO_2401=0;
34
35 struct
36 {
37 unsigned char flag;
38 unsigned char last_status;
39 unsigned char mode;
40 unsigned char capacity_scope;
41 unsigned char wave_value;
42 unsigned int zero_offset[5];
43 }settings_value;
44
45 code unsigned char TEXT[6][17]={
46 "Select Function:",
47 "1. Capacity",
48 "2. Frequency",
49 "3. Square Wave",
50 "4. Settings",
51 "5. Help"
52 };
53
54
55 void delayXms(unsigned int x)
C51 COMPILER V7.06 MAIN 03/02/2006 23:49:39 PAGE 2
56 {
57 1 unsigned int i,j;
58 1 for(i=0;i<x;i++)
59 1 for(j=0;j<240;j++);
60 1 }
61
62 void Display_menu(void)
63 {
64 1 LCD_cls();
65 1 LCD_prints(TEXT[0]);
66 1 LCD_set_position(40);
67 1 LCD_prints(TEXT[menu_value]);
68 1 }
69
70 void Main_menu(void)
71 {
72 1 unsigned char i;
73 1 Display_menu();
74 1 while(status==MAIN_MENU)
75 1 {
76 2 while(!key);
77 2 switch(key)
78 2 {
79 3 case KEY_MENU: menu_value=1;Display_menu();break;
80 3 case KEY_UP: if(menu_value==1)menu_value=5;else menu_value--;Display_menu();break;
81 3 case KEY_DOWN: if(menu_value==5)menu_value=1;else menu_value++;Display_menu();break;
82 3 case KEY_ENTER:
83 3 {
84 4 switch(menu_value)
85 4 {
86 5 case 1:
87 5 {
88 6 i=1;
89 6 LCD_cls();
90 6 LCD_prints("Mode select:");
91 6 LCD_set_position(40);
92 6 LCD_prints("1. Manual mode");
93 6 settings_value.mode=MANUAL_MODE;
94 6 key=0;
95 6 while(i)
96 6 {
97 7 while(!key);
98 7 switch(key)
99 7 {
100 8 case KEY_UP: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("1. Ma
-nual mode");settings_value.mode=MANUAL_MODE;break;
101 8 case KEY_DOWN: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("2. Au
-to mode");settings_value.mode=AUTO_MODE;break;
102 8 case KEY_ENTER:
103 8 {
104 9 status=MEASURE_CAPACITY;
105 9 Write_a_EEPROM_data(EEPROM_Addr,0x01,status);
106 9 Write_a_EEPROM_data(EEPROM_Addr,0x02,settings_value.mode);
107 9 i=0;
108 9 break;
109 9 }
110 8 case KEY_MENU: i=0;break;
111 8 default: break;
112 8 }
113 7 key=0;
114 7 }
115 6 break;
C51 COMPILER V7.06 MAIN 03/02/2006 23:49:39 PAGE 3
116 6 }
117 5 case 2: status=MEASURE_FREQUENCY;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
118 5 case 3: status=SQUARE_WAVE_GENERATOR;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
119 5 case 4: status=SETTINGS;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
120 5 case 5: status=HELP;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
121 5 default: break;
122 5 }
123 4 }break;
124 3 default: break;
125 3 }
126 2 key=0;
127 2 }
128 1 }
129
130 unsigned char code adjust_zero_text[][17]=
131 {
132 "Addjust zero",
133 "Are you sure?"
134 };
135
136 void adjust_zero(void)
137 {
138 1 unsigned char i,temp;
139 1 for(i=0;i<5;i++)
140 1 {
141 2 scope_select=SCOPE_STOP;
142 2 delayXms(400);
143 2 capacity_measure_end=0;
144 2 TVH0=0;
145 2 TH0=0;
146 2 TL0=0;
147 2 switch(i)
148 2 {
149 3 case 0: temp=SCOPE_1;break;
150 3 case 1: temp=SCOPE_2;break;
151 3 case 2: temp=SCOPE_3;break;
152 3 case 3: temp=SCOPE_4;break;
153 3 case 4: temp=SCOPE_5;break;
154 3 default: break;
155 3 }
156 2 scope_select=temp; //开始测量
157 2 TR0=1;
158 2 while(!capacity_measure_end)if(TVH0>0){scope_select=SCOPE_STOP;LCD_cls();LCD_prints("Error! Please ")
-;LCD_set_position(40);LCD_prints("check input port");key=0;delayXms(2000);while(!key);return;}
159 2 scope_select=SCOPE_STOP;
160 2 ((unsigned char *)&settings_value.zero_offset[i])[0]=TH0;
161 2 ((unsigned char *)&settings_value.zero_offset[i])[1]=TL0;
162 2 Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2,TH0);
163 2 Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2+1,TL0);
164 2 }
165 1 }
166
167 void Settings(void)
168 {
169 1 LCD_cls();
170 1 LCD_prints(adjust_zero_text[0]);
171 1 LCD_set_position(40);
172 1 LCD_prints(adjust_zero_text[1]);
173 1 while(status==SETTINGS)
174 1 {
175 2 while(!key);
176 2 switch(key)
C51 COMPILER V7.06 MAIN 03/02/2006 23:49:39 PAGE 4
177 2 {
178 3 case KEY_MENU: status=MAIN_MENU;break;
179 3 case KEY_ENTER: LCD_cls();LCD_prints("Adjustting...");LCD_set_position(40);LCD_prints("Pleas wait..."
-);adjust_zero();status=MAIN_MENU;break;
180 3 default: break;
181 3 }
182 2 key=0;
183 2 }
184 1 }
185
186 unsigned char code help_text[][17]=
187 {
188 "About version",
189 "----V1.1-----",
190 "About designer",
191 "Computer-lov",
192 "QQ:156872359",
193 "Email:",
194 "Computer-lov",
195 "@163.com"
196 };
197
198 void Help(void)
199 {
200 1 unsigned char i=0;
201 1 LCD_cls();
202 1 LCD_prints(help_text[0]);
203 1 LCD_set_position(40);
204 1 LCD_prints(help_text[1]);
205 1 while(status==HELP)
206 1 {
207 2 while(!key);
208 2 switch(key)
209 2 {
210 3 case KEY_MENU:
211 3 case KEY_ENTER: status=MAIN_MENU;break;
212 3 case KEY_UP: if(i>0){i--;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_t
-ext[i+1]);}break;
213 3 case KEY_DOWN: if(i<6){i++;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_t
-ext[i+1]);}break;
214 3 default: break;
215 3 }
216 2 key=0;
217 2 }
218 1 }
219
220 void main(void)
221 {
222 1 System_initial();
223 1 while(1)
224 1 {
225 2 switch(status)
226 2 {
227 3 case MEASURE_CAPACITY: Measure_capacity();break;
228 3 case MEASURE_FREQUENCY: Measure_frequency();break;
229 3 case SQUARE_WAVE_GENERATOR: Square_wave_generator();break;
230 3 case SETTINGS: Settings();break;
231 3 case HELP: Help();break;
232 3 case MAIN_MENU: Main_menu();break;
233 3 default: break;
234 3 }
235 2 }
C51 COMPILER V7.06 MAIN 03/02/2006 23:49:39 PAGE 5
236 1 }
237
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 820 ----
CONSTANT SIZE = 375 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 40 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -