?? rs232.lst
字號(hào):
C51 COMPILER V7.06 RS232 07/04/2003 09:23:58 PAGE 1
C51 COMPILER V7.06, 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 /****************************************Copyright (c)**************************************************
2 ** 廣州周立功單片機(jī)發(fā)展有限公司
3 ** 研 究 所
4 ** 產(chǎn)品一部
5 **
6 ** http://www.zlgmcu.com
7 **
8 **--------------文件信息--------------------------------------------------------------------------------
9 **文 件 名: RS232.C
10 **創(chuàng) 建 人: 葉皓賁
11 **最后修改日期: 2003-3-4
12 **描 述: DP-1581串口及I2C eeprom演示程序
13 **
14 **--------------歷史版本信息----------------------------------------------------------------------------
15 ** 創(chuàng)建人: 葉皓賁
16 ** 版 本: 1.0
17 ** 日 期: 2003-3-4
18 ** 描 述: DP-1581演示程序
19 **
20 **------------------------------------------------------------------------------------------------------
21 ** 修改人:
22 ** 版 本:
23 ** 日 期:
24 ** 描 述:
25 **
26 **--------------當(dāng)前版本修訂------------------------------------------------------------------------------
27 ** 修改人:
28 ** 日 期:
29 ** 描 述:
30 **
31 **------------------------------------------------------------------------------------------------------
32 ********************************************************************************************************/
33
34 #include "config.h"
35
36 /* 全局變量 */
37
38 uchar *temp,j=0,i;
39 uchar rec_com[64];//接收緩沖區(qū)
40
41 bit timeout=0; //接收超時(shí)標(biāo)志
42 bit rec_ok=0; //接收成功標(biāo)志
43
44 main()
45 {
46 1 TMOD=0X21;
47 1 TH1=0XFd;
48 1 TL1=0XFd;
49 1 SCON=0X50;
50 1 PCON=0;
51 1 TR1=1;
52 1 ET0=1;
53 1 ES=1;
54 1 EA=1;
55 1 while(1)
C51 COMPILER V7.06 RS232 07/04/2003 09:23:58 PAGE 2
56 1 {
57 2 while(timeout==0&&rec_ok==0);
58 2 if(timeout)//超時(shí)處理
59 2 {
60 3 //send error for commad
61 3 rec_com[0]=0x12;
62 3 rec_com[1]=0xa1;
63 3 rec_com[2]=2;
64 3 rec_com[3]=0;
65 3 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
66 3 ES=0;
67 3 for(i=0;i<5;i++)
68 3 {
69 4 SBUF=rec_com[i];
70 4 while(TI==0);
71 4 TI=0;
72 4 }
73 3 ES=1;
74 3 timeout=0;
75 3 rec_com[0]=0;
76 3 rec_com[1]=0;
77 3 }
78 2 if(rec_ok) //接收成功!
79 2 {
80 3 if(rec_com[1]!=0x20&&rec_com[1]!=0x21)//命令錯(cuò)誤!
81 3 {
82 4 rec_com[0]=0x12;
83 4 rec_com[1]=0xa1;
84 4 rec_com[2]=2;
85 4 rec_com[3]=0;
86 4 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
87 4 ES=0;
88 4 for(i=0;i<5;i++)
89 4 {
90 5 SBUF=rec_com[i];
91 5 while(TI==0);
92 5 TI=0;
93 5 }
94 4 ES=1;
95 4 //send error for command
96 4 }
97 3 else if(rec_com[1]==0x20)//收到讀命令
98 3 {
99 4 i=rec_com[5];
100 4 if(IRcvStr(CSI24WC02,rec_com[3],&rec_com[3],rec_com[5]))//讀成功
101 4 {
102 5 rec_com[0]=0x12;
103 5 rec_com[1]=0xa0;
104 5 rec_com[2]=i+2;
105 5 for(j=0;j<(i+3);j++)
106 5 rec_com[i+4]=rec_com[j]^rec_com[j+1];
107 5 ES=0;
108 5 j=j+2;
109 5 for(i=0;i<j;i++)
110 5 {
111 6 SBUF=rec_com[i];
112 6 while(TI==0);
113 6 TI=0;
114 6 }
115 5 ES=1;
116 5 }
117 4 //send read ok;
C51 COMPILER V7.06 RS232 07/04/2003 09:23:58 PAGE 3
118 4 else//send read error讀失敗
119 4 {
120 5 rec_com[0]=0x12;
121 5 rec_com[1]=0xa1;
122 5 rec_com[2]=2;
123 5 rec_com[3]=1;
124 5 rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
125 5 ES=0;
126 5 for(i=0;i<5;i++)
127 5 {
128 6 SBUF=rec_com[i];
129 6 while(TI==0);
130 6 TI=0;
131 6 }
132 5 ES=1;
133 5 }
134 4 }
135 3 else if(rec_com[1]==0x21)//收到寫命令
136 3 {
137 4 j=rec_com[2]-4;
138 4 if(ISendStr(CSI24WC02,rec_com[3],&rec_com[5],j))//寫成功
139 4 {
140 5 rec_com[0]=0x12;
141 5 rec_com[1]=0xa0;
142 5 rec_com[2]=1;
143 5 rec_com[3]=rec_com[0]^rec_com[1]^rec_com[2];
144 5 ES=0;
145 5 for(i=0;i<4;i++)
146 5 {
147 6 SBUF=rec_com[i];
148 6 while(TI==0);
149 6 TI=0;
150 6 }
151 5 ES=1;
152 5 }
153 4 else//寫失敗
154 4 {
155 5 rec_com[0]=0x12;
156 5 rec_com[1]=0xa1;
157 5 rec_com[2]=3;
158 5 rec_com[3]=0;
159 5 rec_com[4]=0;
160 5 rec_com[5]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
161 5 ES=0;
162 5 for(i=0;i<6;i++)
163 5 {
164 6 SBUF=rec_com[i];
165 6 while(TI==0);
166 6 TI=0;
167 6 }
168 5 ES=1;
169 5 }
170 4 }
171 3 rec_com[0]=0;
172 3 rec_com[1]=0;
173 3 rec_ok=0;
174 3 }
175 2 }
176 1 }
177 void int_com() interrupt 4
178 {
179 1 uchar * tmp,counter;
C51 COMPILER V7.06 RS232 07/04/2003 09:23:58 PAGE 4
180 1 if(RI==1)
181 1 {
182 2 TR0=1;
183 2 TH0=-60000/256;
184 2 TL0=-60000/256;
185 2 rec_com[0]=SBUF;
186 2 RI=0;
187 2 while(RI==0&&timeout==0);
188 2 rec_com[1]=SBUF;
189 2 RI=0;
190 2 while(RI==0&&timeout==0);
191 2 rec_com[2]=SBUF;
192 2 RI=0;
193 2 tmp=&(rec_com[3]);
194 2 counter=rec_com[2];
195 2 do
196 2 {
197 3 while(RI==0&&timeout==0);
198 3 *tmp=SBUF;
199 3 tmp++;
200 3 counter--;
201 3 RI=0;
202 3 }
203 2 while(timeout==0&&counter!=0);
204 2 if(!timeout)
205 2 rec_ok=1;
206 2 TR0=0;
207 2 }
208 1 if(TI==1)
209 1 {
210 2 TI=0;
211 2 }
212 1 }
213 void int_t0() interrupt 1
214 {
215 1 static counter=0;
216 1 counter++;
217 1 TH0=-60000/256;
218 1 TL0=-60000%256;
219 1 if(counter==5)
220 1 {
221 2 timeout=1;
222 2 counter=0;
223 2 }
224 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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -