📄 appdatatrans.lst
字号:
C51 COMPILER V8.08 APPDATATRANS 08/22/2008 14:32:50 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE APPDATATRANS
OBJECT MODULE PLACED IN appdatatrans.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE appdatatrans.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "uip.h"
2 #include "appdatatrans.h"
3 #include "reg51.h"
4 #define DATANUM 200
5 #ifdef DEBUG
#include <stdio.h>
#define PRINT(x) printf("%s", x)
#define PRINTLN(x) printf("%s\n", x)
#else /* DEBUG */
10 #define PRINT(x)
11 #define PRINTLN(x)
12 #endif /* DEBUG */
13 sbit P11 = P1^1;
14 sbit P10 = P1^0;
15 #ifdef F_STATISTICS
16 #if F_STATISTICS == 1
17 #define BUG_NUM 50
18 u8_t xdata count_rx[DATANUM]={0};
19 static u8_t xdata count_tx[DATANUM]={0};
20 #endif /* F_STATISTICS */
21 #endif /* F_STATISTICS */
22
23 #define OVER 0
24 #define READY 1
25
26 #define TURNON 1
27 #define TURNOFF 0
28
29 #define ISO_G 0x47
30 #define ISO_E 0x45
31 #define ISO_T 0x54
32 struct datatrans_state *s;
33 static unsigned char UART_state; //串口发送状态
34 static unsigned int UART_len; //串口数据长度
35 unsigned char *ptr_tx; //串口接收指针
36 unsigned int temp_len; //串口接收数据长度
37 extern unsigned char connect_state;
38 unsigned char ab_count; //不同的计数值在做服务器和做客户端的时候
39 //extern unsigned char tick_count;
40 unsigned char xdata STAT_AB;
41 //unsigned char xdata UARTtimer;
42 void
43 file_init(void)
44 {
45 1 #ifdef F_STATISTICS
46 1 #if F_STATISTICS == 1
47 1 // u8_t idata i;
48 1 s->count=0; temp_len=0;
49 1 ptr_tx=&count_tx[0];
50 1 STAT_AB=0;
51 1 #endif /* F_STATISTICS */
52 1 #endif /* F_STATISTICS */
53 1 }
54
55
C51 COMPILER V8.08 APPDATATRANS 08/22/2008 14:32:50 PAGE 2
56 void
57 datatrans_init(void)
58 {
59 1 file_init();
60 1
61 1 /* Listen to port 80. HTTP WEB PORT 80*/
62 1 uip_listen(HTONS(1234));
63 1
64 1 }
65
66 void
67 datatrans_appcall(void)
68
69 {
70 1 u8_t idata i;
71 1 u8_t xdata *dataptr; //串口发送指针
72 1
73 1 if((uip_conn->lport==HTONS(1234))||(uip_conn->rport==HTONS(1280)))
74 1 /* Pick out the application state from the uip_conn structure. */
75 1 { s = (struct datatrans_state xdata *)(uip_conn->appstate);
76 2 if(uip_conn->lport==HTONS(1234))
77 2 ab_count=40;
78 2 else ab_count=20;
79 2 /* We use the uip_ test functions to deduce why we were
80 2 called. If uip_connected() is non-zero, we were called
81 2 because a remote host has connected to us. If
82 2 uip_newdata() is non-zero, we were called because the
83 2 remote host has sent us new data, and if uip_acked() is
84 2 non-zero, the remote host has acknowledged the data we
85 2 previously sent to it. */
86 2
87 2 if(uip_poll()) {
88 3 // if( (RI==0)&&(temp_len!=0)) //串口接收数据完毕
89 3 // { delay();
90 3 if( (RI==0)&&(temp_len!=0)&&count_tx[temp_len-1]==0xff)
91 3 {s->state=READY; }
92 3
93 3 // }
94 3 if((s->state==READY)&&(temp_len!=0)) //状态可删除
95 3 { s->count=0; //tick_count = 0; //add9
96 4 if(temp_len>DATANUM) //可删除
97 4 {temp_len=DATANUM;}
98 4 uip_slen=temp_len; //从串口接收到的数据 add7
99 4 uip_sappdata = &count_tx[0]; //add5 经过
100 4 s->state=OVER;
101 4 temp_len=0; //串口接收到的数据已经发送出去,串口接收指针复位
102 4 ptr_tx = &count_tx[0];
103 4
104 4 uip_flags=UIP_ACKDATA; //add8
105 4 }
106 3 if((s->count==0)){Timer1on();STAT_AB=1;}
107 3 else if(s->count == ab_count) //每次完成一次传送就关闭
108 3 { //不是此地
109 4 uip_abort();
110 4 s->count=0;
111 4 connect_state=TURNOFF;
112 4 } //建立时间过长,连接关闭
113 3 return;
114 3 }
115 2 else if(uip_newdata())
116 2 {
117 3 s->count=0;
C51 COMPILER V8.08 APPDATATRANS 08/22/2008 14:32:50 PAGE 3
118 3 P10=~P10; //add6
119 3 uip_slen=uip_len;
120 3 if(uip_slen<=DATANUM)
121 3 {
122 4 s->dataptr=uip_appdata; //add4
123 4 for(i=0;i<uip_slen;i++)
124 4 {
125 5 count_rx[i]=*(s->dataptr++);
126 5 }
127 4 uip_slen=0; //important
128 4
129 4 UART_state=READY; //add7
130 4 UART_len=uip_len;
131 4 }
132 3 if(UART_state==READY) //确定为电脑发过来的数据,而不是要本机传数据给PC
133 3 { dataptr=&count_rx[0]; UART_state=OVER; ES=0;
134 4 while (UART_len--)
135 4 { TI=0;
136 5 SBUF=*dataptr++;
137 5 while(!TI) ; //串口发送数据
138 5 //可考虑将这段发送的移到poll()中
139 5 }
140 4 ES=1;
141 4 }
142 3 /**************************数据的复制********************
143 3 if(s->state==READY){
144 3 uip_slen=uip_len; //add5
145 3 for(i=0;i<uip_slen;i++)
146 3 { count_tx[i]=count_rx[i];
147 3 }
148 3 uip_sappdata = &count_tx[0]; //add5 经过
149 3 s->state=OVER;
150 3 }
151 3 //else {uip_flags=UIP_CLOSE;} //add6 可以连续传数据 */
152 3
153 3
154 3
155 3 return;
156 3 }
157 2 else if(uip_connected()) {
158 3 // s->state=READY;
159 3
160 3
161 3 }
162 2 else if(uip_acked())
163 2 {
164 3
165 3
166 3 return;
167 3 }
168 2
169 2
170 2 else if (uip_timedout()) { P11=1; //add6
171 3 return;
172 3 }
173 2 else if(uip_close()||uip_stop()|| ( uip_rexmit()))
174 2 {
175 3 return;
176 3 }
177 2 }
178 1 else{ //可删除
179 2 P11=~P11;
C51 COMPILER V8.08 APPDATATRANS 08/22/2008 14:32:50 PAGE 4
180 2 /* Should never happen. */
181 2 uip_abort();
182 2 return;
183 2 }
184 1 return;
185 1 }
186
187 /*******************串口程序********************************/
188 static void etherdev_UART_isr(void) interrupt 4 //串口中断
189 { if(RI==1) //add8
190 1 {
191 2 RI=0; ES=0;
192 2 if(temp_len<DATANUM){
193 3 *ptr_tx++=SBUF;
194 3 temp_len++; } ES=1;
195 2 return; }
196 1 TI=0;
197 1 return;
198 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 628 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 401 ----
PDATA SIZE = ---- ----
DATA SIZE = 12 2
IDATA SIZE = ---- 1
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 + -