📄 multitask.lst
字号:
346
0132 3582 347 ADDC A,DPL
0134 F582 348 MOV DPL,A
349
0136 E583 350 MOV A,DPH
351 ADDC A,#0x00
*** ERROR #3 IN 351 (MULTITASK.INC, LINE 351): ILLEGAL CHARACTER IN NUMERIC CONSTANT
0138 F583 352 MOV DPH,A ;+offset
353
354 MOV R0,#DEFINE_TASK_XDATA_BLOCK
*** ERROR #7 IN 354 (MULTITASK.INC, LINE 354): UNDEFINED SYMBOL
355 MOV R1,#VAR_TASK_BUFFER_START_ADDRESS
*** ERROR #7 IN 355 (MULTITASK.INC, LINE 355): UNDEFINED SYMBOL
356
013E 357 TASK_NEXT_RESUME_FROM_XDATA__COPY_DATA_LOOP:
013E E0 358 MOVX A,@DPTR
013F F7 359 MOV @R1,A
360
0140 A3 361 INC DPTR
0141 09 362 INC R1
363
A51 MACRO ASSEMBLER MULTITASK 04/04/2009 22:01:21 PAGE 8
364 ;Next
0142 D8FA 365 DJNZ R0,TASK_NEXT_RESUME_FROM_XDATA__COPY_DATA_LOOP
366
0144 0200F5 367 LJMP TASK_NEXT_GET_XDATA__TASK_NEXT_RESUME_FROM_XDATA_RETURN
368 ;RET return by youself
369
370 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
371 ;Task finished
372 ;Run here when a task function RET
0147 373 TASK_FINISHED_:
0147 C2AF 374 CLR EA ;Must Disable Interrupt, Enable Interrupt In task switch function
375
376 ;Kill Current Task(PC=00H)
0149 E4 377 CLR A
014A 0581 378 INC SP ;so important sp+2
014C 0581 379 INC SP
380
014E C0E0 381 PUSH ACC
0150 C0E0 382 PUSH ACC
383
384 ;Switch to Next task
385 MOV DPTR,#TIMER_INTERRUPT_0_FOR_MULTI_TASK
*** ERROR #7 IN 385 (MULTITASK.INC, LINE 385): UNDEFINED SYMBOL
0155 C082 386 PUSH DPL
0157 C083 387 PUSH DPH
0159 22 388 RET
389
390 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
391 ;Destroy a task
015A 392 TASK_DESTROY:
393 ;reserve
015A 22 394 RET
395
396 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
397 ;Task sleep
398 ;1=100us,The most time is 0xffff/10/1000=6.5535s(about)
399 ;Input : R0 - sleep number of low 8bit, R1 - sleep number of high 8bit
400 ;Output : NULL
015B 401 TASK_SLEEP:
402 ;R2~R3 ago tick
403 MOV R2,VAR_TIMER_TICK_NOW_BYTE0
*** ERROR #7 IN 403 (MULTITASK.INC, LINE 403): UNDEFINED SYMBOL
*** ERROR #18 IN 403 (MULTITASK.INC, LINE 403): DATA-ADDRESS EXPECTED
404 MOV R3,VAR_TIMER_TICK_NOW_BYTE1
*** ERROR #7 IN 404 (MULTITASK.INC, LINE 404): UNDEFINED SYMBOL
*** ERROR #18 IN 404 (MULTITASK.INC, LINE 404): DATA-ADDRESS EXPECTED
405
015F 406 TASK_SLEEP_LOOP:
015F C3 407 CLR C
408
409 ;R4~R5 different tick
410 MOV A,VAR_TIMER_TICK_NOW_BYTE0
*** ERROR #7 IN 410 (MULTITASK.INC, LINE 410): UNDEFINED SYMBOL
*** ERROR #18 IN 410 (MULTITASK.INC, LINE 410): DATA-ADDRESS EXPECTED
0162 9A 411 SUBB A,R2
0163 FC 412 MOV R4,A
413
414 MOV A,VAR_TIMER_TICK_NOW_BYTE1
*** ERROR #7 IN 414 (MULTITASK.INC, LINE 414): UNDEFINED SYMBOL
*** ERROR #18 IN 414 (MULTITASK.INC, LINE 414): DATA-ADDRESS EXPECTED
0166 9B 415 SUBB A,R3
0167 FD 416 MOV R5,A
417
418 ;Now >= Ago
0168 C3 419 CLR C
420
A51 MACRO ASSEMBLER MULTITASK 04/04/2009 22:01:21 PAGE 9
0169 EC 421 MOV A,R4
016A 98 422 SUBB A,R0
016B FC 423 MOV R4,A
424
016C ED 425 MOV A,R5
016D 99 426 SUBB A,R1
016E FD 427 MOV R5,A
428
016F 40EE 429 JC TASK_SLEEP_LOOP
0171 020177 430 LJMP TASK_SLEEP_RETURN
431
0174 02015F 432 LJMP TASK_SLEEP_LOOP
0177 433 TASK_SLEEP_RETURN:
0177 22 434 RET
435
436 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
437 ;Create multi task, if no need multi task don't call this function
438 ;Note: The main function can be use multi task aslo, but the task count don't out of DEFINE_TASK_MAX
0178 439 CREATE_MULTI_TASK:
440 ;System flow
441 MOV DPTR,#MAIN_TASK_PROCESS
*** ERROR #7 IN 441 (MULTITASK.INC, LINE 441): UNDEFINED SYMBOL
017B 7800 442 MOV R0,#00
017D 1116 443 CALL TASK_CREATE_
444
445 ;Input device
446 MOV DPTR,#IR_TASK_PROCESS
*** ERROR #7 IN 446 (MULTITASK.INC, LINE 446): UNDEFINED SYMBOL
0182 7801 447 MOV R0,#01
0184 1116 448 CALL TASK_CREATE_
449
450 MOV DPTR,#KEYPAD_TASK_PROCESS
*** ERROR #7 IN 450 (MULTITASK.INC, LINE 450): UNDEFINED SYMBOL
0189 7802 451 MOV R0,#02
018B 1116 452 CALL TASK_CREATE_
453
454 ;Storage device
455 MOV DPTR,#E2PROM_TASK_PROCESS
*** ERROR #7 IN 455 (MULTITASK.INC, LINE 455): UNDEFINED SYMBOL
0190 7803 456 MOV R0,#03
0192 1116 457 CALL TASK_CREATE_
458
459 ;Communication device
460 MOV DPTR,#COM_TASK_PROCESS
*** ERROR #7 IN 460 (MULTITASK.INC, LINE 460): UNDEFINED SYMBOL
0197 7804 461 MOV R0,#04
0199 1116 462 CALL TASK_CREATE_
463
464 ;Clock
465 MOV DPTR,#CLOCK_TASK_PROCESS
*** ERROR #7 IN 465 (MULTITASK.INC, LINE 465): UNDEFINED SYMBOL
019E 7805 466 MOV R0,#05
01A0 1116 467 CALL TASK_CREATE_
468
469 ;Output device
470 MOV DPTR,#LCD_TASK_PROCESS
*** ERROR #7 IN 470 (MULTITASK.INC, LINE 470): UNDEFINED SYMBOL
01A5 7806 471 MOV R0,#06
01A7 1116 472 CALL TASK_CREATE_
473
474 MOV DPTR,#LED_TASK_PROCESS
*** ERROR #7 IN 474 (MULTITASK.INC, LINE 474): UNDEFINED SYMBOL
01AC 7807 475 MOV R0,#07
01AE 1116 476 CALL TASK_CREATE_
477
478 MOV DPTR,#TUBE_TASK_PROCESS
A51 MACRO ASSEMBLER MULTITASK 04/04/2009 22:01:21 PAGE 10
*** ERROR #7 IN 478 (MULTITASK.INC, LINE 478): UNDEFINED SYMBOL
01B3 7808 479 MOV R0,#08
01B5 1116 480 CALL TASK_CREATE_
481
482 MOV DPTR,#TONE_TASK_PROCESS
*** ERROR #7 IN 482 (MULTITASK.INC, LINE 482): UNDEFINED SYMBOL
01BA 7809 483 MOV R0,#09
01BC 1116 484 CALL TASK_CREATE_
01BE 22 485 RET
486
*** WARNING IN 486 (MULTITASK.INC, LINE 486): MISSING 'END' STATEMENT
A51 MACRO ASSEMBLER MULTITASK 04/04/2009 22:01:21 PAGE 11
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 00E0H A
B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 00F0H A
CREATE_MULTI_TASK . . . . . . . . . . . . . . . . . . . . . C ADDR 0178H A
DPH . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 0083H A
DPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 0082H A
EA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . B ADDR 00A8H.7 A
ET0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . B ADDR 00A8H.1 A
PSW . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 00D0H A
SP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . D ADDR 0081H A
TASK_CREATE_. . . . . . . . . . . . . . . . . . . . . . . . C ADDR 0016H A
TASK_CREATE_CLEAR__DATA_LOOP. . . . . . . . . . . . . . . . C ADDR 0048H A
TASK_CREATE_START . . . . . . . . . . . . . . . . . . . . . C ADDR 0020H A
TASK_CREATE_START_RETURN. . . . . . . . . . . . . . . . . . C ADDR 004CH A
TASK_CURRENT_SAVE_TO_XDATA_ . . . . . . . . . . . . . . . . C ADDR 00CCH A
TASK_CURRENT_SAVE_TO_XDATA__COPY_DATA_LOOP. . . . . . . . . C ADDR 00E6H A
TASK_DESTROY. . . . . . . . . . . . . . . . . . . . . . . . C ADDR 015AH A
TASK_FINISHED_. . . . . . . . . . . . . . . . . . . . . . . C ADDR 0147H A
TASK_INITIAL. . . . . . . . . . . . . . . . . . . . . . . . C ADDR 0000H A
TASK_INITIAL_DATA_LOOP. . . . . . . . . . . . . . . . . . . C ADDR 0011H A
TASK_NEXT_GET_NEXT_ID_. . . . . . . . . . . . . . . . . . . C ADDR 00F8H A
TASK_NEXT_GET_NEXT_ID__GET_NEXT_ADRRESS . . . . . . . . . . C ADDR 0100H A
TASK_NEXT_GET_NEXT_ID__GET_NEXT_ID_LOOP . . . . . . . . . . C ADDR 00FCH A
TASK_NEXT_GET_NEXT_ID__GET_NEXT_ID_LOOP_NEXT. . . . . . . . C ADDR 0122H A
TASK_NEXT_GET_NEXT_ID__PCH. . . . . . . . . . . . . . . . . C ADDR 0119H A
TASK_NEXT_GET_NEXT_ID__RETURN . . . . . . . . . . . . . . . C ADDR 0124H A
TASK_NEXT_GET_XDATA_. . . . . . . . . . . . . . . . . . . . C ADDR 00EFH A
TASK_NEXT_GET_XDATA__TASK_NEXT_GET_NEXT_ID_RETURN . . . . . C ADDR 00F2H A
TASK_NEXT_GET_XDATA__TASK_NEXT_RESUME_FROM_XDATA_RETURN . . C ADDR 00F5H A
TASK_NEXT_RESUME_FROM_XDATA_. . . . . . . . . . . . . . . . C ADDR 0127H A
TASK_NEXT_RESUME_FROM_XDATA__COPY_DATA_LOOP . . . . . . . . C ADDR 013EH A
TASK_RESUME . . . . . . . . . . . . . . . . . . . . . . . . C ADDR 004EH A
TASK_SLEEP. . . . . . . . . . . . . . . . . . . . . . . . . C ADDR 015BH A
TASK_SLEEP_LOOP . . . . . . . . . . . . . . . . . . . . . . C ADDR 015FH A
TASK_SLEEP_RETURN . . . . . . . . . . . . . . . . . . . . . C ADDR 0177H A
TASK_SUSPEND. . . . . . . . . . . . . . . . . . . . . . . . C ADDR 004DH A
TASK_SWITCH . . . . . . . . . . . . . . . . . . . . . . . . C ADDR 004FH A
TASK_SWITCH_BUFFER_ . . . . . . . . . . . . . . . . . . . . C ADDR 00C3H A
TASK_SWITCH_BUFFER__TASK_CURRENT_SAVE_TO_XDATA_RETURN . . . C ADDR 00C6H A
TASK_SWITCH_BUFFER__TASK_NEXT_GET_XDATA_RETURN. . . . . . . C ADDR 00C9H A
TIMER_INTERRUPT_0_FOR_MULTI_TASK_COPY_STACK_LOOP_0. . . . . C ADDR 0080H A
TIMER_INTERRUPT_0_FOR_MULTI_TASK_COPY_STACK_LOOP_1. . . . . C ADDR 0090H A
TIMER_INTERRUPT_0_FOR_MULTI_TASK__TASK_SWITCH_BUFFER_RETURN C ADDR 0089H A
TR0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 1 WARNING(S), 110 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -