📄 1503cs.lst
字号:
13 =1 //串口0中断
14 =1 void serial_0(void) interrupt 4 using 2{
15 1 =1 //******************发送数据******************
16 1 =1 if(TI){
17 2 =1 TI=0;
18 2 =1 if(fjsq>0){
19 3 =1 SBUF=*(fsj++);
20 3 =1 fjsq--;
21 3 =1 }
22 2 =1 else sjyfs=1;
23 2 =1 }
24 1 =1 //*******************接收数据***************
25 1 =1 if(RI){
26 2 =1 RI=0;
27 2 =1 BUFF1 = BUFF2;
28 2 =1 BUFF2 = BUFF3;
29 2 =1 BUFF3 = BUFF4;
30 2 =1 BUFF4 = BUFF5;
31 2 =1 BUFF5 = BUFF6;
32 2 =1 BUFF6 = BUFF7;
33 2 =1 BUFF7 = BUFF8;
34 2 =1 BUFF8 = SBUF ;
35 2 =1
36 2 =1 if( BUFF1 == 0XEB ){
37 3 =1 if( BUFF8 == sums( BUFF ) ) { //校验正确
38 4 =1 if( sjyfs ) { //正在处理其它通信数据 通信请求无效 !
39 5 =1 switch ( BUFF2) {
40 6 =1
41 6 =1 case 0x01:// 电源变压器参数控制
42 6 =1 if ( (BUFF5 == 0xff )&&(!zbh)){
43 7 =1 ykz = 1 ;
44 7 =1 ykml = 0xA5 ;
45 7 =1 zjcsml = 0 ;
46 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA ;
47 7 =1 }
48 6 =1 break ;
49 6 =1 case 0x02:// 控制回路检测
50 6 =1 if ( (BUFF5 == 0xff )&&(!zbh) ){
51 7 =1 ykz = 2;
52 7 =1 ykml = 0xA5 ;
53 7 =1 zjcsml = 0 ;
54 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA ;
55 7 =1 }
56 6 =1 break ;
57 6 =1 case 0x03:// 通信回路和接点检测
58 6 =1 if ( (BUFF5 == 0xff )&&(!zbh)){
59 7 =1 ykz = 3 ;
60 7 =1 ykml = 0xA5 ;
61 7 =1 zjcsml = 0 ;
62 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA;
63 7 =1 }
64 6 =1 break ;
65 6 =1 case 0x04: //停止测试 回到初始测试状态
66 6 =1 if ( BUFF5 == 0x00 ){
67 7 =1 zbh = 0 ;
68 7 =1 ykz = 4 ;
69 7 =1 ykml = 0xA5 ;
70 7 =1 zjcsml = 0 ;
71 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA ;
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 15
72 7 =1 }
73 6 =1 break ;
74 6 =1
75 6 =1 case 0x05: // 手动控制
76 6 =1 if( zbh == 0 ){ // 自控时不手控
77 7 =1 if( BUFF5 != 0XFF ){ ykz = 5 ; ykz1 = BUFF5 ; ykml = 0xA5 ; }
78 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA ;
79 7 =1 }
80 6 =1 else if( BUFF5 ==0XFF ){ BUFF5 = 0XFE ; BUFF6 = csbz ; sjyfs = 0 ; fjsq = 8 ; fsj =
-BUFF ; SBUF = 0XFA ;} //状态查询
81 6 =1 break;
82 6 =1 case 0x06: //整机测试命令
83 6 =1 if ( (BUFF5 == 0xff )&&(!zbh)){
84 7 =1 ykz = 1 ;
85 7 =1 ykml = 0xA5 ;
86 7 =1 zjcsml = 1 ;
87 7 =1 sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA;
88 7 =1 }
89 6 =1 break ;
90 6 =1
91 6 =1 case 0x07:
92 6 =1 if( txsjcxsj1() == 0 ) break ;
93 6 =1 SBUF = 0XFA ; break ;
94 6 =1 case 0x08:
95 6 =1 if( txsjcxsj2() == 0 ) break ;
96 6 =1 SBUF = 0XFA ; break ;
97 6 =1 case 0x09:
98 6 =1 if( txsjcxsj3() == 0 ) break ;
99 6 =1 SBUF = 0XFA ; break ;
100 6 =1
101 6 =1 case 0x0A: break ;//保留 装置自检
102 6 =1
103 6 =1 case 0x0B: //实时数据查询
104 6 =1 if(!sjcjbz) break ;
105 6 =1 if( cssjcx() == 0 ) break ;
106 6 =1 SBUF = 0XFA ; break ;
107 6 =1 // case 0x0a ~ 0x0F:sjyfs = 0 ; fjsq = 8 ; fsj = BUFF ; SBUF = 0XFA ; break ; //备用命令
108 6 =1 case 0x10:if ( (BUFF5 == 0xaa)&&(!zbh) ){
109 7 =1 AD_N = BUFF6 ;
110 7 =1 ykz1 = BUFF7 ;
111 7 =1 ykz = 0x10 ;
112 7 =1 ykml = 0xA5 ;
113 7 =1 }
114 6 =1 break;
115 6 =1
116 6 =1 }
117 5 =1 }
118 4 =1 }
119 3 =1 }
120 2 =1 }
121 1 =1 }
122 =1
123 =1 //**************************************函数***********************************
124 =1
125 =1 //数据发送时使用SUMF *dzp 数据首址 sjgs 校验数据个数 处理的SUM值
126 =1
127 =1 void sumf(unsigned char *dpp,unsigned char sjgs){
128 1 =1 unsigned char i,temp ;
129 1 =1 unsigned int sum ;
130 1 =1 sum = 0xfa ;
131 1 =1 for(i = 0 ; i<sjgs ;i++)
132 1 =1 {
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 16
133 2 =1 temp = *dpp ;
134 2 =1 sum = sum + temp ;
135 2 =1 dpp++ ;
136 2 =1 }
137 1 =1 *dpp=(char)sum ; // SUML
138 1 =1 }
139 =1
140 =1 //数据接收时使用SUMS *dzp 数据首址 sjgs 校验数据个数 处理的SUM值
141 =1
142 =1 unsigned char sums( unsigned char *dpp){
143 1 =1 unsigned char i,temp ;
144 1 =1 unsigned int sum ;
145 1 =1 sum = 0;
146 1 =1 for(i=0 ; i<7 ;i++)
147 1 =1 {
148 2 =1 temp = *dpp ;
149 2 =1 sum = sum + temp ;
150 2 =1 dpp++ ;
151 2 =1 }
152 1 =1 return (char)sum ;
153 1 =1 }
154 =1 /***************************命令发送***************************/
155 =1 bit txsjcxsj1(void){
156 1 =1 unsigned char i ;
157 1 =1 unsigned char (*dpp)[32] ;
158 1 =1 fshc[0] = BUFF5 ;
159 1 =1 switch ( BUFF5 ) {
160 2 =1 case 0XA0:
161 2 =1 case 0XA1: dpp = dyjcsj ; break ;
162 2 =1 case 0XA2:
163 2 =1 case 0XA3: dpp = dyjcsj + 1 ; break ;
164 2 =1 case 0XA4:
165 2 =1 case 0XA5: dpp = dyjcsj + 2 ; break ;
166 2 =1 case 0XA6:
167 2 =1 case 0XA7: dpp = dyjcsj + 3 ; break ;
168 2 =1 default : return 0 ;
169 2 =1 }
170 1 =1 i = ( BUFF5 & 0x0f ) % 2 ;
171 1 =1 if( i == 0 ){
172 2 =1 for (i = 0 ; i < 16 ;i++ )
173 2 =1 fshc[i+1] = *((*dpp)+i) ;
174 2 =1 }
175 1 =1 else {
176 2 =1 for (i = 0 ; i < 16 ;i++ )
177 2 =1 fshc[i+1] = *((*dpp)+16+i ) ;
178 2 =1 }
179 1 =1 fshc[17]= 0 ;
180 1 =1 sumf(fshc,18 );
181 1 =1 sjyfs = 0 ;
182 1 =1 fjsq = 19 ;
183 1 =1 fsj = fshc ;
184 1 =1 return 1 ;
185 1 =1 }
186 =1
187 =1 bit txsjcxsj2(void){
188 1 =1 unsigned char i ;
189 1 =1 unsigned char (*dpp)[74] ;
190 1 =1 fshc[0] = BUFF5 ;
191 1 =1 switch ( BUFF5 ) {
192 2 =1 case 0XFB: dpp = kzjcsj ; break ;
193 2 =1 case 0XB0: dpp = kzjcsj + 1 ; break ;
194 2 =1 case 0XB1: dpp = kzjcsj + 2 ; break ;
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 17
195 2 =1 case 0XB2: dpp = kzjcsj + 3 ; break ;
196 2 =1 case 0XB3: dpp = kzjcsj + 4 ; break ;
197 2 =1 case 0XB4: dpp = kzjcsj + 5 ; break ;
198 2 =1 case 0XB5: dpp = kzjcsj + 6 ; break ;
199 2 =1 case 0XB6: dpp = kzjcsj + 7 ; break ;
200 2 =1 case 0XB7: dpp = kzjcsj + 8 ; break ;
201 2 =1 default : return 0 ;
202 2 =1 }
203 1 =1 for ( i = 0 ; i < 74 ; i++ )
204 1 =1 fshc[i+1] = *((*dpp)+i) ;
205 1 =1 sumf( fshc , 75 );
206 1 =1 sjyfs = 0 ;
207 1 =1 fjsq = 76 ;
208 1 =1 fsj = fshc ;
209 1 =1 return 1;
210 1 =1 }
211 =1
212 =1 bit txsjcxsj3(void){
213 1 =1 unsigned char i ;
214 1 =1 unsigned char (*dpp)[16] ;
215 1 =1 fshc[0]=BUFF5;
216 1 =1 switch ( BUFF5 ) {
217 2 =1 case 0XC0: dpp = otjcsj ; break;
218 2 =1 case 0XC1: dpp = otjcsj+1; break;
219 2 =1 default : return 0;
220 2 =1 }
221 1 =1 for (i = 0 ; i < 16 ;i++ )
222 1 =1 fshc[i+1] = *((*dpp)+i) ;
223 1 =1 fshc[17]= 0;
224 1 =1 sumf( fshc , 18 );
225 1 =1 sjyfs = 0 ;
226 1 =1 fjsq=19;
227 1 =1 fsj=fshc;
228 1 =1 return 1 ;
229 1 =1 }
230 =1
231 =1 bit cssjcx(void){
232 1 =1 unsigned char i ,*dpp ;
233 1 =1 if(BUFF5 == 0XE0){
234 2 =1 dpp = sssjbuf ;
235 2 =1 fshc[0]=BUFF5;
236 2 =1 for (i = 0 ; i < 84 ;i ++ )
237 2 =1 fshc[i+1] = *(dpp+i) ;
238 2 =1 sumf( fshc , 85 );
239 2 =1 sjyfs = 0 ;
240 2 =1 fjsq = 86 ;
241 2 =1 fsj = fshc;
242 2 =1 return 1 ;
243 2 =1 }
244 1 =1 return 0 ;
245 1 =1
246 1 =1 }
17 //****************************函数定义************************************
18
19 void cdog(void);//看门狗
20 void H450V(void);//空载
21 void H380V(void);
22 void H330V(void);
23 void H450V1(void);//带负载
24 void H380V1(void);
25 void H330V1(void);
26 void FDY(void) ;
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 18
27 void FDY2(void) ;//分负载,电源不分
28 unsigned char DYPD (void) ;// 返回当前合闸电源序号
29
30 void KZHZ6(unsigned char DYXZ);
31 void KZHZ70(void); //分负载
32 void KZHZ10(void);
33
34 void KZHLHZ(void); //合负载
35
36 void r_2543( unsigned char val ) ;
37 void rd2543(void) ;//延时采集 8路
38 void rd2543_8(void);//直接采集8路
39 void rd2543_1(unsigned char temp);//采集指定一路数据
40
41 void CSTZ(void) ;
42
43 /********************定时器中断*******************************************/
44 void INT0int (void) interrupt 0 using 2 //外部中断0
45 {
46 1 cxwbz = 1 ;
47 1 tjs = 0 ;
48 1 txch1 = TH0;
49 1 txcl1 = TL0;
50 1 }
51 void INT1int (void) interrupt 2 using 2 //外部中断1
52 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -