?? rs232.lst
字號(hào):
C51 COMPILER V6.23a RS232 11/20/2002 10:21:01 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 #define SLA_ADDR 0XC0
7
8 uchar *temp,j=0,i;
9 uchar rec_com[64];//接收緩沖區(qū)
10
11 bit timeout=0; //接收超時(shí)標(biāo)志
12 bit rec_ok=0; //接收成功標(biāo)志
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(1)
28 2 {
29 3 if(rec_com[3]==SLA_ADDR)
30 3 if(timeout==1||rec_ok==1)
32 3 }
33 2 if(timeout)//超時(shí)處理
34 2 {
35 3 //send error for commad
36 3 rec_com[0]=0x12;
37 3 rec_com[1]=0xa1;
38 3 rec_com[2]=2;
39 3 rec_com[3]=0;
40 3 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
41 3 ES0=0;
42 3 for(i=0;i<5;i++)
43 3 {
44 4 S0BUF=rec_com[i];
45 4 while(TI==0);
46 4 TI=0;
47 4 }
48 3 ES0=1;
49 3 timeout=0;
50 3 rec_com[0]=0;
51 3 rec_com[1]=0;
52 3 rec_com[3]=0;
53 3 }
54 2 if(rec_ok) //接收成功!
55 2 {
C51 COMPILER V6.23a RS232 11/20/2002 10:21:01 PAGE 2
56 3 if(rec_com[1]!=0x20&&rec_com[1]!=0x21)//命令錯(cuò)誤!
57 3 {
58 4 rec_com[0]=0x12;
59 4 rec_com[1]=0xa1;
60 4 rec_com[2]=2;
61 4 rec_com[3]=0;
62 4 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
63 4 ES0=0;
64 4 for(i=0;i<5;i++)
65 4 {
66 5 S0BUF=rec_com[i];
67 5 while(TI==0);
68 5 TI=0;
69 5 }
70 4 ES0=1;
71 4 //send error for command
72 4 }
73 3 else if(rec_com[1]==0x20)//收到讀命令
74 3 {
75 4 i=rec_com[6];
76 4 if(IRcvStr(CSI24WC02,rec_com[4],&rec_com[3],rec_com[6]))//讀成功
77 4 {
78 5 rec_com[0]=0x12;
79 5 rec_com[1]=0xa0;
80 5 rec_com[2]=i+2;
81 5 for(j=0;j<(i+3);j++)
82 5 rec_com[i+4]=rec_com[j]^rec_com[j+1];
83 5 ES0=0;
84 5 j=j+2;
85 5 for(i=0;i<j;i++)
86 5 {
87 6 S0BUF=rec_com[i];
88 6 while(TI==0);
89 6 TI=0;
90 6 }
91 5 ES0=1;
92 5 }
93 4 //send read ok;
94 4 else//send read error讀失敗
95 4 {
96 5 rec_com[0]=0x12;
97 5 rec_com[1]=0xa1;
98 5 rec_com[2]=2;
99 5 rec_com[3]=1;
100 5 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
101 5 ES0=0;
102 5 for(i=0;i<5;i++)
103 5 {
104 6 S0BUF=rec_com[i];
105 6 while(TI==0);
106 6 TI=0;
107 6 }
108 5 ES0=1;
109 5 }
110 4 }
111 3 else if(rec_com[1]==0x21)//收到寫命令
112 3 {
113 4 j=rec_com[2]-4;
114 4 if(ISendStr(CSI24WC02,rec_com[4],&rec_com[6],j))//寫成功
115 4 {
116 5 rec_com[0]=0x12;
117 5 rec_com[1]=0xa0;
C51 COMPILER V6.23a RS232 11/20/2002 10:21:01 PAGE 3
118 5 rec_com[2]=1;
119 5 rec_com[3]=rec_com[0]^rec_com[1]^rec_com[2];
120 5 ES0=0;
121 5 for(i=0;i<4;i++)
122 5 {
123 6 S0BUF=rec_com[i];
124 6 while(TI==0);
125 6 TI=0;
126 6 }
127 5 ES0=1;
128 5 }
129 4 else//寫失敗
130 4 {
131 5 rec_com[0]=0x12;
132 5 rec_com[1]=0xa1;
133 5 rec_com[2]=3;
134 5 rec_com[3]=0;
135 5 rec_com[4]=0;
136 5 rec_com[5]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
137 5 ES0=0;
138 5 for(i=0;i<6;i++)
139 5 {
140 6 S0BUF=rec_com[i];
141 6 while(TI==0);
142 6 TI=0;
143 6 }
144 5 ES0=1;
145 5 }
146 4 }
147 3 rec_com[0]=0;
148 3 rec_com[1]=0;
149 3 rec_ok=0;
150 3 }
151 2 rec_com[3]=0;
152 2 }
153 1 }
154 void int_com() interrupt 4
155 {
156 1 uchar * tmp,counter;
157 1 if(RI==1)
158 1 {
159 2 TR0=1;
160 2 TH0=-60000/256;
161 2 TL0=-60000/256;
162 2 rec_com[0]=S0BUF;
163 2 RI=0;
164 2 while(RI==0&&timeout==0);
165 2 rec_com[1]=S0BUF;
166 2 RI=0;
167 2 while(RI==0&&timeout==0);
168 2 rec_com[2]=S0BUF;
169 2 RI=0;
170 2 while(RI==0&&timeout==0);
171 2 rec_com[3]=S0BUF;
172 2 RI=0;
173 2 tmp=&(rec_com[4]);
174 2 counter=rec_com[2]-1;
175 2 do
176 2 {
177 3 while(RI==0&&timeout==0);
178 3 *tmp=S0BUF;
179 3 tmp++;
C51 COMPILER V6.23a RS232 11/20/2002 10:21:01 PAGE 4
180 3 counter--;
181 3 RI=0;
182 3 }
183 2 while(timeout==0&&counter!=0);
184 2 if(!timeout)
185 2 rec_ok=1;
186 2 TR0=0;
187 2 }
188 1 if(TI==1)
189 1 {
190 2 TI=0;
191 2 }
192 1 }
193 void int_t0() interrupt 1
194 {
195 1 static counter=0;
196 1 counter++;
197 1 TH0=-60000/256;
198 1 TL0=-60000%256;
199 1 if(counter==5)
200 1 {
201 2 timeout=1;
202 2 counter=0;
203 2 }
204 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 651 ----
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)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -