📄 task.lis
字号:
.module Task.c
.area text(rom, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\Task.c
0000 .dbfunc e Task1_Init _Task1_Init fV
.even
0000 _Task1_Init::
0000 .dbline -1
0000 .dbline 28
0000 ; //******************************************************************************
0000 ; // File Name : Task.c
0000 ; // Author : Steaven
0000 ; // Created : 2008-06-09
0000 ; // Modified :
0000 ; // Revision : V0.0
0000 ; //******************************************************************************
0000 ;
0000 ; #include "app.h"
0000 ;
0000 ; //local function declaration
0000 ; void Task1_Init(void);
0000 ; void Task2_Init(void);
0000 ; void Task3_Init(void);
0000 ; void Task4_Init(void);
0000 ; void Task1(void);
0000 ; void Task2(void);
0000 ; void Task3(void);
0000 ; void Task4(void);
0000 ;
0000 ; //******************************************************************************
0000 ; // Function : Task1_Init
0000 ; // Input : none
0000 ; // Output : none
0000 ; // Description : Initialization of task1,off LED1
0000 ; //******************************************************************************
0000 ; void Task1_Init(void)
0000 ; {
0000 .dbline 29
0000 ; LED_OFF(cLED1);
0000 04E0 ldi R16,4
0002 .dbline -2
0002 .dbline 30
0002 ; }
0002 L1:
0002 .dbline 0 ; func end
0002 0C940000 xjmp _LED_OFF
0006 .dbend
0006 .dbfunc e Task2_Init _Task2_Init fV
.even
0006 _Task2_Init::
0006 .dbline -1
0006 .dbline 39
0006 ;
0006 ; //******************************************************************************
0006 ; // Function : Task2_Init
0006 ; // Input : none
0006 ; // Output : none
0006 ; // Description : Initialization of task2,off LED2
0006 ; //******************************************************************************
0006 ; void Task2_Init(void)
0006 ; {
0006 .dbline 40
0006 ; LED_OFF(cLED2);
0006 05E0 ldi R16,5
0008 .dbline -2
0008 .dbline 41
0008 ; }
0008 L2:
0008 .dbline 0 ; func end
0008 0C940000 xjmp _LED_OFF
000C .dbend
000C .dbfunc e Task3_Init _Task3_Init fV
.even
000C _Task3_Init::
000C .dbline -1
000C .dbline 50
000C ;
000C ; //******************************************************************************
000C ; // Function : Task3_Init
000C ; // Input : none
000C ; // Output : none
000C ; // Description : Initialization of task3,off LED3
000C ; //******************************************************************************
000C ; void Task3_Init(void)
000C ; {
000C .dbline 51
000C ; LED_OFF(cLED3);
000C 06E0 ldi R16,6
000E .dbline -2
000E .dbline 52
000E ; }
000E L3:
000E .dbline 0 ; func end
000E 0C940000 xjmp _LED_OFF
0012 .dbend
0012 .dbfunc e Task4_Init _Task4_Init fV
.even
0012 _Task4_Init::
0012 .dbline -1
0012 .dbline 61
0012 ;
0012 ; //******************************************************************************
0012 ; // Function : Task4_Init
0012 ; // Input : none
0012 ; // Output : none
0012 ; // Description : Initialization of task4,off LED4
0012 ; //******************************************************************************
0012 ; void Task4_Init(void)
0012 ; {
0012 .dbline 62
0012 ; LED_OFF(cLED4);
0012 07E0 ldi R16,7
0014 .dbline -2
0014 .dbline 63
0014 ; }
0014 L4:
0014 .dbline 0 ; func end
0014 0C940000 xjmp _LED_OFF
0018 .dbend
.area data(ram, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\Task.c
0000 L6:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\Task.c
.area text(rom, con, rel)
0018 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\Task.c
0018 .dbfunc e Task1 _Task1 fV
0018 .dbsym s bKey_Status L6 c
0018 ; wTask_Event -> R20,R21
.even
0018 _Task1::
0018 0E940000 xcall push_gset1
001C .dbline -1
001C .dbline 72
001C ;
001C ; //******************************************************************************
001C ; // Function : Task1
001C ; // Input : none
001C ; // Output : none
001C ; // Description : Task1 process,Control LED1
001C ; //******************************************************************************
001C ; void Task1(void)
001C ; {
001C 42C0 xjmp L8
001E L7:
001E .dbline 76
001E ; INT16U wTask_Event;
001E ; static INT8U bKey_Status = cOFF_Status;
001E ; while(1)
001E ; {
001E .dbline 78
001E ; //task switch
001E ; if(OS_Task_Switch(cPrioTask1) == true)
001E 0027 clr R16
0020 0E940000 xcall _OS_Task_Switch
0024 0130 cpi R16,1
0026 E0E0 ldi R30,0
0028 1E07 cpc R17,R30
002A 09F4 brne L10
002C .dbline 79
002C ; {
002C .dbline 80
002C ; return;
002C 3BC0 xjmp L5
002E L10:
002E .dbline 83
002E ; }
002E ; //get event
002E ; wTask_Event = OS_Event_Pend(cPrioTask1);
002E 0027 clr R16
0030 0E940000 xcall _OS_Event_Pend
0034 A801 movw R20,R16
0036 .dbline 85
0036 ; //event check
0036 ; if(wTask_Event == 0)
0036 0030 cpi R16,0
0038 0107 cpc R16,R17
003A 09F4 brne L12
003C X0:
003C .dbline 86
003C ; {
003C .dbline 87
003C ; return;
003C 33C0 xjmp L5
003E L12:
003E .dbline 90
003E ; }
003E ; //event parsing : timer event
003E ; if(wTask_Event & (1 << eTask1_Timer))
003E 40FF sbrs R20,0
0040 17C0 rjmp L14
0042 .dbline 91
0042 ; {
0042 .dbline 92
0042 ; if(bKey_Status == cOFF_Status)
0042 20900000 lds R2,L6
0046 2220 tst R2
0048 21F4 brne L16
004A .dbline 93
004A ; {
004A .dbline 94
004A ; LED_OFF(cLED1);
004A 04E0 ldi R16,4
004C 0E940000 xcall _LED_OFF
0050 .dbline 95
0050 ; }
0050 0FC0 xjmp L17
0052 L16:
0052 .dbline 96
0052 ; else if(bKey_Status == cON_Status)
0052 80910000 lds R24,L6
0056 8130 cpi R24,1
0058 21F4 brne L18
005A .dbline 97
005A ; {
005A .dbline 98
005A ; LED_ON(cLED1);
005A 04E0 ldi R16,4
005C 0E940000 xcall _LED_ON
0060 .dbline 99
0060 ; }
0060 07C0 xjmp L19
0062 L18:
0062 .dbline 100
0062 ; else if(bKey_Status == cTOGGLE_Status)
0062 80910000 lds R24,L6
0066 8230 cpi R24,2
0068 19F4 brne L20
006A .dbline 101
006A ; {
006A .dbline 102
006A ; LED_TOGGLE(cLED1);
006A 04E0 ldi R16,4
006C 0E940000 xcall _LED_TOGGLE
0070 .dbline 103
0070 ; }
0070 L20:
0070 L19:
0070 L17:
0070 .dbline 104
0070 ; }
0070 L14:
0070 .dbline 106
0070 ; //event parsing : key event
0070 ; if(wTask_Event & (1 << eTask1_Key))
0070 41FF sbrs R20,1
0072 17C0 rjmp L22
0074 .dbline 107
0074 ; {
0074 .dbline 108
0074 ; if(bKey_Status == cOFF_Status)
0074 20900000 lds R2,L6
0078 2220 tst R2
007A 21F4 brne L24
007C .dbline 109
007C ; {
007C .dbline 110
007C ; bKey_Status = cTOGGLE_Status;
007C 82E0 ldi R24,2
007E 80930000 sts L6,R24
0082 .dbline 111
0082 ; }
0082 0FC0 xjmp L25
0084 L24:
0084 .dbline 112
0084 ; else if(bKey_Status == cTOGGLE_Status)
0084 80910000 lds R24,L6
0088 8230 cpi R24,2
008A 21F4 brne L26
008C .dbline 113
008C ; {
008C .dbline 114
008C ; bKey_Status = cOFF_Status;
008C 2224 clr R2
008E 20920000 sts L6,R2
0092 .dbline 115
0092 ; }
0092 07C0 xjmp L27
0094 L26:
0094 .dbline 116
0094 ; else if(bKey_Status == cON_Status)
0094 80910000 lds R24,L6
0098 8130 cpi R24,1
009A 19F4 brne L28
009C .dbline 117
009C ; {
009C .dbline 118
009C ; bKey_Status = cOFF_Status;
009C 2224 clr R2
009E 20920000 sts L6,R2
00A2 .dbline 119
00A2 ; }
00A2 L28:
00A2 L27:
00A2 L25:
00A2 .dbline 120
00A2 ; }
00A2 L22:
00A2 .dbline 121
00A2 L8:
00A2 .dbline 75
00A2 BDCF xjmp L7
00A4 X1:
00A4 .dbline -2
00A4 .dbline 122
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -