📄 tcmain.ls1
字号:
000B BF 229 DB 0BFH
230
231
---- 232 RSEG ?C_INITSEG
0000 05 233 DB 005H
0001 00 F 234 DB inbuf1
0002 30 235 DB 030H
0003 30 236 DB 030H
0004 30 237 DB 030H
0005 30 238 DB 030H
0006 30 239 DB 030H
240
0007 0C 241 DB 00CH
0008 00 F 242 DB dis_8
0009 30 243 DB 030H
000A 31 244 DB 031H
000B 32 245 DB 032H
000C 33 246 DB 033H
000D 34 247 DB 034H
000E 35 248 DB 035H
000F 36 249 DB 036H
0010 37 250 DB 037H
0011 38 251 DB 038H
0012 39 252 DB 039H
0013 20 253 DB 020H
0014 2D 254 DB 02DH
255
A51 MACRO ASSEMBLER TCMAIN 09/30/2007 01:01:42 PAGE 5
256 ; #include <AT89X51.H>
257 ; #include <intrins.h>
258 ; #define Key_UP P1_0
259 ; #define Key_DOWN P1_1
260 ; #define Key_SET P1_2
261 ; #define RelayOutPort P2_0
262 ; #define LEDPort P0
263 ; #define DELPort P2_1
264 ; #define LEDTwoC P3_6
265 ; #define LEDThreeC P3_7
266 ; #define TMPort P2_7
267 ; #define INBUF_LEN 5 //数据长度
268 ; unsigned char inbuf1[INBUF_LEN]={'0','0','0','0','0'};//发送缓冲区
269 ; unsigned char inbuf2[50];//接收缓冲区
270 ; unsigned char count3;
271 ; void init_serialcomm( void )
272
---- 273 RSEG ?PR?init_serialcomm?TCMAIN
0000 274 init_serialcomm:
275 ; SOURCE LINE # 16
276 ; {
277 ; SOURCE LINE # 17
278 ; SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
279 ; SOURCE LINE # 18
0000 759850 280 MOV SCON,#050H
281 ; TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
282 ; SOURCE LINE # 19
0003 438920 283 ORL TMOD,#020H
284 ; PCON |= 0x80 ; //SMOD=1;
285 ; SOURCE LINE # 20
0006 438780 286 ORL PCON,#080H
287 ; TH1 = 0xFA ; //Baud:4800 fosc=11.0592MHz
288 ; SOURCE LINE # 21
0009 758DFA 289 MOV TH1,#0FAH
290 ; IE |= 0x90 ; //Enable Serial Interrupt
291 ; SOURCE LINE # 22
000C 43A890 292 ORL IE,#090H
293 ; TR1 = 1 ; // timer 1 run
294 ; SOURCE LINE # 23
000F D28E 295 SETB TR1
296 ; }
297 ; SOURCE LINE # 24
0011 22 298 RET
299 ; END OF init_serialcomm
300
301 ; //向串口发送一个字符
302 ; void send_char_com( unsigned char ch)
303
---- 304 RSEG ?PR?_send_char_com?TCMAIN
0000 305 L?0099:
306 USING 2
0000 7F4F 307 MOV R7,#04FH
0002 308 L?0100:
0002 1100 F 309 ACALL _send_char_com
0004 1100 F 310 ACALL _send_char_com
0006 311 _send_char_com:
312 ; SOURCE LINE # 26
313 ;---- Variable 'ch?140' assigned to Register 'R7' ----
314 ; {
315 ; SOURCE LINE # 27
316 ; SBUF=ch;
317 ; SOURCE LINE # 28
0006 8F99 318 MOV SBUF,R7
0008 319 ?C0002:
320 ; while (TI== 0 );
321 ; SOURCE LINE # 29
A51 MACRO ASSEMBLER TCMAIN 09/30/2007 01:01:42 PAGE 6
0008 3099FD 322 JNB TI,?C0002
000B 323 ?C0003:
324 ; TI= 0 ;
325 ; SOURCE LINE # 30
000B C299 326 CLR TI
327 ; }
328 ; SOURCE LINE # 31
000D 22 329 RET
330 ; END OF _send_char_com
331
332 ; //向串口发送一个字符串,strlen 为该字符串长度
333 ; void send_string_com( unsigned char *str, unsigned int strlen)
334
---- 335 RSEG ?PR?_send_string_com?TCMAIN
0000 336 _send_string_com:
337 USING 0
338 ; SOURCE LINE # 33
0000 8B00 F 339 MOV str?241,R3
0002 8A00 F 340 MOV str?241+01H,R2
0004 8900 F 341 MOV str?241+02H,R1
0006 8C00 F 342 MOV strlen?242,R4
0008 8D00 F 343 MOV strlen?242+01H,R5
344 ; {
345 ; SOURCE LINE # 34
346 ; unsigned int k= 0 ;
347 ; SOURCE LINE # 35
348 ;---- Variable 'k?243' assigned to Register 'R4/R5' ----
000A E4 349 CLR A
000B FD 350 MOV R5,A
000C FC 351 MOV R4,A
000D 352 ?C0007:
353 ; do
354 ; {
355 ; SOURCE LINE # 37
356 ; send_char_com(*(str + k));
357 ; SOURCE LINE # 38
000D AB00 F 358 MOV R3,str?241
000F AA00 F 359 MOV R2,str?241+01H
0011 A900 F 360 MOV R1,str?241+02H
0013 8D82 361 MOV DPL,R5
0015 8C83 362 MOV DPH,R4
0017 1100 F 363 ACALL ?C?CLDOPTR
0019 FF 364 MOV R7,A
001A 1100 F 365 ACALL _send_char_com
366 ; k++;
367 ; SOURCE LINE # 39
001C 0D 368 INC R5
001D BD0001 369 CJNE R5,#00H,?C0089
0020 0C 370 INC R4
0021 371 ?C0089:
372 ; } while (k < strlen);
373 ; SOURCE LINE # 40
0021 C3 374 CLR C
0022 ED 375 MOV A,R5
0023 9500 F 376 SUBB A,strlen?242+01H
0025 EC 377 MOV A,R4
0026 9500 F 378 SUBB A,strlen?242
0028 40E3 379 JC ?C0007
380 ; }
381 ; SOURCE LINE # 41
002A 22 382 RET
383 ; END OF _send_string_com
384
---- 385 CSEG AT 00023H
0023 0100 F 386 AJMP serial
387
A51 MACRO ASSEMBLER TCMAIN 09/30/2007 01:01:42 PAGE 7
388 ; //串口接收中断函数
389 ; void serial () interrupt 4 using 3
390
---- 391 RSEG ?PR?serial?TCMAIN
392 USING 3
0000 393 serial:
0000 C0E0 394 PUSH ACC
0002 C0D0 395 PUSH PSW
396 USING 3
0004 75D018 397 MOV PSW,#018H
398 ; SOURCE LINE # 43
399 ; {
400 ; if (RI) //RI==开始接收
401 ; SOURCE LINE # 45
0007 30981A 402 JNB RI,?C0012
403 ; {
404 ; SOURCE LINE # 46
405 ; unsigned char ch;
406 ; RI = 0 ; //软件RI=0
407 ; SOURCE LINE # 48
000A C298 408 CLR RI
409 ; ch=SBUF;
410 ; SOURCE LINE # 49
000C 859900 F 411 MOV ch?344,SBUF
412 ; if (ch> 1 )
413 ; SOURCE LINE # 50
000F E500 F 414 MOV A,ch?344
0011 D3 415 SETB C
0012 9401 416 SUBB A,#01H
0014 4005 417 JC ?C0010
418 ; {
419 ; SOURCE LINE # 51
420 ; count3= 0 ;
421 ; SOURCE LINE # 52
0016 750000 F 422 MOV count3,#00H
423 ; inbuf2[count3]=ch;
424 ; SOURCE LINE # 53
425 ; }
426 ; SOURCE LINE # 54
0019 8002 427 SJMP ?C0092
001B 428 ?C0010:
429 ; else
430 ; {
431 ; SOURCE LINE # 56
432 ; count3++;
433 ; SOURCE LINE # 57
001B 0500 F 434 INC count3
435 ; inbuf2[count3]=ch;
436 ; SOURCE LINE # 58
001D 437 ?C0092:
001D 7400 F 438 MOV A,#LOW (inbuf2)
001F 2500 F 439 ADD A,count3
0021 F8 440 MOV R0,A
0022 A600 F 441 MOV @R0,ch?344
442 ; }
443 ; SOURCE LINE # 59
444 ; }
445 ; SOURCE LINE # 60
446 ; }
447 ; SOURCE LINE # 61
0024 448 ?C0012:
0024 D0D0 449 POP PSW
0026 D0E0 450 POP ACC
0028 32 451 RETI
452 ; END OF serial
453
A51 MACRO ASSEMBLER TCMAIN 09/30/2007 01:01:42 PAGE 8
454 ;
455 ; unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}
; //0-9的LED笔划,0xFF为空,0xF7为负号
456 ; unsigned char dis_8[12]={'0','1','2','3','4','5','6','7','8','9',' ','-'};
457 ; static unsigned char bdata StateREG; //可位寻址的状态寄存器
458 ; sbit DS1820ON = StateREG^0; //DS1820是否存在
459 ; sbit SetTF = StateREG^1; //是否是在温度设置状态
460 ; sbit KeySETDown = StateREG^2; //是否已按过SET键标识
461 ; sbit PowTF = StateREG^3; //电源电源标识
462 ; sbit KeyTF = StateREG^4; //键盘是否
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -