📄 angle_measure.lst
字号:
C51 COMPILER V8.02 ANGLE_MEASURE 01/14/2009 21:15:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ANGLE_MEASURE
OBJECT MODULE PLACED IN angle_measure.OBJ
COMPILER INVOKED BY: D:\单片机\C51\BIN\C51.EXE angle_measure.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<c8051f020.h>
2 #include"initial.h"
3 //#define data_port P2
4 sbit one=P2^0;
5 sbit two=P2^1;
6 sbit three=P2^2;
7 sbit cl=P2^3;
8 sbit clr=P2^4;
9 sbit spul=P2^5;
10 sbit start=P2^6;
11 sbit end=P2^7;
12 /*sbit spul=P2^0;
13 sbit cl=P2^1;
14 sbit clr=P2^2;
15 sbit one=P2^3;
16 sbit two=P2^4;
17 sbit three=P2^5;
18 sbit start=P2^6;
19 sbit end=P2^7;*/
20 sbit phasecon=P0^4;
21 sbit fcon=P0^6;
22 uchar ii,j;
23 xdata long double impulse_1,impulse_2;
24 uchar code str11[]="OK!";//3
25 uchar code str22[]="Phase:"; //6
26 uchar code str33[]="F && T:1";//5
27 uchar code str44[]="Imp:2";//5
28 uchar code str55[]="Pha:3";//5
29 uchar code str66[]="Welcome!";// 8
30 uchar code str77[]="Phase Measure";//13
31 uchar code table[]={'0','1','2','3',
32 '4','5','6','7',
33 '8','9','.'};
34 extern keynum;
35 uchar five_1,four_1,three_1,two_1,one_1,zero_1,point_1,point_2;
36 uchar five_2,four_2,three_2,two_2,one_2,zero_2;
37 uchar five_3,four_3,three_3,two_3,one_3,zero_3;
38 uchar five_4,four_4,three_4,two_4,one_4,zero_4;
39 uchar five_5,four_5,three_5,two_5,one_5,zero_5;
40 xdata long uint bin0,bin1,bin2,bin3,tin0,tin1,tin2,tin3,positive,negative;
41 xdata long double bin,tin;
42 xdata long uint Fx,phase,TT;
43 void angle_measure()
44 {
45 1 Lcdinitial ();
46 1 delay(10);
47 1 display();
48 1 while(1)
49 1 {
50 2 keynum=KeyEn();
51 2 if(keynum==9)
52 2 {
53 3 display_2();
54 3 j++;
55 3 frequence();//测频率
C51 COMPILER V8.02 ANGLE_MEASURE 01/14/2009 21:15:28 PAGE 2
56 3 }
57 2 if(keynum==10)
58 2 {
59 3 display_2();
60 3 j++;
61 3 impulse();//测脉宽
62 3 }
63 2 if(keynum==11)
64 2 {
65 3 display_2();
66 3 j++;
67 3 phase_measure();//测相位差
68 3 }
69 2 if(keynum==8)
70 2 {
71 3 write_command(0x01);
72 3 delay(10);
73 3 display();
74 3 }
75 2 }
76 1 }
77
78 void measure_bin()
79 {
80 1 three=0;
81 1 two=0;
82 1 one=0;
83 1 bin0=P0;
84 1
85 1 three=0;
86 1 two=0;
87 1 one=1;
88 1 bin1=P0;
89 1
90 1 three=0;
91 1 two=1;
92 1 one=0;
93 1 bin2=P0;
94 1
95 1
96 1 three=0;
97 1 two=1;
98 1 one=1;
99 1 bin3=P0;
100 1
101 1 bin=(bin3<<24)+(bin2<<16)+(bin1<<8)+bin0;
102 1
103 1 }
104
105
106 void measure_tin()
107 {
108 1 three=1;
109 1 two=0;
110 1 one=0;
111 1 tin0=P0;
112 1
113 1 three=1;
114 1 two=0;
115 1 one=1;
116 1 tin1=P0;
117 1
C51 COMPILER V8.02 ANGLE_MEASURE 01/14/2009 21:15:28 PAGE 3
118 1 three=1;
119 1 two=1;
120 1 one=0;
121 1 tin2=P0;
122 1
123 1 three=1;
124 1 two=1;
125 1 one=1;
126 1 tin3=P0;
127 1
128 1 tin=(tin3<<24)+(tin2<<16)+(tin1<<8)+tin0;
129 1 }
130
131 void frequence()
132 {
133 1 // fcon=1;
134 1 // phasecon=0;
135 1 spul=1;
136 1 clr=1;
137 1 delay(20);
138 1 clr=0;
139 1 cl=1;
140 1 delay(1000);
141 1 cl=0;
142 1 while(start);
143 1 measure_bin();
144 1 if(bin==0)
145 1 {
146 2 frequence();
147 2 }
148 1 if(j==1) //第一次测的数据不准,第二次才开始正确
149 1 {
150 2 j=0;
151 2 frequence();
152 2 }
153 1 measure_tin();
154 1 Fx=(50000000*tin)/(bin*0.01);
155 1 TT=bin/(50*tin);
156 1 five_1=Fx/10000000;
157 1 four_1=Fx%10000000/1000000;
158 1 three_1=Fx%10000000%1000000/100000;
159 1 two_1=Fx%10000000%1000000%100000/10000;
160 1 one_1=Fx%10000000%1000000%100000%10000/1000;
161 1 zero_1=Fx%10000000%1000000%100000%10000%1000/100;
162 1 point_1=Fx%10000000%1000000%100000%10000%1000%100/10;
163 1 point_2=Fx%10000000%1000000%100000%10000%1000%100%10;
164 1 write_command(0x01);
165 1 delay(10);
166 1 write_command(0x80);
167 1 write_data('F');
168 1 write_data(':');
169 1 write_data(table[five_1]);
170 1 write_data(table[four_1]);
171 1 write_data(table[three_1]);
172 1 write_data(table[two_1]);
173 1 write_data(table[one_1]);
174 1 write_data(table[zero_1]);
175 1 write_data(table[10]);
176 1 write_data(table[point_1]);
177 1 write_data(table[point_2]);
178 1 write_data('H');
179 1 write_data('z');
C51 COMPILER V8.02 ANGLE_MEASURE 01/14/2009 21:15:28 PAGE 4
180 1
181 1 five_5=TT/100000;
182 1 four_5=TT%100000/10000;
183 1 three_5=TT%100000%10000/1000;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -