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)
|