📄 project.lst
字号:
(0137) if(OS_Task_Switch(cPrioTask2) == true)
030C E001 LDI R16,1
030D 940E00CF CALL _OS_Task_Switch
030F 3001 CPI R16,1
0310 E0E0 LDI R30,0
0311 071E CPC R17,R30
0312 F409 BNE 0x0314
(0138) {
(0139) return;
0313 C033 RJMP 0x0347
(0140) }
(0141) //get event
(0142) wTask_Event = OS_Event_Pend(cPrioTask2);
0314 E001 LDI R16,1
0315 940E0081 CALL _OS_Event_Pend
0317 01A8 MOVW R20,R16
(0143) if(wTask_Event == 0)
0318 3000 CPI R16,0
0319 0701 CPC R16,R17
031A F409 BNE 0x031C
(0144) {
(0145) return;
031B C02B RJMP 0x0347
(0146) }
(0147) //event parsing : timer event
(0148) if(wTask_Event & (1 << eTask2_Timer))
031C FF40 SBRS R20,0
031D C017 RJMP 0x0335
(0149) {
(0150) if(bKey_Status == cOFF_Status)
031E 9020006D LDS R2,0x6D
0320 2022 TST R2
0321 F421 BNE 0x0326
(0151) {
(0152) LED_OFF(cLED2);
0322 E005 LDI R16,5
0323 940E0166 CALL _LED_OFF
(0153) }
0325 C00F RJMP 0x0335
(0154) else if(bKey_Status == cON_Status)
0326 9180006D LDS R24,0x6D
0328 3081 CPI R24,1
0329 F421 BNE 0x032E
(0155) {
(0156) LED_ON(cLED2);
032A E005 LDI R16,5
032B 940E0173 CALL _LED_ON
(0157) }
032D C007 RJMP 0x0335
(0158) else if(bKey_Status == cTOGGLE_Status)
032E 9180006D LDS R24,0x6D
0330 3082 CPI R24,2
0331 F419 BNE 0x0335
(0159) {
(0160) LED_TOGGLE(cLED2);
0332 E005 LDI R16,5
0333 940E0182 CALL _LED_TOGGLE
(0161) }
(0162) }
(0163) //event parsing : key event
(0164) if(wTask_Event & (1 << eTask2_Key))
0335 FF41 SBRS R20,1
0336 C00F RJMP 0x0346
(0165) {
(0166) if(bKey_Status == cOFF_Status)
0337 9020006D LDS R2,0x6D
0339 2022 TST R2
033A F421 BNE 0x033F
(0167) {
(0168) bKey_Status = cTOGGLE_Status;
033B E082 LDI R24,2
033C 9380006D STS 0x6D,R24
(0169) }
033E C007 RJMP 0x0346
(0170) else if(bKey_Status == cTOGGLE_Status)
033F 9180006D LDS R24,0x6D
0341 3082 CPI R24,2
0342 F419 BNE 0x0346
(0171) {
(0172) bKey_Status = cOFF_Status;
0343 2422 CLR R2
0344 9220006D STS 0x6D,R2
0346 CFC5 RJMP 0x030C
(0173) }
(0174) }
(0175) }
(0176) }
0347 940E03D9 CALL pop_gset1
0349 9508 RET
_Task3:
wTask_Event --> R20
034A 940E03D6 CALL push_gset1
(0177)
(0178) //******************************************************************************
(0179) // Function : Task3
(0180) // Input : none
(0181) // Output : none
(0182) // Description : Task3 process,Control LED3
(0183) //******************************************************************************
(0184) void Task3(void)
(0185) {
034C C036 RJMP 0x0383
(0186) INT16U wTask_Event;
(0187) static INT8U bKey_Status = cOFF_Status;
(0188) while(1)
(0189) {
(0190) //task switch
(0191) if(OS_Task_Switch(cPrioTask3) == true)
034D E002 LDI R16,2
034E 940E00CF CALL _OS_Task_Switch
0350 3001 CPI R16,1
0351 E0E0 LDI R30,0
0352 071E CPC R17,R30
0353 F409 BNE 0x0355
(0192) {
(0193) return;
0354 C02F RJMP 0x0384
(0194) }
(0195) //get event
(0196) wTask_Event = OS_Event_Pend(cPrioTask3);
0355 E002 LDI R16,2
0356 940E0081 CALL _OS_Event_Pend
0358 01A8 MOVW R20,R16
(0197) //event parsing : timer event
(0198) if(wTask_Event & (1 << eTask3_Timer))
0359 FF00 SBRS R16,0
035A C017 RJMP 0x0372
(0199) {
(0200) if(bKey_Status == cOFF_Status)
035B 9020006E LDS R2,0x6E
035D 2022 TST R2
035E F421 BNE 0x0363
(0201) {
(0202) LED_OFF(cLED3);
035F E006 LDI R16,6
0360 940E0166 CALL _LED_OFF
(0203) }
0362 C00F RJMP 0x0372
(0204) else if(bKey_Status == cON_Status)
0363 9180006E LDS R24,0x6E
0365 3081 CPI R24,1
0366 F421 BNE 0x036B
(0205) {
(0206) LED_ON(cLED3);
0367 E006 LDI R16,6
0368 940E0173 CALL _LED_ON
(0207) }
036A C007 RJMP 0x0372
(0208) else if(bKey_Status == cTOGGLE_Status)
036B 9180006E LDS R24,0x6E
036D 3082 CPI R24,2
036E F419 BNE 0x0372
(0209) {
(0210) LED_TOGGLE(cLED3);
036F E006 LDI R16,6
0370 940E0182 CALL _LED_TOGGLE
(0211) }
(0212) }
(0213) //event parsing : key event
(0214) if(wTask_Event & (1 << eTask3_Key))
0372 FF41 SBRS R20,1
0373 C00F RJMP 0x0383
(0215) {
(0216) if(bKey_Status == cOFF_Status)
0374 9020006E LDS R2,0x6E
0376 2022 TST R2
0377 F421 BNE 0x037C
(0217) {
(0218) bKey_Status = cTOGGLE_Status;
0378 E082 LDI R24,2
0379 9380006E STS 0x6E,R24
(0219) }
037B C007 RJMP 0x0383
(0220) else if(bKey_Status == cTOGGLE_Status)
037C 9180006E LDS R24,0x6E
037E 3082 CPI R24,2
037F F419 BNE 0x0383
(0221) {
(0222) bKey_Status = cOFF_Status;
0380 2422 CLR R2
0381 9220006E STS 0x6E,R2
0383 CFC9 RJMP 0x034D
(0223) }
(0224) }
(0225) }
(0226) }
0384 940E03D9 CALL pop_gset1
0386 9508 RET
_Task4:
wTask_Event --> R20
0387 940E03D6 CALL push_gset1
(0227)
(0228) //******************************************************************************
(0229) // Function : Task4
(0230) // Input : none
(0231) // Output : none
(0232) // Description : Task4 process,Control LED4
(0233) //******************************************************************************
(0234) void Task4(void)
(0235) {
0389 C03A RJMP 0x03C4
(0236) INT16U wTask_Event;
(0237) static INT8U bKey_Status = cOFF_Status;
(0238) while(1)
(0239) {
(0240) //task switch
(0241) if(OS_Task_Switch(cPrioTask4) == true)
038A E003 LDI R16,3
038B 940E00CF CALL _OS_Task_Switch
038D 3001 CPI R16,1
038E E0E0 LDI R30,0
038F 071E CPC R17,R30
0390 F409 BNE 0x0392
(0242) {
(0243) return;
0391 C033 RJMP 0x03C5
(0244) }
(0245) //get event
(0246) wTask_Event = OS_Event_Pend(cPrioTask4);
0392 E003 LDI R16,3
0393 940E0081 CALL _OS_Event_Pend
0395 01A8 MOVW R20,R16
(0247) //event check
(0248) if(wTask_Event == 0)
0396 3000 CPI R16,0
0397 0701 CPC R16,R17
0398 F409 BNE 0x039A
(0249) {
(0250) return;
0399 C02B RJMP 0x03C5
(0251) }
(0252) //event parsing : timer event
(0253) if(wTask_Event & (1 << eTask4_Timer))
039A FF40 SBRS R20,0
039B C017 RJMP 0x03B3
(0254) {
(0255) if(bKey_Status == cOFF_Status)
039C 9020006F LDS R2,0x6F
039E 2022 TST R2
039F F421 BNE 0x03A4
(0256) {
(0257) LED_OFF(cLED4);
03A0 E007 LDI R16,7
03A1 940E0166 CALL _LED_OFF
(0258) }
03A3 C00F RJMP 0x03B3
(0259) else if(bKey_Status == cON_Status)
03A4 9180006F LDS R24,0x6F
03A6 3081 CPI R24,1
03A7 F421 BNE 0x03AC
(0260) {
(0261) LED_ON(cLED4);
03A8 E007 LDI R16,7
03A9 940E0173 CALL _LED_ON
(0262) }
03AB C007 RJMP 0x03B3
(0263) else if(bKey_Status == cTOGGLE_Status)
03AC 9180006F LDS R24,0x6F
03AE 3082 CPI R24,2
03AF F419 BNE 0x03B3
(0264) {
(0265) LED_TOGGLE(cLED4);
03B0 E007 LDI R16,7
03B1 940E0182 CALL _LED_TOGGLE
(0266) }
(0267) }
(0268) //event parsing : key event
(0269) if(wTask_Event & (1 << eTask4_Key))
03B3 FF41 SBRS R20,1
03B4 C00F RJMP 0x03C4
(0270) {
(0271) if(bKey_Status == cOFF_Status)
03B5 9020006F LDS R2,0x6F
03B7 2022 TST R2
03B8 F421 BNE 0x03BD
(0272) {
(0273) bKey_Status = cTOGGLE_Status;
03B9 E082 LDI R24,2
03BA 9380006F STS 0x6F,R24
(0274) }
03BC C007 RJMP 0x03C4
(0275) else if(bKey_Status == cTOGGLE_Status)
03BD 9180006F LDS R24,0x6F
03BF 3082 CPI R24,2
03C0 F419 BNE 0x03C4
(0276) {
(0277) bKey_Status = cOFF_Status;
03C1 2422 CLR R2
03C2 9220006F STS 0x6F,R2
03C4 CFC5 RJMP 0x038A
(0278) }
(0279) }
(0280) }
(0281) }
03C5 940E03D9 CALL pop_gset1
03C7 9508 RET
(0282)
(0283) //******************************************************************************
(0284) // Function : Task_Start
(0285) // Input : none
(0286) // Output : none
(0287) // Description : Standard function format,put all tasks into while(1)
(0288) //******************************************************************************
(0289) void Task_Start(void)
(0290) {
_Task_Start:
03C8 C004 RJMP 0x03CD
(0291) while(1)
(0292) {
(0293) Task1();
03C9 DEF6 RCALL _Task1
(0294) Task2();
03CA DF3E RCALL _Task2
(0295) Task3();
03CB DF7E RCALL _Task3
(0296) Task4();
03CC DFBA RCALL _Task4
03CD CFFB RJMP 0x03C9
(0297) }
(0298) }
03CE 9508 RET
(0299)
(0300) //******************************************************************************
(0301) // Function : Task_Init
(0302) // Input : none
(0303) // Output : none
(0304) // Description : Standard function format,put all tasks Initialization here
(0305) //******************************************************************************
(0306) void Task_Init(void)
(0307) {
(0308) Task1_Init();
_Task_Init:
03CF DEE4 RCALL _Task1_Init
(0309) Task2_Init();
03D0 DEE6 RCALL _Task2_Init
(0310) Task3_Init();
03D1 DEE8 RCALL _Task3_Init
(0311) Task4_Init();
(0312) }
FILE: <library>
03D2 CEEA RJMP _Task4_Init
pop_gset2:
03D3 E0E2 LDI R30,2
03D4 940C03DA JMP pop
push_gset1:
03D6 935A ST R21,-Y
03D7 934A ST R20,-Y
03D8 9508 RET
pop_gset1:
03D9 E0E1 LDI R30,1
pop:
03DA 9149 LD R20,Y+
03DB 9159 LD R21,Y+
03DC FDE0 SBRC R30,0
03DD 9508 RET
03DE 9169 LD R22,Y+
03DF 9179 LD R23,Y+
03E0 FDE1 SBRC R30,1
03E1 9508 RET
03E2 90A9 LD R10,Y+
03E3 90B9 LD R11,Y+
03E4 FDE2 SBRC R30,2
03E5 9508 RET
03E6 90C9 LD R12,Y+
03E7 90D9 LD R13,Y+
03E8 FDE3 SBRC R30,3
03E9 9508 RET
03EA 90E9 LD R14,Y+
03EB 90F9 LD R15,Y+
03EC 9508 RET
push_gset2:
03ED 937A ST R23,-Y
03EE 936A ST R22,-Y
03EF 940C03D6 JMP push_gset1
push_lset:
03F1 93FA ST R31,-Y
03F2 93EA ST R30,-Y
03F3 93BA ST R27,-Y
03F4 93AA ST R26,-Y
03F5 939A ST R25,-Y
03F6 938A ST R24,-Y
03F7 933A ST R19,-Y
03F8 932A ST R18,-Y
03F9 931A ST R17,-Y
03FA 930A ST R16,-Y
03FB 929A ST R9,-Y
03FC 928A ST R8,-Y
03FD 927A ST R7,-Y
03FE 926A ST R6,-Y
03FF 925A ST R5,-Y
0400 924A ST R4,-Y
0401 923A ST R3,-Y
0402 922A ST R2,-Y
0403 921A ST R1,-Y
0404 920A ST R0,-Y
0405 B60F IN R0,0x3F
0406 920A ST R0,-Y
0407 9508 RET
pop_lset:
0408 9009 LD R0,Y+
0409 BE0F OUT 0x3F,R0
040A 9009 LD R0,Y+
040B 9019 LD R1,Y+
040C 9029 LD R2,Y+
040D 9039 LD R3,Y+
040E 9049 LD R4,Y+
040F 9059 LD R5,Y+
0410 9069 LD R6,Y+
0411 9079 LD R7,Y+
0412 9089 LD R8,Y+
0413 9099 LD R9,Y+
0414 9109 LD R16,Y+
0415 9119 LD R17,Y+
0416 9129 LD R18,Y+
0417 9139 LD R19,Y+
0418 9189 LD R24,Y+
0419 9199 LD R25,Y+
041A 91A9 LD R26,Y+
041B 91B9 LD R27,Y+
041C 91E9 LD R30,Y+
041D 91F9 LD R31,Y+
041E 9508 RET
lsl16:
041F 2322 TST R18
0420 F021 BEQ 0x0425
0421 0F00 LSL R16
0422 1F11 ROL R17
0423 952A DEC R18
0424 CFFA RJMP lsl16
0425 9508 RET
lsl8:
0426 2311 TST R17
0427 F019 BEQ 0x042B
0428 0F00 LSL R16
0429 951A DEC R17
042A CFFB RJMP lsl8
042B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -