📄 wireless.lst
字号:
C51 COMPILER V7.02b WIRELESS 12/10/2005 21:06:49 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE WIRELESS
OBJECT MODULE PLACED IN wireless.OBJ
COMPILER INVOKED BY: E:\EDATOOLS\KEILC7.0\C51\BIN\C51.EXE wireless.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************/
2 /* Copyright (c) 2005, 通信工程学院 */
3 /* All rights reserved. */
4 /* /* 作 者:戴佳 */
5 /*****************************************/
6
7 #include "wireless.h"
8
9 /* 定时器0中断服务子程序 */
10 void timer() interrupt 1 using 2
11 {
12 1 Flag_Delay5ms = 0;
13 1 TH0 = -5000/256;
14 1 TL0 = -5000%256;
15 1 }
16
17 void main(void)
18 {
19 1 ClearT_buf();
20 1 ClearR_buf();
21 1 TXEN = 0; //初始为接收状态
22 1 PWR = 1; //正常工作模式
23 1 CS = 0; //选择频道0
24 1 EA=0;
25 1
26 1 /* 11.0592MHz下,设置串行口9600波特率,工作方式1
27 1 8位数据位,1位停止位,无奇偶校验,*/
28 1 TMOD = 0x21; //定时器1工作模式1,定时器0工作模式2
29 1 SCON = 0x50; //串行口工作方式1,REN=1
30 1 PCON = 0x00; //SMOD=0
31 1
32 1 TL1 = 0xfd;
33 1 TH1 = 0xfd;
34 1 TR1=1; //定时器1开始计时
35 1
36 1 PT0 = 1; //定时器0高优先级
37 1 TH0 = -5000/256; //5ms
38 1 TL0 = -5000%256;
39 1
40 1 IE = 0x90; //EA=1,ES=1:打开串口中断
41 1
42 1 while (1)
43 1 {
44 2 if (Flag_ReqSend) //收到“请求发送”指令
45 2 {
46 3 TXEN = 1; //改变为发射状态
47 3 Delay5ms(); //延时5ms
48 3 GetData(); //采集数据
49 3 Send(); //发送
50 3 Flag_ReqSend = 0;
51 3 SendOver(); //通知PC机发送结束
52 3 TXEN = 0; //重设为接收状态
53 3 }
54 2 else if (Flag_ReqReSend) //收到“请求重发”指令
55 2 {
C51 COMPILER V7.02b WIRELESS 12/10/2005 21:06:49 PAGE 2
56 3 TXEN = 1; //改变为发射状态
57 3 Delay5ms(); //延时5ms
58 3 Send(); //重发
59 3 Flag_ReqReSend = 0;
60 3 SendOver(); //通知PC机发送结束
61 3 TXEN = 0; //重设为接收状态
62 3 }
63 2 }
64 1 }
65
66 /* 串口中断服务子程序 */
67 void serial ( ) interrupt 4 using 1
68 {
69 1 RI = 0 ;
70 1 /* 判断是否收到字符'$',其数值为0x24,置开始接收标志位*/
71 1 if ((!Flag_StartRec) && (SBUF == 0x24))
72 1 {
73 2 Flag_StartRec = 1;
74 2 }
75 1
76 1 if (Flag_StartRec)
77 1 {
78 2 if (rCount <5)
79 2 {
80 3 r_buf[rCount] = SBUF;
81 3 rCount ++;
82 3 }
83 2 /* 判断是否收到字符'*',其数值为0x2A,根据接收的指令设置相应标志位 */
84 2 if ((r_buf[rCount -1] == 0x2A)||(rCount == 5))
85 2 {
86 3 rCount = 0;
87 3 Flag_StartRec = 0;
88 3 if (r_buf[2] == REQ_SEND) //收到“请求发送”指令
89 3 {
90 4 Flag_ReqSend = 1;
91 4 }
92 3 if (r_buf[2] == REQ_RESEND) //收到“请求重发”指令
93 3 {
94 4 Flag_ReqReSend = 1;
95 4 }
96 3 }
97 2 else
98 2 ClearR_buf();
99 2 }
100 1 }
101
102 void ClearT_buf(void)
103 {
104 1 uchar xdata k ;
105 1 for (k=0;k++;k<11)
106 1 {
107 2 t_buf[k] = 0;
108 2 }
109 1 }
110
111 void ClearR_buf(void)
112 {
113 1 uchar xdata k ;
114 1 for (k=0;k++;k<5)
115 1 {
116 2 r_buf[k] = 0;
117 2 }
C51 COMPILER V7.02b WIRELESS 12/10/2005 21:06:49 PAGE 3
118 1 }
119
120 void Delay5ms(void)
121 {
122 1 TR0=1;
123 1 ET0=1;
124 1 while( Flag_Delay5ms);
125 1 ET0 = 0;
126 1 TR0 = 0;
127 1 Flag_Delay5ms = 1;
128 1 }
129
130 //采集数据函数经过简化处理,取固定的7个字节数据
131 void GetData(void)
132 {
133 1 Data[0]=DATA0;
134 1 Data[1]=DATA1;
135 1 Data[2]=DATA2;
136 1 Data[3]=DATA3;
137 1 Data[4]=DATA4;
138 1 Data[5]=DATA5;
139 1 Data[6]=DATA6;
140 1 }
141
142 //单片机端发送数据函数
143 void Send(void)
144 {
145 1 uchar xdata j = 0;
146 1 uchar xdata len = 0;
147 1 uchar xdata CheckSum = 0 ;
148 1 t_buf[0]=0x24; //起始位
149 1 t_buf[1]=0x07; //7个数据字节
150 1 len=t_buf[1];
151 1 CheckSum = CheckSum + len;
152 1 for ( j=0;j++;j<len)
153 1 {
154 2 t_buf[j+2] = Data[j];
155 2 CheckSum = CheckSum + t_buf[j+2];
156 2 }
157 1 t_buf[9] = CheckSum; //校验和字节
158 1 t_buf[10] = 0x2A; //停止位
159 1
160 1 for (j=0;j++;j<11)
161 1 {
162 2 TI =0 ;
163 2 SBUF = t_buf[j];
164 2 while ( TI ==0 );
165 2 TI =0 ;
166 2 }
167 1 }
168
169 //通知PC机端发送结束函数
170 void SendOver(void)
171 {
172 1 TI =0 ;
173 1 SBUF = 0x24;
174 1 while ( TI ==0 );
175 1 TI =0 ;
176 1 SBUF = 0x01;
177 1 while ( TI ==0 );
178 1 TI =0 ;
179 1 SBUF = SEND_OVER; //通知PC机端“发送结束”
C51 COMPILER V7.02b WIRELESS 12/10/2005 21:06:49 PAGE 4
180 1 while ( TI ==0 );
181 1 TI =0 ;
182 1 SBUF = 0x99; //校验和字节
183 1 while ( TI ==0 );
184 1 TI =0 ;
185 1 SBUF = 0x2A;
186 1 while ( TI ==0 );
187 1 TI =0 ;
188 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 499 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 29 ----
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 + -