📄 main.ls1
字号:
212 ; LJMP 0x8003
0000 028003 213 LJMP 0x8003
214 ; #pragma endasm
215 ; }
216 ; SOURCE LINE # 35
0003 32 217 RETI
218 ; END OF INT0_ISR
219
---- 220 CSEG AT 0000BH
000B 020000 F 221 LJMP T0_ISR
222
223 ;
224 ; //定时器T0中断入口
225 ; void T0_ISR() interrupt 1
226
---- 227 RSEG ?PR?T0_ISR?MAIN
228 USING 0
0000 229 T0_ISR:
230 ; SOURCE LINE # 38
231 ; {
232 ; #pragma asm
233 ; LJMP 0x800B
0000 02800B 234 LJMP 0x800B
235 ; #pragma endasm
236 ; }
237 ; SOURCE LINE # 43
0003 32 238 RETI
239 ; END OF T0_ISR
240
---- 241 CSEG AT 00013H
0013 020000 F 242 LJMP INT1_ISR
243
244 ;
245 ; //外部中断INT1入口
246 ; void INT1_ISR() interrupt 2
247
---- 248 RSEG ?PR?INT1_ISR?MAIN
249 USING 0
A51 MACRO ASSEMBLER MAIN 03/29/2007 22:55:54 PAGE 5
0000 250 INT1_ISR:
251 ; SOURCE LINE # 46
252 ; {
253 ; #pragma asm
254 ; LJMP 0x8013
0000 028013 255 LJMP 0x8013
256 ; #pragma endasm
257 ; }
258 ; SOURCE LINE # 51
0003 32 259 RETI
260 ; END OF INT1_ISR
261
---- 262 CSEG AT 0001BH
001B 020000 F 263 LJMP T1_ISR
264
265 ;
266 ; //定时器T1中断入口
267 ; void T1_ISR() interrupt 3
268
---- 269 RSEG ?PR?T1_ISR?MAIN
270 USING 0
0000 271 T1_ISR:
272 ; SOURCE LINE # 54
273 ; {
274 ; #pragma asm
275 ; LJMP 0x801B
0000 02801B 276 LJMP 0x801B
277 ; #pragma endasm
278 ; }
279 ; SOURCE LINE # 59
0003 32 280 RETI
281 ; END OF T1_ISR
282
---- 283 CSEG AT 00023H
0023 020000 F 284 LJMP Serial_ISR
285
286 ;
287 ; //串行口收发中断入口
288 ; void Serial_ISR() interrupt 4
289
---- 290 RSEG ?PR?Serial_ISR?MAIN
291 USING 0
0000 292 Serial_ISR:
293 ; SOURCE LINE # 62
294 ; {
295 ; #pragma asm
296 ; LJMP 0x8023
0000 028023 297 LJMP 0x8023
298 ; #pragma endasm
299 ; }
300 ; SOURCE LINE # 67
0003 32 301 RETI
302 ; END OF Serial_ISR
303
---- 304 CSEG AT 0002BH
002B 020000 F 305 LJMP T2_ISR
306
307 ;
308 ; //定时器T2中断入口
309 ; void T2_ISR() interrupt 5
310
---- 311 RSEG ?PR?T2_ISR?MAIN
312 USING 0
0000 313 T2_ISR:
314 ; SOURCE LINE # 70
315 ; {
A51 MACRO ASSEMBLER MAIN 03/29/2007 22:55:54 PAGE 6
316 ; #pragma asm
317 ; LJMP 0x802B
0000 02802B 318 LJMP 0x802B
319 ; #pragma endasm
320 ; }
321 ; SOURCE LINE # 75
0003 32 322 RETI
323 ; END OF T2_ISR
324
325 ;
326 ;
327 ; //串行口初始化
328 ; void UartInit()
329
---- 330 RSEG ?PR?UartInit?MAIN
0000 331 UartInit:
332 ; SOURCE LINE # 79
333 ; {
334 ; SOURCE LINE # 80
335 ; //串行口设置:8位UART,允许接收,TI置位
336 ; SCON = 0x52;
337 ; SOURCE LINE # 82
0000 759852 338 MOV SCON,#052H
339 ; //波特率加倍
340 ; PCON |= 0x80;
341 ; SOURCE LINE # 84
0003 438780 342 ORL PCON,#080H
343 ; //设置定时器T1为8位自动重装模式
344 ; TMOD &= 0x0F;
345 ; SOURCE LINE # 86
0006 53890F 346 ANL TMOD,#0FH
347 ; TMOD |= 0x20;
348 ; SOURCE LINE # 87
0009 438920 349 ORL TMOD,#020H
350 ; //设置定时器T1的初值
351 ; TH1 = 256 - ( MCLK / 12 ) / (16 * BaudRate );
352 ; SOURCE LINE # 89
000C 758DF4 353 MOV TH1,#0F4H
354 ; TL1 = TH1;
355 ; SOURCE LINE # 90
000F 858D8B 356 MOV TL1,TH1
357 ; //启动定时器T1
358 ; TR1 = 1;
359 ; SOURCE LINE # 92
0012 D28E 360 SETB TR1
361 ; }
362 ; SOURCE LINE # 93
0014 22 363 RET
364 ; END OF UartInit
365
366 ;
367 ;
368 ; //定义联合整型结构,为访问整型变量的字节部分提供了方便
369 ; typedef union
370 ; {
371 ; unsigned int i;
372 ; struct
373 ; {
374 ; unsigned char H;
375 ; unsigned char L;
376 ; }CharPart;
377 ; }UnionInt;
378 ;
379 ;
380 ; //定义Intel HEX记录的结构
381 ; typedef struct
A51 MACRO ASSEMBLER MAIN 03/29/2007 22:55:54 PAGE 7
382 ; {
383 ; unsigned char ll; //长度
384 ; unsigned int aaaa; //地址
385 ; unsigned char tt; //记录类型,0-数据,1-终止
386 ; char dd[32]; //数据
387 ; char cc; //校验和
388 ; unsigned int BootAddr; //启动地址
389 ; }CIntelHEX;
390 ;
391 ;
392 ; /*******************************************************************************
393 ; 函数:AnalyseHEX()
394 ; 功能:分析一条HEX记录(把Intel HEX记录的文本转换成IntelHEX结构)
395 ; 参数:hex[]是记录的文本一行内容
396 ; 转换后的结果保存在IntelHEX结构中
397 ; 返回:1-转换成功
398 ; 0-HEX记录文本中有错误
399 ; *******************************************************************************/
400 ; bit AnalyseHEX(CIntelHEX idata *IntelHEX, char pdata *hex)
401
---- 402 RSEG ?PR?_AnalyseHEX?MAIN
0000 403 _AnalyseHEX:
404 USING 0
405 ; SOURCE LINE # 128
0000 8F00 F 406 MOV IntelHEX?740,R7
0002 8D00 F 407 MOV hex?741,R5
408 ; {
409 ; SOURCE LINE # 129
410 ; unsigned char i;
411 ; unsigned char j;
412 ; unsigned char t;
413 ; unsigned char n;
414 ; unsigned char cc;
415 ; UnionInt x;
416 ; //检查冒号
417 ; if ( hex[0] != ':' ) return 0;
418 ; SOURCE LINE # 137
0004 A800 F 419 MOV R0,hex?741
0006 E2 420 MOVX A,@R0
0007 643A 421 XRL A,#03AH
0009 6002 422 JZ ?C0008
000B C3 423 CLR C
000C 22 424 RET
000D 425 ?C0008:
426 ; //检查长度
427 ; t = (toint(hex[1])<<4) + toint(hex[2]);
428 ; SOURCE LINE # 139
000D E500 F 429 MOV A,hex?741
000F 04 430 INC A
0010 F8 431 MOV R0,A
0011 E2 432 MOVX A,@R0
0012 FF 433 MOV R7,A
0013 120000 F 434 LCALL _toint
0016 EF 435 MOV A,R7
0017 C4 436 SWAP A
0018 54F0 437 ANL A,#0F0H
001A FE 438 MOV R6,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -