📄 communication.lst
字号:
C51 COMPILER V7.01 COMMUNICATION 09/29/2004 10:59:29 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE COMMUNICATION
OBJECT MODULE PLACED IN COMMUNICATION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE COMMUNICATION.c BROWSE DEBUG OBJECTEXTEND SRC(.\COMMUNICATION.SRC)
stmt level source
1
2 /***********************************************************/
3 /* */
4 /* CPU:AT89S55 11.059MHZ */
5 /* Copyright 2004.09 Comelit */
6 /* */
7 /* */
8 /***********************************************************/
9 /* Version 1.0 */
10 /***********************************************************/
11 /* baud rate:9600bps/s per bit send time=104.167us */
12 /* per bit send machine time = 104.167/1.08507=96 */
13
14 #include "reg52.h"
15
16
17 #define BUS_BUSY 0
18 #define BUS_IDLE 1
19 #define START_BIT 0
20 /* baud rate */
21 #define TM104US 3
22
23 #define DISABLE_SEND (bit)0
24 #define ENABLE_SEND (bit)1
25 #define HIGH (bit)1
26 #define LOW (bit)0
27
28
29 sbit RXD_PIN = P3^1 ;
30 sbit TXD_PIN = P3^0 ;
31 extern unsigned char data tx_data;
32 extern bit send_F ;
33 #pragma asm
34 // tx_data data 40H
35 // send_F bit 20H.0
36 EXTRN DATA (tx_data)
37 EXTRN BIT (send_F)
38 #pragma endasm
39 void Send_byte(void) ;
40 /***********************************************************/
41 /* arguments: NO */
42 /* returns: 1 allow send data */
43 /* 0 disable send data */
44 /***********************************************************/
45 /*
46 bit Judge_Send(void)
47 {
48
49 if(RXD_PIN == BUS_IDLE)
50 {
51 idle_count = 1 ; // it's need that delay one byte send time
52 ETx = 1 ;
53
54
55
C51 COMPILER V7.01 COMMUNICATION 09/29/2004 10:59:29 PAGE 2
56 }
57 else
58 {
59 idle_count = 0 ;
60 }
61 }
62
63 */
64 /***********************************************************/
65 /***********************************************************/
66 /* tx_data */
67
68 void Send_byte(void)
69 {
70 1 // unsigned char i;
71 1 #pragma asm
72 1
73 1 // f_collisione=FALSE;
74 1 // TXD_PIN = START_BIT;
75 1 CLR TXD_PIN
76 1 // Delay_us(TM104.167US);
77 1 // Delay 104US
78 1 /* 2+2+2+2+1+((1+(1+2)*8)+2)*TM114US = 90 machine time */
79 1 push ACC ;2
80 1 push 0H ;2
81 1 push 1H ;2
82 1 push 7H ;2
83 1 mov R0,#TM104US ;1
84 1 LOOP1: mov R1,#8 ;1
85 1 LOOP2: NOP ;1
86 1 DJNZ R1,LOOP2 ;2
87 1 DJNZ R0,LOOP1 ;2
88 1
89 1 //delay over
90 1
91 1 // for(i=0;i<8;i++)
92 1 //---- Variable 'i?040' assigned to Register 'R7' ----
93 1 CLR A //1 machine CYC
94 1 MOV R7,A //1 machine CYC
95 1 L0001:
96 1 // {
97 1 // if(tx_data &0x80)
98 1 MOV A,tx_data //1 machine CYC
99 1 JNB ACC.7,L0004 //2 machine CYC
100 1 // {
101 1 // TXD_PIN = HIGH ;
102 1 /* last time == 96 machine time */
103 1 SETB TXD_PIN //1 machine CYC
104 1 // Delay_20US start
105 1 MOV R0,#9 //1 machine CYC
106 1 Delay_20CYC:
107 1 DJNZ R0,Delay_20CYC //2 machine CYC
108 1 NOP //1 machine CYC
109 1 //Delay_20US OVER
110 1 // if(!RXD_PIN) //
111 1 JB RXD_PIN,L0005 //2 machine CYC
112 1 // {
113 1 // send_F = DISABLE_SEND ;
114 1 CLR send_F
115 1 RET
116 1 // TXD_PIN = HIGH ;
117 1 // return;
C51 COMPILER V7.01 COMMUNICATION 09/29/2004 10:59:29 PAGE 3
118 1 // }
119 1
120 1 L0005:
121 1 //DELAY 21 machine CYC
122 1 MOV R0,#10 //1 machine CYC
123 1 First_21CYC:
124 1 DJNZ R0,First_21CYC //2 machine CYC
125 1 //delay_21CYC over
126 1 // if(!RXD_PIN)
127 1
128 1 JB RXD_PIN,L0007 //2 machine CYC
129 1 // {
130 1 // send_F = DISABLE_SEND ;
131 1 CLR send_F
132 1 RET
133 1 // TXD_PIN = HIGH ;
134 1 // return;
135 1 // }
136 1
137 1 L0007:
138 1
139 1 // Second_21CYC delay start
140 1 MOV R0,#10 //1 machine CYC
141 1 Second_21CYC:
142 1 DJNZ R0,Second_21CYC //2 machine CYC
143 1 //Second_21CYC delay over
144 1 // if(!RXD_PIN)
145 1 JB RXD_PIN,L0008 //2 machine CYC
146 1 // {
147 1 // send_F = DISABLE_SEND ;
148 1 CLR send_F
149 1 RET
150 1 // TXD_PIN = HIGH ;
151 1 // return;
152 1 // }
153 1 L0008:
154 1 // Third_21CYC delay start
155 1 MOV R0,#10 //1 machine CYC
156 1 Third_21CYC:
157 1 DJNZ R0,Third_21CYC //2 machine CYC
158 1 //Third_21CYC delay over
159 1 // if(!RXD_PIN)
160 1 JB RXD_PIN,L0010 //2 machine CYC
161 1 // {
162 1 // send_F = DISABLE_SEND ;
163 1
164 1 CLR send_F
165 1 RET
166 1 // TXD_PIN = HIGH ;
167 1 // return;
168 1 // }
169 1
170 1 // }
171 1
172 1 L0004:
173 1 // else //0
174 1 // {
175 1 // TXD_PIN = LOW ;
176 1 CLR TXD_PIN // 1 machine CYC
177 1 //Delay_83CYC START
178 1 MOV R0,#40 //1 machine CYC
179 1 Delay_84CYC:
C51 COMPILER V7.01 COMMUNICATION 09/29/2004 10:59:29 PAGE 4
180 1 DJNZ R0,Delay_84CYC //2 machine CYC
181 1 NOP
182 1 NOP
183 1 NOP
184 1 //Delay_83CYC over
185 1 // }
186 1
187 1 L0010:
188 1 // tx_data <<= 1 ;
189 1 NOP // 1 machine CYC
190 1 NOP // 1 machine CYC
191 1 MOV A,tx_data // 1 machine CYC
192 1 // ADD A,ACC
193 1 RL A // 1 machine CYC
194 1 MOV tx_data,A // 1 machine CYC
195 1 // }
196 1 INC R7 // 1 machine CYC
197 1
198 1 CJNE R7,#08H,L0001 // 2 machine CYC
199 1 L0002:
200 1 // TXD_PIN = HIGH ;
201 1 SETB TXD_PIN
202 1 // }
203 1 L0006:
204 1 RET
205 1
206 1 #pragma endasm
207 1 }
208
209 /*
210 for(i=0;i<8;i++)
211 {
212 if(tx_data &0x80) //1
213 {
214 TXD_PIN = HIGH ;
215 // Delay_20US();n start
216 #pragma asm
217 nop
218 #pragma endasm
219 //Delay_20US OVER
220 if(!RXD_PIN) //
221 {
222
223 send_F = DISABLE_SEND ;
224 // TXD_PIN = HIGH ;
225 return;
226 }
227 //DELAY_US(170) START
228 // delay_us(170);
229 #pragma asm
230 nop
231 #pragma endasm
232 //delay_170us over
233 if(!RXD_PIN)
234 {
235 send_F = DISABLE_SEND ;
236 // TXD_PIN = HIGH ;
237 return;
238 }
239 // delay_us(170);
240 //DELAY_US(170) START
241 // delay_us(170);
C51 COMPILER V7.01 COMMUNICATION 09/29/2004 10:59:29 PAGE 5
242 #pragma asm
243 nop
244 #pragma endasm
245 //delay_170us over
246
247 if(!RXD_PIN)
248 {
249 send_F = DISABLE_SEND ;
250 // TXD_PIN = HIGH ;
251 return;
252 }
253 // delay_us(170);
254 //DELAY_US(170) START
255 // delay_us(170);
256 #pragma asm
257 nop
258 #pragma endasm
259 //delay_170us over
260
261 if(!RXD_PIN)
262 {
263 send_F = DISABLE_SEND ;
264 // TXD_PIN = HIGH ;
265 return;
266 }
267 }
268 else //0
269 {
270 TXD_PIN = LOW ;
271 //DELAY_US(620) START
272 #pragma asm
273 nop
274 #pragma endasm
275 //delay_620us over
276 // Delay(620US);
277 }
278
279 tx_data <<= 1 ;
280 }
281
282 TXD_PIN = HIGH ;
283 }
284
285 */
286
287
288
289
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 403 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -