📄 0x01.lst
字号:
C51 COMPILER V7.06 0X01 11/04/2008 12:13:20 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 0X01
OBJECT MODULE PLACED IN 0x01.OBJ
COMPILER INVOKED BY: D:\keil\keil\C51\BIN\C51.EXE 0x01.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2
3 #define uint unsigned int
4 #define uchar unsigned char
5 #define pindate P0
6 sbit RE_DE=P1^3;
7 sbit MUSIC=P1^0;
8 sbit YIN=P1^5;
9 sbit SHI=P1^4;
10 sbit C=P2^0;
11 sbit D=P2^1;
12 sbit X=P2^2;
13 sbit M=P2^3;
14 uint R_485;
15 uchar temp,louhao,fanghao,flag;
16 uint i,addr;
17 uchar call[] = {0xd5,23,1,0} ;//呼叫数据
18 uchar close[] = {0xd5,26,1,0}; //关视频音频
19 uchar opendoor[] = {0xd5,24,1,0}; //用户机控制门口机开门数据
20 uchar danger[] = {0xd5,22,1,0}; //紧急呼叫
21 uchar xying[] = {0xd5,25,1,0}; //有人应答
22 uchar xian=0xd6; //空闲
23 sys_initial()
24 {pindate=0xff;
25 1 YIN=0;
26 1 SHI=0;
27 1 MUSIC=0;
28 1 TMOD=0x20; //T1方式2,初值自动恢复
29 1 TL1=0xfd; //
30 1 TH1=0xfd;
31 1
32 1 PCON=0x00; //串行口波特率不加倍
33 1 TR1=1; //开启定时/计数器T1
34 1 //SCON=0xf8 //串口工作方式3,SM2=1,REN=1允许接收,TB8=1表示主机发送的是地址 主从成功使用
35 1 SCON=0x50; //SM2=0,REN=1,TB8=1
36 1 //SCON=0xf0;
37 1 PS=1;
38 1 //PX1=0; //从主成功使用
39 1 EA=1; //EA为CPU中断允许控制位,为1开中
40 1 // EX0=1; //外中断INTO中断允许控制位,为1开中
41 1 // EX1=1; //外中断INT1中断允许控制位,为1开中
42 1 // IT0=0;
43 1 // IT1=0; //脉冲触发方式,下降沿有效
44 1 //P3_5=0; //发送
45 1 //加上串行口中断开中
46 1 // ES=1; //串行口中断开中
47 1 ES=1;
48 1 }
49
50 void delay()
51 {uint i,j;
52 1 for(i=0;i<1000;i++)
53 1 {
54 2 for(j=0;j<100;j++)
55 2 ;
C51 COMPILER V7.06 0X01 11/04/2008 12:13:20 PAGE 2
56 2 }
57 1 }
58
59 void sentopendoor( )
60 {
61 1 ES=0;
62 1 RE_DE=1;
63 1
64 1
65 1 opendoor[3]=pindate;
66 1 for(i=0;i<4;i++)
67 1 {
68 2 SBUF=opendoor[i];
69 2 while(!TI);
70 2 TI=0;
71 2
72 2 }
73 1 delay();
74 1 TI=0;
75 1
76 1 SBUF= xian;
77 1 while(TI!=1);
78 1 TI=0;
79 1
80 1 ES=1;
81 1 RE_DE=0;
82 1 }
83
84 void sentclose( )
85 {
86 1 ES=0;
87 1 RE_DE=1;
88 1
89 1
90 1 close[3]=addr;
91 1 for(i=0;i<4;i++)
92 1 {
93 2 SBUF=close[i];
94 2 while(!TI);
95 2 TI=0;
96 2
97 2 }
98 1 delay();
99 1 TI=0;
100 1
101 1 SBUF= xian;
102 1 while(TI!=1);
103 1 TI=0;
104 1
105 1 ES=1;
106 1 RE_DE=0;
107 1 }
108
109 void sentdanger( )
110 {
111 1 ES=0;
112 1 RE_DE=1;
113 1
114 1
115 1 danger[3]=addr;
116 1 for(i=0;i<4;i++)
117 1 {
C51 COMPILER V7.06 0X01 11/04/2008 12:13:20 PAGE 3
118 2 SBUF=danger[i];
119 2 while(!TI);
120 2 TI=0;
121 2
122 2 }
123 1 delay();
124 1 TI=0;
125 1
126 1 SBUF= xian;
127 1 while(TI!=1);
128 1 TI=0;
129 1
130 1 ES=1;
131 1 RE_DE=0;
132 1 }
133
134 void sentxying( )
135 {
136 1 ES=0;
137 1 RE_DE=1;
138 1
139 1
140 1 xying[3]=addr;
141 1 for(i=0;i<4;i++)
142 1 {
143 2 SBUF=xying[i];
144 2 while(!TI);
145 2 TI=0;
146 2
147 2 }
148 1 delay();
149 1 TI=0;
150 1
151 1 SBUF= xian;
152 1 while(TI!=1);
153 1 TI=0;
154 1
155 1 ES=1;
156 1 RE_DE=0;
157 1 }
158
159
160 main()
161 {
162 1
163 1 R_485=0;
164 1 RE_DE=0;
165 1 addr=pindate;
166 1 sys_initial(); //串口初始化
167 1 while(1)
168 1 {
169 2 if(D==0)
170 2 {
171 3 sentopendoor();
172 3
173 3 }
174 2 if(C==0)
175 2 {YIN=1;
176 3 SHI=1;
177 3 MUSIC=0;
178 3
179 3 sentxying();
C51 COMPILER V7.06 0X01 11/04/2008 12:13:20 PAGE 4
180 3
181 3 }
182 2 if(X==0)
183 2 {
184 3 YIN=0;
185 3 SHI=0;
186 3 sentclose();
187 3 }
188 2 if( M==0)
189 2 {sentdanger();
190 3 }
191 2
192 2 }
193 1 }
194
195
196
197
198
199
200 void serial(void) interrupt 4 using 3
201 {
202 1 while(!RI);
203 1 RI=0;
204 1 temp=SBUF;
205 1 if(R_485==0) //
206 1 {
207 2
208 2 if(temp==0xd5)
209 2 {
210 3 R_485=1;
211 3 goto reback;
212 3
213 3 }
214 2 else if(temp==0xd6)
215 2 {
216 3 goto reback;
217 3 }
218 2
219 2 else
220 2 {R_485=0;
221 3 goto reback;
222 3 }
223 2
224 2
225 2 }
226 1
227 1 else if (R_485==1) //
228 1 {
229 2 flag=temp;
230 2
231 2 R_485=2;
232 2 goto reback;
233 2 }
234 1
235 1 else if (R_485==2) //
236 1 {
237 2 louhao=temp;
238 2 R_485=3;
239 2 goto reback;
240 2 }
241 1
C51 COMPILER V7.06 0X01 11/04/2008 12:13:20 PAGE 5
242 1 else if (R_485==3) //接收
243 1 {
244 2 fanghao=temp;
245 2 R_485=0;
246 2 }
247 1
248 1 if(flag==23) //接收用户ID
249 1 {
250 2 if( louhao==1 )
251 2 {
252 3 if(fanghao==addr)
253 3 { MUSIC=1;
254 4 MUSIC=1;
255 4 flag=0;
256 4
257 4 }
258 3 }
259 2 }
260 1 //
261 1 else if(flag==22)
262 1 {
263 2 if( louhao==1 )
264 2 {
265 3 if(fanghao==addr)
266 3 { MUSIC=1;
267 4 YIN=1;
268 4 SHI=1;
269 4 flag=0;
270 4 fanghao=0;
271 4 louhao=0;
272 4 MUSIC=0;
273 4 }
274 3 }
275 2 }
276 1
277 1 reback: ;
278 1 }
279
280
281
282
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 506 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 31 ----
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 + -