📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 06/25/2007 21:09:03 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND
line level source
1
2 /////////////////////////////////////////////////////////
3 #include <absacc.h>
4 #include <reg51.h>
5 #include<DATA_define.h>
6 #include<Send_Receive.h>
*** WARNING C280 IN LINE 237 OF SEND_RECEIVE.H: 'i': unreferenced local variable
*** WARNING C280 IN LINE 239 OF SEND_RECEIVE.H: 'j': unreferenced local variable
7 #include<Buffer.h>
8 #include<set.h>
9 #include<display.h>
10 void Set_INFO(void)
11 {
12 1 INFO[0]=0;
13 1 INFO[1]=2;
14 1 INFO[2]=5;
15 1 INFO[3]=0;
16 1
17 1 }
18 /**** 主程序
19 *****/
20 ////////////////////////////////////////////////////////////
21 //5ms定时
22 void timer0( void ) interrupt 1
23 {
24 1
25 1 TR0=0;
26 1 ET0=0;
27 1
28 1 TH0=0xee; // 载入计数初值
29 1 TL0=0x00;
30 1 output_sel = 0xf0; /*初值,令数码管驱动位无效,指示灯全灭*/
31 1 // TR0=1; // 开时钟,保证计时精确
32 1
33 1 Wireless_int0();
34 1 d_time++; // 每5ms对超时标志加1 /%
35 1 d_time=d_time%200;//0~199循环计数
36 1
37 1 if(d_time==D_T)
38 1 {
39 2 state_flag=C21a;
40 2 Rbuffer_point=1;
41 2 state=1;
42 2 }//判定传输中断,处理
43 1
44 1
45 1
46 1 if(d_time==RES_TIME)
47 1 {
48 2 Adrchange_flag=1;
49 2 d_time=0;
50 2
51 2
52 2 if(Adrchange_flag) //掉线
53 2 {
C51 COMPILER V7.50 MAIN 06/25/2007 21:09:03 PAGE 2
54 3
55 3 bus_control_count++;
56 3 bus_control_count=bus_control_count%10;
57 3 Set_address(bus_control_count);
58 3 TI=1;
59 3 Adrchange_flag=0;
60 3 }
61 2 }//判定掉线,处理
62 1
63 1 // fir_dis=(Rbuffer[11]-'0')*16+(Rbuffer[12]-'0');
64 1 // sec_dis=(Rbuffer[13]-'0')*16+(Rbuffer[14]-'0');
65 1 // thi_dis=(Rbuffer[15]-'0')*16+(Rbuffer[16]-'0');
66 1 // for_dis=(Rbuffer[17]-'0')*16+(Rbuffer[18]-'0');
67 1 Display();//显示信息
68 1 TR0=1;
69 1 ET0=1;
70 1 }
71 ///////////////////////////////////////////////////////////
72
73 /////////////////////////////////////////////////////
74 //主系统的发送接收程序
75 void Receive_interr(void) interrupt 4//一次串行发送/接收完成后,发出中断申请
76 { unsigned char i;
77 1 if(RI)///接收完毕
78 1 {
79 2 RI=0;//清除接收中断
80 2 fir_dis=13; ///MARK
81 2
82 2 d_time=0;//开始计时
83 2 FSM();//有限状态机形式的接收数据
84 2 if(buffer_flag)//接收完毕
85 2 {
86 3
87 3
88 3 ////////////////////////////////////////////////
89 3 //保存info
90 3 if(Get_ADR()==MOTOR_ADR)
91 3 {
92 4 for(i=0;i< Get_LENGTH()*2;i++)
93 4
94 4 MOTOR_INFO_DOWN[i]=Rbuffer[i+11];
95 4 }
96 3 else if(Get_ADR()==CUP_ADR)
97 3 {
98 4 for(i=0;i<Get_LENGTH()*2;i++)
99 4
100 4 CUP_INFO_DOWN[i]=Rbuffer[i+11];
101 4 }
102 3 else if(Get_ADR()==DIST_ADR)
103 3 {
104 4 for(i=0;i<Get_LENGTH()*2;i++)
105 4
106 4 DIST_INFO_DOWN[i]=Rbuffer[i+11];
107 4 }
108 3 else if(Get_ADR()==TOP_ADR)
109 3 {
110 4
111 4 }
112 3
113 3 ////////////////////////////////////////
114 3
115 3 receivedone_flag=1;
C51 COMPILER V7.50 MAIN 06/25/2007 21:09:03 PAGE 3
116 3 ES=0;
117 3 while(d_time<=4);//延时20ms ????????????????????????????????????
118 3 /////////////////////////////////////////////////////////////////////////////
119 3
120 3 bus_control_count++;
121 3 bus_control_count=bus_control_count%10;
122 3 Set_address(bus_control_count); //
123 3 Set_INFO();
124 3 Set_BUF();//把信息放入带发送信息
125 3 receivedone_flag=0; ///标志复位
126 3 TI=0;
127 3 Sbuffer_point=0;
128 3 SBUF=Sbuffer[0];/////////////
129 3 Sbuffer_point++;
130 3 ES=1;
131 3 //////////////////////////////////////////////////////////////////////////////
132 3
133 3
134 3
135 3 }//当接收完毕时,发送反馈信息
136 2
137 2
138 2
139 2 }
140 1 else if(TI) //发送完毕
141 1 {
142 2
143 2 if(feedbackdone_flag) //当镇发送完毕时复位,等待下一次接收
144 2 {
145 3 feedbackdone_flag=0;
146 3 TI=0;
147 3 }
148 2 else //当没有发送完毕时,继续发送
149 2 {
150 3 REN=0;///关闭串行接收
151 3 TI=0; //
152 3 fir_dis=14;
153 3
154 3 if(Sbuffer[Sbuffer_point]!=EOI)
155 3 {
156 4
157 4 SBUF=Sbuffer[Sbuffer_point];
158 4 Sbuffer_point++;
159 4
160 4 }
161 3 else
162 3 {
163 4 ES=0;
164 4 SBUF=Sbuffer[Sbuffer_point];
165 4 Sbuffer_point=0;
166 4 REN=1;//运行串行接收
167 4
168 4 feedbackdone_flag=1;
169 4 //////////////////////////////////////////////////////////////
170 4 //for_dis=bus_control_count;
171 4 bus_control_count++;
172 4 bus_control_count=bus_control_count%10;
173 4 // if(bus_control_count%2==0)
174 4 // bus_control_count--;
175 4 Set_address(bus_control_count);
176 4 ES=1;
177 4 ////////////////////////////////////////////////////////////////////
C51 COMPILER V7.50 MAIN 06/25/2007 21:09:03 PAGE 4
178 4
179 4
180 4
181 4
182 4 }
183 3 d_time=0;
184 3
185 3 }
186 2 }
187 1
188 1
189 1
190 1 }
191 //////////////////////////////////////////////////////
192
193
194
195 /////////////////////////////////////////////////////////////////
196 main()
197 {
198 1 //* 单片机系统初始化 *
199 1 P1=0XFF;
200 1 P3=0XFF;
201 1 //** 中断工作寄存器初始化 **
202 1 InitWireless();
203 1
204 1
205 1
206 1 //** 定时器工作寄存器初始化 **
207 1 PT1=1;//优先级设置
208 1 TR1=1;
209 1
210 1
211 1 //////////////////////////////
212 1 SCON=0x40;//工作方式1
213 1 TMOD=0X21;
214 1 TH0=0xee;
215 1 TL0=0x00;
216 1 TH1=0xfd;//
217 1 TR1=1;
218 1 ET1=0;
219 1 ES=1;
220 1 EA=1;
221 1 ET0=1;
222 1 TR0=1;/*开中断*/
223 1 PS=0; //串口工作优先级低
224 1 TI=1;
225 1 PT0=1;//5ms定时器中断优先级高
226 1 Set_BUF();
227 1
228 1
229 1 // RESET_8255=0;//复位无效
230 1 // ADDR_8255_control=0x80;//写方式字
231 1
232 1 ///////////////8255控制字///////
233 1
234 1
235 1
236 1 /////////////////////////////////////////
237 1 //* 主循环,本例中,在T0中断服务程序未被执行的空余时间里,处理机在以下程序中不断循环 *
238 1 while(1)
239 1 {
C51 COMPILER V7.50 MAIN 06/25/2007 21:09:03 PAGE 5
240 2
241 2 Wireless_while();
242 2 }
243 1
244 1
245 1 }
246
247 ////////////////////////////////////////////////////////
248
249
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2590 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = 185 ----
PDATA SIZE = ---- ----
DATA SIZE = 73 4
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -