📄 rs232.lst
字号:
C51 COMPILER V6.23a RS232 11/20/2002 09:43:19 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE RS232
OBJECT MODULE PLACED IN Rs232.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Rs232.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "reg66x.h"
2 #include "668i2c.h" /*包含VI2C软件包*/
3
4 #define uchar unsigned char
5 #define CSI24WC02 0xA0 /*定义器件地址*/
6
7
8 uchar *temp,j=0,i;
9 uchar rec_com[64];//接收缓冲区
10
11 bit timeout=0; //接收超时标志
12 bit rec_ok=0; //接收成功标志
13
14 main()
15 {
16 1 TMOD=0X21;
17 1 TH1=0XFA;
18 1 TL1=0XFA;
19 1 S0CON=0X50;
20 1 PCON=0;
21 1 TR1=1;
22 1 ET0=1;
23 1 ES0=1;
24 1 EA=1;
25 1 while(1)
26 1 {
27 2 while(timeout==0&&rec_ok==0);
28 2 if(timeout)//超时处理
29 2 {
30 3 //send error for commad
31 3 rec_com[0]=0x12;
32 3 rec_com[1]=0xa1;
33 3 rec_com[2]=2;
34 3 rec_com[3]=0;
35 3 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
36 3 ES0=0;
37 3 for(i=0;i<5;i++)
38 3 {
39 4 S0BUF=rec_com[i];
40 4 while(TI==0);
41 4 TI=0;
42 4 }
43 3 ES0=1;
44 3 timeout=0;
45 3 rec_com[0]=0;
46 3 rec_com[1]=0;
47 3 }
48 2 if(rec_ok) //接收成功!
49 2 {
50 3 if(rec_com[1]!=0x20&&rec_com[1]!=0x21)//命令错误!
51 3 {
52 4 rec_com[0]=0x12;
53 4 rec_com[1]=0xa1;
54 4 rec_com[2]=2;
55 4 rec_com[3]=0;
C51 COMPILER V6.23a RS232 11/20/2002 09:43:19 PAGE 2
56 4 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
57 4 ES0=0;
58 4 for(i=0;i<5;i++)
59 4 {
60 5 S0BUF=rec_com[i];
61 5 while(TI==0);
62 5 TI=0;
63 5 }
64 4 ES0=1;
65 4 //send error for command
66 4 }
67 3 else if(rec_com[1]==0x20)//收到读命令
68 3 {
69 4 i=rec_com[5];
70 4 if(IRcvStr(CSI24WC02,rec_com[3],&rec_com[3],rec_com[5]))//读成功
71 4 {
72 5 rec_com[0]=0x12;
73 5 rec_com[1]=0xa0;
74 5 rec_com[2]=i+2;
75 5 for(j=0;j<(i+3);j++)
76 5 rec_com[i+4]=rec_com[j]^rec_com[j+1];
77 5 ES0=0;
78 5 j=j+2;
79 5 for(i=0;i<j;i++)
80 5 {
81 6 S0BUF=rec_com[i];
82 6 while(TI==0);
83 6 TI=0;
84 6 }
85 5 ES0=1;
86 5 }
87 4 //send read ok;
88 4 else//send read error读失败
89 4 {
90 5 rec_com[0]=0x12;
91 5 rec_com[1]=0xa1;
92 5 rec_com[2]=2;
93 5 rec_com[3]=1;
94 5 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
95 5 ES0=0;
96 5 for(i=0;i<5;i++)
97 5 {
98 6 S0BUF=rec_com[i];
99 6 while(TI==0);
100 6 TI=0;
101 6 }
102 5 ES0=1;
103 5 }
104 4 }
105 3 else if(rec_com[1]==0x21)//收到写命令
106 3 {
107 4 j=rec_com[2]-4;
108 4 if(ISendStr(CSI24WC02,rec_com[3],&rec_com[5],j))//写成功
109 4 {
110 5 rec_com[0]=0x12;
111 5 rec_com[1]=0xa0;
112 5 rec_com[2]=1;
113 5 rec_com[3]=rec_com[0]^rec_com[1]^rec_com[2];
114 5 ES0=0;
115 5 for(i=0;i<4;i++)
116 5 {
117 6 S0BUF=rec_com[i];
C51 COMPILER V6.23a RS232 11/20/2002 09:43:19 PAGE 3
118 6 while(TI==0);
119 6 TI=0;
120 6 }
121 5 ES0=1;
122 5 }
123 4 else//写失败
124 4 {
125 5 rec_com[0]=0x12;
126 5 rec_com[1]=0xa1;
127 5 rec_com[2]=3;
128 5 rec_com[3]=0;
129 5 rec_com[4]=0;
130 5 rec_com[5]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
131 5 ES0=0;
132 5 for(i=0;i<6;i++)
133 5 {
134 6 S0BUF=rec_com[i];
135 6 while(TI==0);
136 6 TI=0;
137 6 }
138 5 ES0=1;
139 5 }
140 4 }
141 3 rec_com[0]=0;
142 3 rec_com[1]=0;
143 3 rec_ok=0;
144 3 }
145 2 }
146 1 }
147 void int_com() interrupt 4
148 {
149 1 uchar * tmp,counter;
150 1 if(RI==1)
151 1 {
152 2 TR0=1;
153 2 TH0=-60000/256;
154 2 TL0=-60000/256;
155 2 rec_com[0]=S0BUF;
156 2 RI=0;
157 2 while(RI==0&&timeout==0);
158 2 rec_com[1]=S0BUF;
159 2 RI=0;
160 2 while(RI==0&&timeout==0);
161 2 rec_com[2]=S0BUF;
162 2 RI=0;
163 2 tmp=&(rec_com[3]);
164 2 counter=rec_com[2];
165 2 do
166 2 {
167 3 while(RI==0&&timeout==0);
168 3 *tmp=S0BUF;
169 3 tmp++;
170 3 counter--;
171 3 RI=0;
172 3 }
173 2 while(timeout==0&&counter!=0);
174 2 if(!timeout)
175 2 rec_ok=1;
176 2 TR0=0;
177 2 }
178 1 if(TI==1)
179 1 {
C51 COMPILER V6.23a RS232 11/20/2002 09:43:19 PAGE 4
180 2 TI=0;
181 2 }
182 1 }
183 void int_t0() interrupt 1
184 {
185 1 static counter=0;
186 1 counter++;
187 1 TH0=-60000/256;
188 1 TL0=-60000%256;
189 1 if(counter==5)
190 1 {
191 2 timeout=1;
192 2 counter=0;
193 2 }
194 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 625 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 71 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -