📄 11.lst
字号:
C51 COMPILER V8.02 11 04/07/2009 16:11:56 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 11
OBJECT MODULE PLACED IN 11.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 11.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include<reg52.h>
3 #include<rom.h>
4 #include<intrins.h>
5
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 sbit remotein=P0^6; //遥控信号输入
10 sbit remoteout=P0^7; //遥控信号输出
11 sbit P10=P1^0;
12 sbit P11=P1^1;
13
14 uint i,j,n,k,s;
15 uchar idata arg[192];
16 uchar idata head_buf[2];
17 uchar xdata date1[32];
18 uchar xdata date2[32];
19 uchar xdata date3[32];
20 uchar xdata date4[32];
21 uchar xdata date5[32];
22 uchar xdata date6[32];
23 uint head,c,i; //存放脉冲宽度数据用
24 uint remdata; // 存放起始位用
25 uchar temp,flag;
26 /********1ms 延时程序**********/
27 delay1ms(uint t)
28 {
29 1 for(i=0;i<t;i++)
30 1 for(j=0;j<120;j++);
31 1
32 1 }
33 /********初始化程序**********/
34
35
36 void write_address()
37 {
38 1
39 1 for(i=0;i<32;i++)
40 1 {
41 2 date1[i]=arg[i];
42 2 delay(312);
43 2 date2[i]=arg[i+32];
44 2 delay(312);
45 2 date3[i]=arg[i+64];
46 2 delay(312);
47 2 date4[i]=arg[i+96];
48 2 delay(312);
49 2 date5[i]=arg[i+128];
50 2 delay(312);
51 2 date6[i]=arg[i+160];
52 2 delay(312);
53 2 }
54 1 WrToFRam(0xa0,0x0000+0x0100*temp,date1,32);
55 1 delay(31320);
C51 COMPILER V8.02 11 04/07/2009 16:11:56 PAGE 2
56 1 WrToFRam(0xa0,0x0020+0x0100*temp,date2,32);
57 1 delay(31320);
58 1 WrToFRam(0xa0,0x0040+0x0100*temp,date3,32);
59 1 delay(31320);
60 1 WrToFRam(0xa0,0x0060+0x0100*temp,date4,32);
61 1 delay(31320);
62 1 WrToFRam(0xa0,0x0080+0x0100*temp,date5,32);
63 1 delay(31320);
64 1 WrToFRam(0xa0,0x00a0+0x0100*temp,date6,32);
65 1 delay(31320);
66 1 WrToFRam(0xa0,0x00e0+0x0100*temp,head_buf,2);
67 1 delay(31320);
68 1 }
69 void read_address()
70 {
71 1 RdFromFRam(0xa1,0x0000+0x0100*temp,date1,32);
72 1 delay(31320);
73 1 RdFromFRam(0xa1,0x0020+0x0100*temp,date2,32);
74 1 delay(31320);
75 1 RdFromFRam(0xa1,0x0040+0x0100*temp,date3,32);
76 1 delay(31320);
77 1 RdFromFRam(0xa1,0x0060+0x0100*temp,date4,32);
78 1 delay(31320);
79 1 RdFromFRam(0xa1,0x0080+0x0100*temp,date5,32);
80 1 delay(31320);
81 1 RdFromFRam(0xa1,0x00a0+0x0100*temp,date6,32);
82 1 delay(31320);
83 1 RdFromFRam(0xa1,0x00e0+0x0100*temp,head_buf,2);
84 1 delay(31320);
85 1 for(i=0;i<32;i++)
86 1 {
87 2 arg[i]=date1[i];
88 2 delay(312);
89 2 arg[i+32]=date2[i];
90 2 delay(312);
91 2 arg[i+64]=date3[i];
92 2 delay(312);
93 2 arg[i+96]=date4[i];
94 2 delay(312);
95 2 arg[i+128]=date5[i];
96 2 delay(312);
97 2 arg[i+160]=date6[i];
98 2 delay(312);
99 2 }
100 1 }
101 /*******键功能函数*********/
102 keywork()
103 {
104 1 P10=0;
105 1 temp=temp-0x40;
106 1
107 1 read_address();
108 1
109 1 ET0=1;TR0=1;ES=0;
110 1 head=head_buf[0];
111 1 c=head_buf[1];
112 1 c=c<<8;
113 1 head=head|c; //
114 1 for(i=head;i>0;i--){;} //
115 1 remoteout=0;ET0=0;TR0=0;
116 1 n=0;
117 1 while(1)
C51 COMPILER V8.02 11 04/07/2009 16:11:56 PAGE 3
118 1 {
119 2 if(arg[n]==0x00){delay1ms(10);temp=0;P10=1;ES=1;break;} //
120 2 for(i=arg[n];i>0;i--)
121 2 {
122 3 _nop_();
123 3 _nop_();
124 3 _nop_();
125 3 _nop_();
126 3 _nop_();
127 3 _nop_();
128 3 _nop_();
129 3 _nop_();
130 3 _nop_();
131 3 _nop_();
132 3 _nop_();
133 3 _nop_();
134 3 _nop_();
135 3 _nop_();
136 3 _nop_();
137 3
138 3 }
139 2 n++;
140 2 ET0=1;TR0=1;
141 2 for(i=arg[n];i>0;i--){;}
142 2 remoteout=0;ET0=0;TR0=0;n++;
143 2 }
144 1
145 1
146 1 }
147 /********主函数**********/
148
149 /********40kHz发生器**********/
150 //定时中断T1
151 void time_intt1(void) interrupt 1
152 {
153 1 remoteout=~remoteout;
154 1 }
155 /********学习函数**********/
156 //外中断0
157 void study()
158 {
159 1 P11=0;
160 1 ET0=0;TR0=0;ES=0;EA=0;head=0;
161 1
162 1 while(remotein==1);
163 1 head=0;
164 1 while(remotein==0)
165 1 {
166 2 _nop_();
167 2 _nop_();
168 2 _nop_();
169 2 _nop_();
170 2 _nop_();
171 2 _nop_();
172 2 _nop_();
173 2 _nop_();
174 2 _nop_();
175 2 _nop_();
176 2 _nop_();
177 2 _nop_();
178 2 _nop_();
179 2 _nop_();
C51 COMPILER V8.02 11 04/07/2009 16:11:56 PAGE 4
180 2 _nop_();
181 2 head++;
182 2 }
183 1 head_buf[0]=head;
184 1 head_buf[1]=head>>8;
185 1 n=0;remdata=0x00;
186 1 while(1)
187 1 {
188 2 while(remotein==1)
189 2 {
190 3 _nop_();
191 3 _nop_();
192 3 _nop_();
193 3 _nop_();
194 3 _nop_();
195 3 _nop_();
196 3 _nop_();
197 3 _nop_();
198 3 _nop_();
199 3 _nop_();
200 3 _nop_();
201 3 _nop_();
202 3 _nop_();
203 3 _nop_();
204 3 _nop_();
205 3 remdata++;
206 3 }
207 2 if(remdata>334)
208 2 {arg[n]=0x00;ES=1;EA=1;goto end;}
209 2 arg[n]=remdata;n++;
210 2 remdata=0x00;
211 2 while(remotein==0)
212 2 {
213 3 _nop_();
214 3 _nop_();
215 3 _nop_();
216 3 _nop_();
217 3 _nop_();
218 3 _nop_();
219 3 _nop_();
220 3 _nop_();
221 3 _nop_();
222 3 _nop_();
223 3 _nop_();
224 3 _nop_();
225 3 _nop_();
226 3 _nop_();
227 3 _nop_();
228 3 remdata++;
229 3 }
230 2 arg[n]=remdata;n++;remdata=0x0000;
231 2 }
232 1 end: write_address();remotein=1;remoteout=0;temp=0;P11=1;
233 1 }
234 void main()
235 {
236 1 P10=1;
237 1 P11=1;
238 1 remoteout=0;
239 1 remotein=1;
240 1 TMOD=0x22;
241 1 PCON=0x00;
C51 COMPILER V8.02 11 04/07/2009 16:11:56 PAGE 5
242 1 TH1=0xfd;
243 1 TL1=0xfd;
244 1 TH0=0xf3;
245 1 TL0=0xf3;
246 1 TR1=1;
247 1 TR0=1;
248 1 SM0=0;
249 1 SM1=1;
250 1 REN=1;
251 1 EA=1;
252 1 ES=1;
253 1 while(1)
254 1 {
255 2 if(flag==1)
256 2 {
257 3 ES=0;
258 3 flag=0;
259 3 SBUF=temp;
260 3 while(!TI);
261 3 TI=0;
262 3 ES=1;
263 3 }
264 2 if((temp>0x00)&&(temp<0x40)) //0x01-0x3f为学习键
265 2 study();
266 2 else
267 2 if ((temp>0x40)&&(temp<0x80)) //0x41-0x7f为发射键
268 2 keywork();
269 2 else;
270 2 }
271 1
272 1 }
273 void serial() interrupt 4
274 {
275 1 temp=SBUF;
276 1 flag=1;
277 1 RI=0;
278 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1550 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 192 ----
PDATA SIZE = ---- ----
DATA SIZE = 18 16
IDATA SIZE = 194 ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -