📄 ckcom.lst
字号:
C51 COMPILER V8.01 CKCOM 04/29/2006 19:08:29 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE CKCOM
OBJECT MODULE PLACED IN CKCom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CKCom.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2 #include "Mylib.h"
3
4
5 sbit En1=P1^5; //control KbData,CpuTxd to CkData
6 sbit En2=P1^6; //control CpuTxd to PcRxd
7 sbit En3=P1^7; //control CkData,PcTxd to CpuRxd
8 uchar PcState,KeyBuf;
9 uchar CkState=0;
10 bit ReceivePcFlag=0,CkRxdFlagOk,PcRxdFlagOk;
11 bit ReceiveCkFlag=1;
12 uchar CkBuf[8];
13 uchar PcKeyBuf[10];
14 sbit test=P1^0;
15 sbit test1=P1^1;
16 sbit test2=P1^2;
17 sbit test3=P1^3;
18 bit OkToPcFlag;
19 void SysInt()
20 {
21 1 SCON=0xd0;
22 1 TMOD=0x21;
23 1 //TH1=0xf4; //use 11.059M 振荡 波特率2.4k 9bit传送
24 1 //TH1=0Xf2; //use 24M 振荡 波特率4.464k 9bit传送
25 1 TH1=0Xe6; //use 24M 振荡 波特率2.4k 9bit传送
26 1 TR1=1;
27 1 TR0=1;
28 1 ET0=1;
29 1 ES=1;
30 1 EA=1;
31 1 En1=0;
32 1 En2=0;
33 1 En3=0;
34 1 }
35
36 void timer0() interrupt 1
37 {
38 1 static uchar time0low;
39 1 TR0=0;
40 1 TH0=0x3c; //进入中断需33个机器周期
41 1 TL0=0xd1; //时钟每次中断误差为正负1US
42 1 TR0=1;
43 1 time0low++;
44 1 if(time0low==40)
45 1 {
46 2 time0low=0;
47 2 OkToPcFlag=1;
48 2 }
49 1
50 1 }
51 void Delay600us()
52 { uint i;
53 1 for( i=0;i<300;i++)
54 1 ;
55 1
C51 COMPILER V8.01 CKCOM 04/29/2006 19:08:29 PAGE 2
56 1 }
57 void Communicate() interrupt 4
58 {
59 1 uchar RBuf;
60 1 static uchar i=0;
61 1 static uchar KeyCounter=0;
62 1 ET0=0;
63 1 if(RI)
64 1 {
65 2 RI=0;
66 2
67 2 RBuf=SBUF;
68 2 if(ReceivePcFlag)
69 2 {
70 3
71 3 if(RBuf==0xbb)
72 3 test3=~test3;
73 3 switch(PcState)
74 3 {
75 4 case 0: if(RBuf==0xaa)
76 4 PcState=1;
77 4 else
78 4 PcState=0;
79 4 break;
80 4
81 4 case 1: KeyBuf=RBuf;
82 4 if(KeyBuf==0xbb)
83 4 {
84 5
85 5 PcKeyBuf[KeyCounter]=KeyBuf;
86 5 KeyCounter=0;
87 5 PcRxdFlagOk=1;
88 5 ReceivePcFlag=0;
89 5 PcState=0;
90 5 CkState=0;
91 5 i=0;
92 5 SCON=0Xd0;
93 5 En3=0;
94 5
95 5 }
96 4 else
97 4 {
98 5 PcKeyBuf[KeyCounter]=KeyBuf;
99 5 KeyCounter++;
100 5 }
101 4
102 4
103 4 break;
104 4 default:break;
105 4 }
106 3 }
107 2 else
108 2 {
109 3 switch (CkState)
110 3 {
111 4 case 0: if(RBuf==0xff)
112 4 CkState=1;
113 4 else
114 4 CkState=0;
115 4 break;
116 4 case 1: if(RBuf==0x09)
117 4 CkState=2;
C51 COMPILER V8.01 CKCOM 04/29/2006 19:08:29 PAGE 3
118 4 else
119 4 if(RBuf==0xff)
120 4 break;
121 4 else
122 4 if(RBuf==02)
123 4 CkState=3;
124 4 else
125 4 CkState=0;
126 4 break;
127 4 case 2: {
128 5 CkBuf[i]=RBuf;
129 5 if(i==7)
130 5 {
131 6 test=~test;
132 6
133 6 i=0;
134 6 CkState=4;
135 6 }
136 5 else
137 5 i++;
138 5 }
139 4 break;
140 4 case 3: {
141 5
142 5 CkState=0;
143 5 }
144 4 break;
145 4 case 4: if(RBuf==0xfe)
146 4 {
147 5 CkRxdFlagOk=1;
148 5 CkState=0;
149 5 }
150 4 break;
151 4 default: break;
152 4 }
153 3 }
154 2
155 2
156 2 }
157 1 ET0=1;
158 1
159 1 }
160 void SentKeyToCk()
161 {
162 1 if(KeyBuf!=0xaa)
163 1 {
164 2 TB8=0;
165 2 SBUF=0x6;
166 2 while(!TI)
167 2 ;
168 2 TI=0;
169 2 KeyBuf=KeyBuf&0xff;
170 2 TB8=P;
171 2 SBUF=KeyBuf;
172 2 while(!TI)
173 2 ;
174 2 TI=0;
175 2 }
176 1 else
177 1 {
178 2 TB8=1;
179 2 SBUF=0xfe;
C51 COMPILER V8.01 CKCOM 04/29/2006 19:08:29 PAGE 4
180 2
181 2 while(!TI)
182 2 ;
183 2 TI=0;
184 2 TB8=1;
185 2 SBUF=04;//0x6;
186 2 while(!TI)
187 2 ;
188 2 TI=0;
189 2 TB8=0;
190 2 SBUF=03;//KeyBuf;
191 2 while(!TI)
192 2 ;
193 2 TI=0;
194 2 }
195 1 }
196 void SentCkToPc()
197 {
198 1 uchar i;
199 1 SCON=0X50;
200 1 SBUF=0xaa;
201 1 TB8=P;
202 1 while(!TI)
203 1 ;
204 1 TI=0;
205 1 for(i=0;i<8;i++)
206 1 {
207 2 SBUF=CkBuf[i];
208 2 TB8=P;
209 2 while(!TI)
210 2 ;
211 2 TI=0;
212 2 }
213 1 SCON=0Xd0;
214 1 }
215 uchar datastate=1;
216 void Run()
217 {
218 1 static uchar a=0;
219 1 if(CkRxdFlagOk)
220 1 {
221 2 if(PcRxdFlagOk)
222 2 {
223 3 ES=0;
224 3 if(PcKeyBuf[a]!=0xbb)
225 3 {
226 4 KeyBuf=PcKeyBuf[a];
227 4 En2=1;
228 4 Delay600us();
229 4 SentKeyToCk();
230 4 Delay600us();
231 4 En2=0;
232 4 a++;
233 4 }
234 3 else
235 3 {
236 4 PcRxdFlagOk=0;
237 4 a=0;
238 4 }
239 3 ES=1;
240 3 }
241 2 ES=1;
C51 COMPILER V8.01 CKCOM 04/29/2006 19:08:29 PAGE 5
242 2 CkRxdFlagOk=0;
243 2
244 2 }
245 1 if(OkToPcFlag)
246 1 {
247 2 ES=0;
248 2 OkToPcFlag=0;
249 2 En1=1;
250 2 SentCkToPc();
251 2 En1=0;
252 2 En3=1; // 关闭不能采数
253 2 ReceivePcFlag=1;
254 2 SCON=0X50;
255 2 ES=1;
256 2 CkRxdFlagOk=0;
257 2 }
258 1 }
259
260 void main()
261 {
262 1 SysInt();
263 1 while(1)
264 1 Run();
265 1 }
266
267
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 458 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 ----
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -