📄 zj.lst
字号:
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 1
DOS C51 COMPILER V4.01, COMPILATION OF MODULE ZJ
OBJECT MODULE PLACED IN E:\W\WZQ\GC\CAN668\C\ZJ.OBJ
COMPILER INVOKED BY: D:\COMP51\C51.EXE E:\W\WZQ\GC\CAN668\C\ZJ.C CD DB SB OE
stmt level source
1 #include<89c51.h>
2 #include<89c668.h>
3 #include<zj.h>
4 #include<IIII.h>
5 #include<ctype.h>
6 #include<intrins.h>
7 #include<24c04.h>
8 //***********************************************************************
9 jq_ys(unsigned int i);
10 chishihua();
11 dog_clr();
12 fs_x(unsigned char x);
13 fs_char(unsigned int a,unsigned char const *b);
14 bit canx_out(unsigned char *j);
15 can_chuli();
16 uart_chuli();
17 eeprom_can(unsigned char a,unsigned char xdata *b);
18 uart_bit();
19 bit char_Comparison(unsigned char *a,unsigned char const *b);
20 error_chuli();
21 unsigned char read(unsigned int address);
22 void write(unsigned int address,unsigned char dd);
23 //***********************************************************************
24 //***********************************************************************
25 //***********************************************************************
26 //***********************************************************************
27 //***********************************************************************
28 main()
29 {
30 1 chishihua();
31 1 uart_bit();
32 1 fs_char((sizeof("\rokok\r")),"\rokok\r");
33 1
34 1 { unsigned int iuiu;
35 2 for(iuiu=0;iuiu<=255;iuiu++)
36 2 {
37 3 EEPROM[iuiu]=0;
38 3 }
39 2 }
40 1
41 1
42 1
43 1 while(1){
44 2
45 2 //判断数据是否溢出
46 2 if(can_Full==1)
47 2 {
48 3 fs_char((sizeof("error(3)\r")),"error(3)\r");
49 3 can_Full=0;
50 3 }
51 2 dog_clr();
52 2 //判断CANX接收缓冲区是否有等待处理的数据
53 2 if(can_w_data!=can_r_data) {can_chuli(); }
54 2 dog_clr();
55 2 //判断串口接收数据是否完成
56 2 if(uart_data_w_Complete==1) {uart_chuli(); uart_data_w_Complete=0;}
57 2 dog_clr();
58 2 //判断错误状态是否改变
59 2 if(can_error==1) {error_chuli(); can_error=0;}
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 2
60 2
61 2 //EEPROM数据是否更新
62 2 if((bb[1]&0x0f)==0x0f) { eeprom_can(1,&EEPROM[0X08]); bb[1]=bb[1]&0xf0; }
63 2 if((bb[1]&0xf0)==0xf0) { eeprom_can(2,&EEPROM[0X0c]); bb[1]=bb[1]&0x0f; }
64 2 if((bb[2]&0x0f)==0x0f) { eeprom_can(3,&EEPROM[0X10]); bb[2]=bb[2]&0xf0; }
65 2 if((bb[2]&0xf0)==0xf0) { eeprom_can(4,&EEPROM[0X14]); bb[2]=bb[2]&0x0f; }
66 2 if((bb[3]&0x0f)==0x0f) { eeprom_can(5,&EEPROM[0X18]); bb[3]=bb[3]&0xf0; }
67 2 if((bb[3]&0xf0)==0xf0) { eeprom_can(6,&EEPROM[0X1c]); bb[3]=bb[3]&0x0f; }
68 2 if((bb[4]&0x0f)==0x0f) { eeprom_can(7,&EEPROM[0X20]); bb[4]=bb[4]&0xf0; }
69 2
70 2 }}
71 //***********************************************************************
72 //****************[ 1ms ys ]********************
73 jq_ys(unsigned int i) /***循环延时函数,延时基数为 1MS ***/
74 {
75 1 unsigned int a;
76 1 while(i>=1)
77 1 {
78 2 i=i-1;
79 2 a=68;
80 2 while (a>=1)
81 2 {
82 3 a=a-1;
83 3 }
84 2 }
85 1 }
86 //***********************************************************************
87 chishihua()
88 {
89 1 P0=0XFF;
90 1 P1=0XFF;
91 1 P2=0XFF;
92 1 P3=0XFF;
93 1 //看门狗
94 1 CCAPM4=0X4C;
95 1 CCAP4L=0XFF;
96 1 CCAP4H=0XFF;
97 1 CMOD=0X44;
98 1 CCON=0X40;
99 1 //12c
100 1 S1ADR=0XA0;
101 1 S1CON=0X0c5;
102 1 //串口初始化
103 1 TMOD=0X22; //定时器0用于看门狗
104 1 TH0=TL0=0X090;
105 1 TCON=0x00;
106 1 TH1=TL1=0X0FD;
107 1 SCON=0X50;
108 1 TR1=1;
109 1 TR0=1; //定时器0用于看门狗
110 1 ES=1;
111 1 ES1=1;
112 1 EX1=1;
113 1 PS1=1;
114 1 //设置内部RAM使用,当超过4K范围时读外部地址数据。
115 1 AUXR=0;
116 1 //SJA1000初始化
117 1 {
118 2 unsigned char xdata *j;
119 2 RST=0; //设置CAN0
120 2 jq_ys(100);
121 2 RST=1;
122 2 j=cdr; *j=0x80;
123 2 j=mod; *j=0x01; //复位. 错误、发送、接收中断准许。
124 2 j=ier; *j=0xa7; //总线错误\错误消极\数据溢出\错误报警\发送\接收,中断准许
125 2 j=amr0; *j=0xff; //接收屏蔽0
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 3
126 2 j=amr1; *j=0xff; //接收屏蔽1
127 2 j=amr2; *j=0xff; //接收屏蔽2
128 2 j=amr3; *j=0xff; //接收屏蔽3
129 2 j=btr0; *j=0x7f; //总线时序0
130 2 j=btr1; *j=0x7f; //总线时序1
131 2 j=ocr; *j=0x0aa; //输出控制寄存器
132 2 j=mod; *j=0x00; //进入工作模式
133 2 j=cmr; *j=0x0c;
134 2 }
135 1 //can-id
136 1 id=read(1);
137 1 id=id<<8;
138 1 id=id+read(2);
139 1 if(id>0x07ff) id=2;
140 1 //****************
141 1 EA=1; //开放中断
142 1 }
143 //***************************发送字符***********************************
144 dog_clr()
145 {
146 1 CH=CL=0;
147 1 }
148 //***************************发送字符***********************************
149 fs_x(unsigned char x)
150 {
151 1 EA=0;
152 1 TI=0;
153 1 SBUF=x;
154 1 while(TI==0);
155 1 TI=0;
156 1 EA=1;
157 1 }
158 //***************************发送字符串*********************************
159 fs_char(unsigned int a,unsigned char const *b)
160 {
161 1 unsigned int i;
162 1 if(a>0) a=a-1;
163 1 for(i=0;i<a;i++)
164 1 {
165 2 fs_x(*b);
166 2 b++;
167 2 }
168 1 }
169 //***********************************************************************
170 bit canx_out(unsigned char *j)
171 {
172 1 unsigned char xdata *p;
173 1 unsigned char a;
174 1 unsigned long i;
175 1 p=cmr; *p=0x02; //取消发送
176 1 p=sffdlc; *p=(*(j+1))&0x0f;
177 1 p=sffid1; *p=*j; j=j+1;
178 1 p=sffid2; *p=(*j)&0xe0; j=j+1;
179 1 p=sffsj1; *p=*j; j=j+1;
180 1 p=sffsj2; *p=*j; j=j+1;
181 1 p=sffsj3; *p=*j; j=j+1;
182 1 p=sffsj4; *p=*j; j=j+1;
183 1 p=sffsj5; *p=*j; j=j+1;
184 1 p=sffsj6; *p=*j; j=j+1;
185 1 p=sffsj7; *p=*j; j=j+1;
186 1 p=sffsj8; *p=*j; j=j+1;
187 1 can_ti=0;
188 1 p=cmr; *p=0x01; //开始发送
189 1
190 1 for(i=0;i<0x002fff;i++)
191 1 {
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 4
192 2 if(can_ti==1) { can_ti=0; FS=!FS; return(0); }
193 2 }
194 1 return (1);
195 1 }
196 //***********************************************************************
197 can_chuli()
198 {
199 1 JS=!JS;
200 1 { //串口数据处理
201 2 unsigned char a;
202 2 fs_char((sizeof("can-in")),"can-in"); //发送“CAN-IN”
203 2 fs_char((sizeof(" id=0"))," id=0"); //发送“X id=0”
204 2 a=can_data[can_r_data][0]; a=a>>1;
205 2 fs_x(ascii[a>>4]); //发送id“X”
206 2 fs_x(ascii[a&0x0f]); //发送id“X”
207 2 a=can_data[can_r_data][1]; a=a>>5; a=a&0x07;
208 2 if(((can_data[can_r_data][0])&0x01)!=0) a=a+8;
209 2 fs_x(ascii[a&0x0f]); //发送id“X”
210 2 fs_x(' '); //发送“ ”
211 2 fs_x(ascii[(can_data[can_r_data][2])>>4]); //发送第1个数据
212 2 fs_x(ascii[(can_data[can_r_data][2])&0x0f]);
213 2 fs_x(' '); //发送“ ”
214 2 fs_x(ascii[(can_data[can_r_data][3])>>4]); //发送第1个数据
215 2 fs_x(ascii[(can_data[can_r_data][3])&0x0f]);
216 2 fs_x(' '); //发送“ ”
217 2 fs_x(ascii[(can_data[can_r_data][4])>>4]); //发送第1个数据
218 2 fs_x(ascii[(can_data[can_r_data][4])&0x0f]);
219 2 fs_x(' '); //发送“ ”
220 2 fs_x(ascii[(can_data[can_r_data][5])>>4]); //发送第1个数据
221 2 fs_x(ascii[(can_data[can_r_data][5])&0x0f]);
222 2 fs_x(' '); //发送“ ”
223 2 fs_x(ascii[(can_data[can_r_data][6])>>4]); //发送第1个数据
224 2 fs_x(ascii[(can_data[can_r_data][6])&0x0f]);
225 2 fs_x(' '); //发送“ ”
226 2 fs_x(ascii[(can_data[can_r_data][7])>>4]); //发送第1个数据
227 2 fs_x(ascii[(can_data[can_r_data][7])&0x0f]);
228 2 fs_x(' '); //发送“ ”
229 2 fs_x(ascii[(can_data[can_r_data][8])>>4]); //发送第1个数据
230 2 fs_x(ascii[(can_data[can_r_data][8])&0x0f]);
231 2 fs_x(' '); //发送“ ”
232 2 fs_x(ascii[(can_data[can_r_data][9])>>4]); //发送第1个数据
233 2 fs_x(ascii[(can_data[can_r_data][9])&0x0f]);
234 2 fs_x('\r');
235 2 }
236 1 //i2c处理
237 1 {
238 2 unsigned int eee=0,uuu=0;
239 2 eee=can_data[can_r_data][0];
240 2 eee=eee<<8;
241 2 eee=eee+can_data[can_r_data][1];
242 2 eee=eee>>5;
243 2 uuu=can_data[can_r_data][8];
244 2 uuu=uuu<<8;
245 2 uuu=uuu+can_data[can_r_data][9];
246 2
247 2
248 2 if( (eee==1)&& ((uuu==id)||(uuu==0)) && (can_data[can_r_data][2]<8) && (can_data[can_r_data][
-2]>0) )
249 2 {
250 3 unsigned char ttt=0;
251 3 ttt=can_data[can_r_data][2];
252 3 ttt=ttt-1;
253 3 EEPROM[0]=EEPROM[0]|(er[ttt]);
254 3 ttt=ttt*4; ttt=ttt+0x24;
255 3 EEPROM[ttt]=can_data[can_r_data][3]; ttt=ttt+1;
256 3 EEPROM[ttt]=can_data[can_r_data][4]; ttt=ttt+1;
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 5
257 3 EEPROM[ttt]=can_data[can_r_data][5]; ttt=ttt+1;
258 3 EEPROM[ttt]=can_data[can_r_data][6];
259 3 INT_W=0;
260 3 }
261 2 }
262 1 //接收计数器加一
263 1 can_data[can_r_data][0]=0;
264 1 can_data[can_r_data][1]=0;
265 1 can_data[can_r_data][2]=0;
266 1 can_data[can_r_data][3]=0;
267 1 can_data[can_r_data][4]=0;
268 1 can_data[can_r_data][5]=0;
269 1 can_data[can_r_data][6]=0;
270 1 can_data[can_r_data][7]=0;
271 1 can_data[can_r_data][8]=0;
272 1 can_data[can_r_data][9]=0;
273 1
274 1 can_r_data=can_r_data+1;
275 1 if(can_r_data>=700) can_r_data=0;
276 1 }
277 //***********************************************************************
278 uart_chuli()
279 {
280 1 if(char_Comparison(uart_data,"can-out")==0)
281 1 {
282 2 unsigned char g;
283 2 bit t=1;
284 2 for(g=7;g<31;g++)
285 2 {
286 3 if(!(( isxdigit(uart_data[g])==1)||(uart_data[g]==' '))) goto ret;
287 3 }
288 2 if(uart_data[31]!='\r') goto ret;
289 2 t=0;
290 2 ret:
291 2 if(t==1)
292 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -