259 lines
8.2 KiB
Plaintext
259 lines
8.2 KiB
Plaintext
![]() |
C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 1
|
|||
|
|
|||
|
|
|||
|
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE MAIN
|
|||
|
OBJECT MODULE PLACED IN .\Objects\main.obj
|
|||
|
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE Main\main.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\Include) DEBUG OBJECTEXTEN
|
|||
|
-D PRINT(.\Listings\main.lst) TABS(2) OBJECT(.\Objects\main.obj)
|
|||
|
|
|||
|
line level source
|
|||
|
|
|||
|
1 #include<reg52.h>
|
|||
|
2 #include<stdio.h>
|
|||
|
3
|
|||
|
4 #include"public.h"
|
|||
|
5 #include"lcd1602.h"
|
|||
|
6 #include"key.h"
|
|||
|
7 #include"timer.h"
|
|||
|
8 #include"com_send.h"
|
|||
|
9
|
|||
|
10 u16 time_sig;
|
|||
|
11 u16 time_50ms;
|
|||
|
12 u16 time_gate_ms;
|
|||
|
13 u8 send;
|
|||
|
14 u8 pause;
|
|||
|
15 u8 range_mode;
|
|||
|
16 u8 gate_mode;
|
|||
|
17 double result;
|
|||
|
18
|
|||
|
19 u8* range_mode_name[3] = {"L","M","H"};
|
|||
|
20 u8* gate_mode_name[4] = {" 1"," 2"," 5","10"};
|
|||
|
21 u8 gate_mode_number[4] = {1,2,5,10};
|
|||
|
22
|
|||
|
23 u8 timer0_th = 0x4c;
|
|||
|
24 u8 timer0_tl[3] = {0xa0,0x16,0x14};
|
|||
|
25
|
|||
|
26
|
|||
|
27 u8 range_auto;
|
|||
|
28 u8 auto_count;
|
|||
|
29 u16 range_h[3] = {100,50000,460000};
|
|||
|
30
|
|||
|
31 void show_string_mode()
|
|||
|
32 {
|
|||
|
33 1
|
|||
|
34 1 lcd1602_show_string(5,1,range_mode_name[range_mode]);
|
|||
|
35 1 lcd1602_show_string(13,1,gate_mode_name[gate_mode]);
|
|||
|
36 1 if(range_auto){
|
|||
|
37 2 lcd1602_show_string(6,1,"a");
|
|||
|
38 2 }
|
|||
|
39 1 else{
|
|||
|
40 2 lcd1602_show_string(6,1," ");
|
|||
|
41 2 }
|
|||
|
42 1 }
|
|||
|
43
|
|||
|
44 void show_string_init()
|
|||
|
45 {
|
|||
|
46 1 lcd1602_show_string(0,0,"Frq:");
|
|||
|
47 1 lcd1602_show_string(14,0,"Hz");
|
|||
|
48 1 lcd1602_show_string(0,1,"Mode: Time:");
|
|||
|
49 1 if(range_mode){
|
|||
|
50 2 lcd1602_show_string(15,1,"s");
|
|||
|
51 2 }
|
|||
|
52 1 else{
|
|||
|
53 2 lcd1602_show_string(15,1,"T");
|
|||
|
54 2 }
|
|||
|
C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 2
|
|||
|
|
|||
|
55 1 }
|
|||
|
56
|
|||
|
57 void reset(){
|
|||
|
58 1 timer0_reset(timer0_th,timer0_tl[range_mode]);
|
|||
|
59 1 time_50ms=0;
|
|||
|
60 1 if(range_mode)
|
|||
|
61 1 {
|
|||
|
62 2 timer1_reset(0x00,0x00);
|
|||
|
63 2 }else
|
|||
|
64 1 {
|
|||
|
65 2 timer1_reset(0xFF,0xFF);
|
|||
|
66 2 }
|
|||
|
67 1 time_sig=0;
|
|||
|
68 1 result = 0;
|
|||
|
69 1 }
|
|||
|
70
|
|||
|
71 void change_range()
|
|||
|
72 {
|
|||
|
73 1 range_mode %= 3;
|
|||
|
74 1 show_string_init();
|
|||
|
75 1 show_string_mode();
|
|||
|
76 1 }
|
|||
|
77
|
|||
|
78 int main()
|
|||
|
79 {
|
|||
|
80 1 u8 key=0;
|
|||
|
81 1 range_mode = 1;
|
|||
|
82 1 gate_mode = 0;
|
|||
|
83 1 time_gate_ms = 20*gate_mode_number[gate_mode];
|
|||
|
84 1
|
|||
|
85 1 lcd1602_init();
|
|||
|
86 1 send_init();
|
|||
|
87 1
|
|||
|
88 1 show_string_init();
|
|||
|
89 1 show_string_mode();
|
|||
|
90 1
|
|||
|
91 1
|
|||
|
92 1 timer0_init(0x01,timer0_th,timer0_tl[range_mode]);
|
|||
|
93 1 timer1_init(0x50,0x00,0x00);
|
|||
|
94 1 timer0_open();
|
|||
|
95 1 timer1_open();
|
|||
|
96 1
|
|||
|
97 1 while(1)
|
|||
|
98 1 {
|
|||
|
99 2 key=key_scan(0);
|
|||
|
100 2 if(key==KEY1_PRESS)
|
|||
|
101 2 {
|
|||
|
102 3 range_mode++;
|
|||
|
103 3 change_range();
|
|||
|
104 3 reset();
|
|||
|
105 3 }
|
|||
|
106 2 else if(key==KEY2_PRESS)
|
|||
|
107 2 {
|
|||
|
108 3 gate_mode++;
|
|||
|
109 3 gate_mode %= 4;
|
|||
|
110 3 time_gate_ms = 20*gate_mode_number[gate_mode];
|
|||
|
111 3 show_string_mode();
|
|||
|
112 3 reset();
|
|||
|
113 3 }
|
|||
|
114 2 else if(key==KEY3_PRESS)
|
|||
|
115 2 {
|
|||
|
116 3 range_auto = ~range_auto;
|
|||
|
C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 3
|
|||
|
|
|||
|
117 3 show_string_mode();
|
|||
|
118 3 }
|
|||
|
119 2 else if(key==KEY4_PRESS)
|
|||
|
120 2 {
|
|||
|
121 3 lcd1602_clear();
|
|||
|
122 3 show_string_init();
|
|||
|
123 3 show_string_mode();
|
|||
|
124 3 }
|
|||
|
125 2 if(send==1)
|
|||
|
126 2 {
|
|||
|
127 3 char disp[10];
|
|||
|
128 3 if(range_mode)
|
|||
|
129 3 {
|
|||
|
130 4 result = (double)(time_sig*65536+TH1*256+TL1)/(double)(time_50ms*50+((TH0-timer0_th)*256+TL0-timer0_tl
|
|||
|
-[range_mode])/1000)*1000;
|
|||
|
131 4 }
|
|||
|
132 3 else
|
|||
|
133 3 {
|
|||
|
134 4 result = (double)1000000*gate_mode_number[gate_mode]/(double)(time_50ms*50006+((TH0-timer0_th)*256)+TL
|
|||
|
-0-timer0_tl[range_mode]);
|
|||
|
135 4 }
|
|||
|
136 3 if(range_auto && auto_count>0)
|
|||
|
137 3 {
|
|||
|
138 4 auto_count = 0;
|
|||
|
139 4 if(range_mode < 2 && result>range_h[range_mode])
|
|||
|
140 4 {
|
|||
|
141 5 range_mode += 1;
|
|||
|
142 5 change_range();
|
|||
|
143 5 }
|
|||
|
144 4 if(range_mode > 0 && result<range_h[range_mode-1])
|
|||
|
145 4 {
|
|||
|
146 5 range_mode += 2;
|
|||
|
147 5 change_range();
|
|||
|
148 5 }
|
|||
|
149 4 }
|
|||
|
150 3 else
|
|||
|
151 3 {
|
|||
|
152 4 auto_count++;
|
|||
|
153 4 }
|
|||
|
154 3 if(range_mode ==2){
|
|||
|
155 4 sprintf(disp,"%.2f",result);
|
|||
|
156 4 }
|
|||
|
157 3 else
|
|||
|
158 3 {
|
|||
|
159 4 sprintf(disp,"%.3f",result);
|
|||
|
160 4 }
|
|||
|
161 3 lcd1602_show_string(4,0,disp);
|
|||
|
162 3 send_string(disp);
|
|||
|
163 3 send_string("\r\n");
|
|||
|
164 3 reset();
|
|||
|
165 3 timer0_open();
|
|||
|
166 3 timer1_open();
|
|||
|
167 3 send=0;
|
|||
|
168 3 }
|
|||
|
169 2 }
|
|||
|
170 1 }
|
|||
|
171
|
|||
|
172 void timer0() interrupt 1 //<2F><>ʱ<EFBFBD><CAB1>0<EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
|
|||
|
173 {
|
|||
|
174 1 if(range_mode){
|
|||
|
175 2 timer0_close();
|
|||
|
176 2 timer1_close();
|
|||
|
C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 4
|
|||
|
|
|||
|
177 2 timer0_reset(timer0_th,timer0_tl[range_mode]);
|
|||
|
178 2 time_50ms++;
|
|||
|
179 2 if(time_50ms==time_gate_ms)
|
|||
|
180 2 {
|
|||
|
181 3 send=1;
|
|||
|
182 3 }
|
|||
|
183 2 else
|
|||
|
184 2 {
|
|||
|
185 3 timer0_open();
|
|||
|
186 3 timer1_open();
|
|||
|
187 3 }
|
|||
|
188 2 }
|
|||
|
189 1 else
|
|||
|
190 1 {
|
|||
|
191 2 timer0_reset(timer0_th,timer0_tl[range_mode]);
|
|||
|
192 2 time_50ms++;
|
|||
|
193 2 }
|
|||
|
194 1 }
|
|||
|
195
|
|||
|
196 void timer1() interrupt 3
|
|||
|
197 {
|
|||
|
198 1 if(range_mode)
|
|||
|
199 1 {
|
|||
|
200 2 timer1_reset(0x00,0x00);
|
|||
|
201 2 time_sig++;
|
|||
|
202 2 }
|
|||
|
203 1 else
|
|||
|
204 1 {
|
|||
|
205 2 static u8 start = 0;
|
|||
|
206 2 timer1_reset(0xFF,0xFF);
|
|||
|
207 2 if(!start)
|
|||
|
208 2 {
|
|||
|
209 3 timer0_reset(timer0_th,timer0_tl[range_mode]);
|
|||
|
210 3 time_50ms = 0;
|
|||
|
211 3 start = 1;
|
|||
|
212 3 }
|
|||
|
213 2 else
|
|||
|
214 2 {
|
|||
|
215 3 time_sig++;
|
|||
|
216 3 }
|
|||
|
217 2
|
|||
|
218 2 if(time_sig==gate_mode_number[gate_mode])
|
|||
|
219 2 {
|
|||
|
220 3 timer0_close();
|
|||
|
221 3 timer1_close();
|
|||
|
222 3 send=1;
|
|||
|
223 3 start = 0;
|
|||
|
224 3 }
|
|||
|
225 2 }
|
|||
|
226 1 }
|
|||
|
|
|||
|
|
|||
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
|||
|
CODE SIZE = 1458 ----
|
|||
|
CONSTANT SIZE = 61 ----
|
|||
|
XDATA SIZE = ---- ----
|
|||
|
PDATA SIZE = ---- ----
|
|||
|
DATA SIZE = 53 16
|
|||
|
IDATA SIZE = ---- ----
|
|||
|
BIT SIZE = 1 ----
|
|||
|
END OF MODULE INFORMATION.
|
|||
|
|
|||
|
|
|||
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|