📄 1503cs.lst
字号:
53 1 unsigned char temp ;
54 1 unsigned char txch2,txcl2;
55 1 unsigned int sj1,sj2;
56 1 txch2 = TH0;
57 1 txcl2 = TL0;
58 1 temp = tjs;
59 1 if(cxwbz){
60 2 if( temp < 2 ){
61 3
62 3 sj1 = txch1<<8 ;
63 3 sj1 += txcl1;
64 3
65 3 sj2 = txch2<<8 ;
66 3 sj2+= txcl2;
67 3
68 3 if( sj2 >= sj1 ) sj2 = sj2 - sj1;
69 3
70 3 else { sj2 = sj1 - sj2 ; temp--; }
71 3
72 3 xczh = ( temp << 12 )|sj2;
73 3
74 3 }
75 2 else xczh = 0 ;
76 2 cxwbz = 0 ; //时间差计算
77 2 }
78 1 }
79
80 void cysj( unsigned char yzz ){
81 1 unsigned char temp , sjgs ,*dpp ;
82 1 unsigned int temp1 ;
83 1 if( yzz == 0XBA ){
84 2 dpp = jcsjbuf ;
85 2 if( t1ms >= 7 ){
86 3
87 3 temp1 = ad_cy[0] << 8 ;
88 3 temp1 += ad_cy[1] ;
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 19
89 3 temp1 /= 10 ;
90 3 ad_cy[0] = (char)temp1 ;
91 3
92 3 temp1 = ad_cy[2] << 8 ;
93 3 temp1 += ad_cy[3] ;
94 3 temp1 /= 10 ;
95 3 ad_cy[1] = (char)temp1 ;
96 3
97 3 temp1 = ad_cy[4] << 8 ;
98 3 temp1 += ad_cy[5] ;
99 3 temp1 /= 10 ;
100 3 ad_cy[2] = (char)temp1 ;
101 3
102 3 temp = (t1ms - 7)*3 + 36 ;
103 3
104 3 for ( sjgs = 0 ; sjgs < 3 ; sjgs++ )
105 3 *(dpp + temp + sjgs ) = ad_cy[ sjgs ] ;
106 3 }
107 2 else {
108 3 temp = (t1ms - 1) * 6 ;
109 3 for ( sjgs = 0 ; sjgs < 6 ; sjgs++ )
110 3 *(dpp + temp + sjgs) = ad_cy[ sjgs ] ;
111 3 }
112 2 }
113 1 }
114
115 void timer0int (void) interrupt 1 using 1 //0.5MS
116 { EA = 0 ;
117 1 TR0=0 ;
118 1 t50 ++ ;
119 1 tcy ++ ;
120 1 hys ++ ;
121 1 t1ms ++ ;
122 1 tjs ++ ;
123 1 txjs ++ ;
124 1 TH0=0xFB; //1ms //100EH 50MS 880EH 50MS 4C0EH 50MS ;2^16-T(MS)*CRY(MHZ)*10^3/12
125 1 TL0=0x33;
126 1 TR0 = 1 ;
127 1 if( ((csbxbz == 1 )&& ( ( csbz == 6 ) || ( sdkzbz == 1 ) ))){ //测试波形 时测相位差
128 2 if ( ( t1ms > 0 ) && ( t1ms < 19 ) )
129 2 {
130 3 if( t1ms >= 18 ) csbxbz = 0 ;
131 3 rd2543_8() ;
132 3 cysj( 0XBA ) ;
133 3 }
134 2 }
135 1 EA = 1 ;
136 1 }
137
138 //串口校验字节数 5个 fe eb 55 aa ADD
139 void serial_1(void)interrupt 7 //串口自检
140 {
141 1 NOP ;
142 1 /*
143 1 if(RI_1)
144 1 {
145 1 RI_1=0;
146 1 }
147 1 if(TI_1)
148 1 {
149 1 TI_1=0;
150 1 }
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 20
151 1 */
152 1 }
153 /*
154 unsigned char TXPD(void){
155 unsigned char temp ;
156 SBUF1 = 0xaa ;
157 RI_1 = 0 ;
158 txjs = 0 ;
159 while(!TI_1);
160 TI_1=0;
161 while( !RI_1 & txjs < 5 ){ cdog(); };
162 if(!RI_1) return 0 ;
163 RI_1 = 0 ;
164 temp = SBUF1 ;
165 if( temp != 0xaa )return 0 ;
166 SBUF1 = 0x55;
167 RI_1 = 0 ;
168 txjs = 0 ;
169 while(!TI_1);
170 TI_1=0;
171 while( !RI_1&&txjs < 5 ){ cdog(); };
172 if(!RI_1) return 0 ;
173 temp = SBUF1 ;
174 if( temp != 0x55 )return 0 ;
175 return 0xff ;
176 }
177 */
178
179 /*延时*/
180 void delay(unsigned char temp)
181 {unsigned char i;
182 1 for(i=0;i<temp;i++);
183 1 }
184
185 //清看门狗
186 void cdog(void)
187 { if(t50>100)
188 1 {
189 2 WDI=!WDI;
190 2 GZD = !GZD ;
191 2 t50=0;
192 2 }
193 1 }
194 void clrdog(void){
195 1 WDI = !WDI ;
196 1 GZD = !GZD ;
197 1 NOP ; NOP ; NOP ; NOP ; NOP ;
198 1 WDI = !WDI ;
199 1 }
200
201 void port_int(void){
202 1 p2=0xff;
203 1 p1=0xfe;
204 1 p0=0x00;
205 1 p3=0xff;
206 1 }
207 //通信初始化
208 /*;--------------------------------------------------------------------------------------------------I
209 ;Fbit=(XXXXXX)/(32*12*(256-th1)) I
210 ;XXXXXX=7.3728MHz ;XXXXXX=11.0592MHz ;XXXXXX=14.7456MHz ;XXXXXX=22.1184MHz I
211 ;TH1=? SMOD=0 ;TH1=? SMOD=0 ;TH1=? SMOD=0 ;TH1=? SMOD=0 I
212 ;TH1=FF 1=.2KHz ;TH1=xx ;TH1=FF 38.4KHz ;TH1=XX 38.4KHz I
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 21
213 ;TH1=FE 9.6KHz ;TH1=FD 9.6KHz ;TH1=FE 19.2KHz ;TH1=FD 19.2KHz I
214 ;TH1=FC 4.8KHz ;TH1=FA 4.8KHz ;TH1=FC 9.6KHz ;TH1=FA 9.6KHz I
215 ;TH1=F8 2.4KHz ;TH1=F4 2.4KHz ;TH1=F8 4.8KHz ;TH1=F4 4.8KHz I
216 ;TH1=F0 1.2KHz ;TH1=E8 1.2KHz ;TH1=F0 2.4KHz ;TH1=E8 2.4KHz I
217 ;TH1=E0 0.6KHz ;TH1=D0 0.6KHz ;TH1=E0 1.2KHz ;TH1=D0 1.2KHz I
218 ;TH1=C0 0.3KHz ;TH1=A0 0.3KHz ;TH1=C0 0.6KHz ;TH1=A0 0.6KH~ I
219 ;TH1=80 150Hz ;TH1=40 150Hz ;TH1=80 300 Hz ;TH1=40 300 Hz I
220 ; ;TH1=FD(S=1) 9.6K ;TH1=00 150 Hz ;
221 ;---------------------------------------------------------------------------------------I
222 ;Fbit=(XXXXXX)/(32*(65536-T2) I
223 ;XXXXXX=7.3728MHz ;XXXXXX=11.0592MHz ;XXXXXX=14.7456MHz ;XXXXXX=22.1184MHz I
224 ;RCAP2 SMOD=0 ;RCAP2 SMOD=0 ;RCAP2 SMOD=0 ;RCAP2 SMOD=0 I
225 ;RCAP2=FFFDH 76.8KHz ;RCAP2=XXXXXXXXXXXXXX ;RCAP2=FFFDH 153.6KHz ;RCAP2=XXXXH 153.6KHzI
226 ;RCAP2=FFFAH 38.4KHz ;RCAP2=FFF7H 38.4KHz ;RCAP2=FFFAH 76.8KHz ;RCAP2=FFF7H 76.8KHzI
227 ;RCAP2=FFF4H 19.2KHz ;RCAP2=FFEEH 19.2KHz ;RCAP2=FFF4H 38.4KHz ;RCAP2=FFEEH 38.4KHzI
228 ;RCAP2=FFE8H 9.6KHz ;RCAP2=FFDCH 9.6KHz ;RCAP2=FFE8H 19.2KHz ;RCAP2=FFDCH 19.2KHzI
229 ;RCAP2=FFD0H 4.8KHz ;RCAP2=FFB8H 4.8KHz ;RCAP2=FFD0H 9.6KHz ;RCAP2=FFB8H 9.6KHzI
230 ;RCAP2=FFA0H 2.4KHz ;RCAP2=FF70H 2.4KHz ;RCAP2=FFA0H 4.8KHz ;RCAP2=FF70H 4.8KHzI
231 ;RCAP2=FF40H 1.2KHz ;RCAP2=FEE0H 1.2KHz ;RCAP2=FF40H 2.4KHz ;RCAP2=FEE0H 2.4KHzI
232 ;RCAP2=FE80H 0.6KHz ;RCAP2=FDC0H 0.6KHz ;RCAP2=FE80H 1.2KHz ;RCAP2=FDC0H 1.2KHzI
233 ;RCAP2=FD00H 0.3KHz ;RCAP2=FB80H 0.3KHz ;RCAP2=FD00H 0.6KHz ;RCAP2=FB80H 0.6KHzI
234 ;RCAP2=FA00H 150 Hz ;RCAP2=F700H 150 Hz ;RCAP2=FA00H 0.3 Hz ;RCAP2=F700H 0.3 HzI
235 ; ;RCAP2=F400H 150Hz ;RCAP2=EE00H 150HzI
236 ;RCAP2=FFB6H 3113.5Hz ;RCAP2=FF91H 3113.5Hz ;RCAP2=EFA3H 110Hz ;RCAP2=EE00H 150HzI
237 ;---------------------------------------------------------------------------------------I
238 // TH0=0xe7; //50ms //100EH 50MS 880EH 50MS 4C0EH 50MS ;2^16-T(MS)*CRY(MHZ)*10^3/12
239 // TL0=0xff; //14.7456MHZ 7.3728MHz 11.0592MHZ
240 */
241 void Tx_int(void){
242 1
243 1 TCON = B00000101;//TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
244 1 TMOD = B00100001; //GATE1 C/T1 M11 M10 GATE0 C/T0 M01 M00
245 1 TH0=0xFB; //1ms //100EH 50MS 880EH 50MS 4C0EH 50MS ;2^16-T(MS)*CRY(MHZ)*10^3/12
246 1 TL0=0x33;
247 1 SCON1=0x50; //串口1
248 1 T2CON=0x34; //T2 串口0
249 1 RCAP2H=0xFF; //4800
250 1 RCAP2L=0x40;
251 1
252 1 //RCAP2H=0xFF; //9600
253 1 //RCAP2L=0xD0;
254 1
255 1 PCON =0 ; // SMOD 0 0 0 GF1 GF0 PD IDL
256 1 SCON=0x50; //SM0 SM1 SM2 REN TB8 RB8 TI RI 方式1 可收 串口0
257 1 TH1 =0xF0; //2400 FD FE
258 1 TR0=1; //定时器0
259 1 TR1=1; //串口0
260 1 TR2=1; //串口1
261 1 }
262
263 void init_devices(void){
264 1 EA = 0;
265 1 externram_enable;
266 1 port_int();
267 1 Tx_int();
268 1 IE=B00010111;/*EA ES1 ET2 ES0 ET1 EX1 ET0 EX0*/
269 1 IP=B00000101;//assign com2 <s0in>s0out //mode com2 9600,0,8,1
270 1 EA=1;
271 1 }
272 //VAL为发送的命令
273 //接收数据送AD_buf 150us
274 /*--------------------------------------*/
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 22
275 void r_2543( unsigned char val )//
276 {
277 1 unsigned char i , fdata , sdata ,sdata1 ;
278 1 AD_CS = 0 ;
279 1 fdata = val ;
280 1 for ( i = 8 ; i > 0 ; i -- )
281 1 {
282 2 sdata = sdata << 1 ;
283 2 if( AD_DOUT ){ sdata++ ; }
284 2 if( fdata & 0x80 ) AD_DIN = 1;
285 2 else AD_DIN = 0 ;
286 2 fdata = fdata << 1 ;
287 2 AD_CLK = 1 ; //上升沿打入数据
288 2 AD_CLK = 0 ; //下降沿读入数据(首次为假动作)
289 2 }
290 1 for ( i = 4 ; i > 0; i --)
291 1 {
292 2 sdata1 = sdata1 << 1 ;
293 2 if( AD_DOUT ){ sdata1++ ; }
294 2 AD_CLK = 1 ; //XCK = 1;//上升沿打入数据
295 2 AD_CLK = 0 ; //XCK = 0;//下降沿读入数据(首次为假动作)
296 2 }
297 1 AD_CS = 1 ;
298 1 ad_buf[0] = ( sdata >> 4 ) & 0x0f;
299 1 ad_buf[1] = ( ( sdata << 4 ) & 0xf0 ) | ( sdata1 & 0x0f ) ;
300 1 }
301
302 //AD_N 数据采集 采7次
303 void rd2543( void ) {
304 1 unsigned char temp ;
305 1 if( tcy >= 2 ){ //考虑电平建立时间 5-15ms
306 2 tcy = 0 ;
307 2 r_2543( AD_N << 4 ) ;
308 2 if(AD_S != 0) {
309 3 temp = AD_S - 1 ; //写第二路数据 ,读第一路数据
310 3 ad_cy[temp*2] = ad_buf[0] ;
311 3 ad_cy[temp*2+1] = ad_buf[1] ;
312 3 }
313 2 AD_S++ ;
314 2 switch ( AD_S ){
315 3 case 1:CC = 0 ; BB = 0 ; AA = 1 ; break ;//1
316 3 case 2:CC = 0 ; BB = 1 ; AA = 0 ; break ;//2
317 3 case 3:CC = 0 ; BB = 1 ; AA = 1 ; break ;//3
318 3 case 4:CC = 1 ; BB = 0 ; AA = 0 ; break ;//4
319 3 case 5:CC = 1 ; BB = 0 ; AA = 1 ; break ;//5
320 3 case 6:CC = 1 ; BB = 1 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -