📄 taskexcu.lis
字号:
.module taskexcu.c
.area vector(rom, abs)
.org 16
0010 0C940000 jmp _OSTickISR
.area text(rom, con, rel)
0000 .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\21_uCOSII\taskexcu.c
0000 .dbfunc e TC2_Init _TC2_Init fV
.even
0000 _TC2_Init::
0000 .dbline -1
0000 .dbline 33
0000 ;
0000 ; #define Test1_GLOBALS
0000 ; #include "includes.h"
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <stdio.h>
0000 ; #include "prototype.h"
0000 ;
0000 ; #pragma interrupt_handler OSTickISR:5
0000 ;
0000 ; //******************************************************************************
0000 ; // Constants
0000 ; #define TaskStartPrio 10 // Task-Prioritaeten
0000 ; //*****************************************************************************
0000 ; // Variablen
0000 ; INT8U time[6];
0000 ; INT8U h,m,s,state;
0000 ; OS_STK Task1Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
0000 ; OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE];
0000 ; //ICC-AVR application builder : 2003-12-28 21:52:56
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; //*****************************************************************************
0000 ; // Prototypes
0000 ;
0000 ; //*****************************************************************************
0000 ; // TickISR
0000 ; //*****************************************************************************
0000 ; // Init Timer/Counter2 fuer Takterzeugung
0000 ; void TC2_Init (void)
0000 ; {
0000 .dbline 37
0000 ; /* Only uses TIMER2 overflow for tick interrupt. Timer compare
0000 ; * can also be used.
0000 ; */
0000 ; TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */); //disable TC2 interrupts
0000 89B7 in R24,0x39
0002 8F7B andi R24,191
0004 89BF out 0x39,R24
0006 .dbline 38
0006 ; TCCR2 = 0x48; // CTC
0006 88E4 ldi R24,72
0008 85BD out 0x25,R24
000A .dbline 39
000A ; TCNT2 = 0; // Counter ruecksetzen, 2ms @ 8MHz
000A 2224 clr R2
000C 24BC out 0x24,R2
000E .dbline 40
000E ; TCCR2 |= 0x06; // 256
000E 85B5 in R24,0x25
0010 8660 ori R24,6
0012 85BD out 0x25,R24
0014 .dbline 41
0014 ; OCR2 = 250; // OutputCompareRegister
0014 8AEF ldi R24,250
0016 83BD out 0x23,R24
0018 .dbline 42
0018 ; TIMSK |= BIT(TOIE2); // enable OVF-interrupt
0018 89B7 in R24,0x39
001A 8064 ori R24,64
001C 89BF out 0x39,R24
001E .dbline 45
001E ; //TIMSK |= OCIE2; // enable COMP-interrupt
001E ;
001E ; SEI(); // enable global interrupt
001E 7894 sei
0020 .dbline -2
0020 .dbline 46
0020 ; }
0020 L2:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
0022 .dbfunc e main _main fV
.even
0022 _main::
0022 2397 sbiw R28,3
0024 .dbline -1
0024 .dbline 58
0024 ;
0024 ; //*****************************************************************************
0024 ; // Interrupt Timer/Counter0 Overflow
0024 ; // OVF_Takt: 8MHz / 256 / 250 = 125Hz (8ms)
0024 ;
0024 ; void Task1(void *pdata);
0024 ; void Task2(void *pdata);
0024 ;
0024 ; //*****************************************************************************
0024 ; // Start
0024 ; void main(void)
0024 ; {
0024 .dbline 59
0024 ; OSInit(); // OS init
0024 0E940000 xcall _OSInit
0028 .dbline 60
0028 ; OSTaskCreate(Task1,
0028 87E0 ldi R24,7
002A 8A83 std y+2,R24
002C 80E0 ldi R24,<_Task1Stack+99
002E 90E0 ldi R25,>_Task1Stack+99
0030 8883 std y+0,R24
0032 9983 std y+1,R25
0034 2227 clr R18
0036 3327 clr R19
0038 00E0 ldi R16,<PL_Task1
003A 10E0 ldi R17,>PL_Task1
003C 0E940000 xcall _OSTaskCreate
0040 .dbline 64
0040 ; (void *)0,
0040 ; &Task1Stack[OS_TASK_DEF_STK_SIZE-1],
0040 ; 7);
0040 ; OSTaskCreate(Task2,
0040 88E0 ldi R24,8
0042 8A83 std y+2,R24
0044 80E0 ldi R24,<_Task2Stack+99
0046 90E0 ldi R25,>_Task2Stack+99
0048 8883 std y+0,R24
004A 9983 std y+1,R25
004C 2227 clr R18
004E 3327 clr R19
0050 00E0 ldi R16,<PL_Task2
0052 10E0 ldi R17,>PL_Task2
0054 0E940000 xcall _OSTaskCreate
0058 .dbline 69
0058 ; (void *)0,
0058 ; &Task2Stack[OS_TASK_DEF_STK_SIZE-1],
0058 ; 8);
0058 ; // init und start tick
0058 ; TC2_Init(); // Timer/Counter#2 Overflow and Comp init
0058 D3DF xcall _TC2_Init
005A .dbline 70
005A ; Board_init();
005A 0E940000 xcall _Board_init
005E .dbline 71
005E ; OSStart(); // start multitasking
005E 0E940000 xcall _OSStart
0062 .dbline -2
0062 .dbline 72
0062 ; }
0062 L3:
0062 2396 adiw R28,3
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbend
0066 .dbfunc e Task1 _Task1 fV
0066 ; i -> R20
0066 ; data -> R20,R21
.even
0066 _Task1::
0066 0E940000 xcall push_gset1
006A A801 movw R20,R16
006C .dbline -1
006C .dbline 76
006C ;
006C ; //*****************************************************************************
006C ; void Task1(void *data)
006C ; {
006C .dbline 78
006C ; uchar i;
006C ; data = data;
006C .dbline 79
006C ; state = 1;
006C 81E0 ldi R24,1
006E 8093C800 sts _state,R24
0072 .dbline 80
0072 ; for (;;)
0072 L7:
0072 .dbline 81
0072 ; {
0072 .dbline 82
0072 ; DS1302_getT(time);
0072 00E0 ldi R16,<_time
0074 10E0 ldi R17,>_time
0076 0E940000 xcall _DS1302_getT
007A .dbline 83
007A ; for(i=0;i<3;i++)
007A 4427 clr R20
007C 1CC0 xjmp L14
007E L11:
007E .dbline 84
007E .dbline 85
007E 82E0 ldi R24,2
0080 849F mul R24,R20
0082 80E0 ldi R24,<_time
0084 90E0 ldi R25,>_time
0086 F001 movw R30,R0
0088 E80F add R30,R24
008A F91F adc R31,R25
008C 8081 ldd R24,z+0
008E 8295 swap R24
0090 8F70 andi R24,#0x0F
0092 E0E0 ldi R30,<_time+1
0094 F0E0 ldi R31,>_time+1
0096 D001 movw R26,R0
0098 AE0F add R26,R30
009A BF1F adc R27,R31
009C 8C93 st x,R24
009E .dbline 86
009E 82E0 ldi R24,2
00A0 849F mul R24,R20
00A2 1001 movw R2,R0
00A4 80E0 ldi R24,<_time
00A6 90E0 ldi R25,>_time
00A8 280E add R2,R24
00AA 391E adc R3,R25
00AC F101 movw R30,R2
00AE 8081 ldd R24,z+0
00B0 8F70 andi R24,15
00B2 8083 std z+0,R24
00B4 .dbline 87
00B4 L12:
00B4 .dbline 83
00B4 4395 inc R20
00B6 L14:
00B6 .dbline 83
00B6 4330 cpi R20,3
00B8 10F3 brlo L11
00BA .dbline 88
00BA 00E0 ldi R16,<_time
00BC 10E0 ldi R17,>_time
00BE 0E940000 xcall _All_smg_display
00C2 .dbline 89
00C2 01E0 ldi R16,1
00C4 10E0 ldi R17,0
00C6 0E940000 xcall _OSTimeDly
00CA .dbline 90
00CA .dbline 80
00CA .dbline 80
00CA D3CF xjmp L7
00CC X0:
00CC .dbline -2
00CC L6:
00CC 0E940000 xcall pop_gset1
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbsym r i 20 c
00D2 .dbsym r data 20 pV
00D2 .dbend
00D2 .dbfunc e Task2 _Task2 fV
00D2 ; i -> R20
00D2 ; data -> R22,R23
.even
00D2 _Task2::
00D2 0E940000 xcall push_gset2
00D6 B801 movw R22,R16
00D8 .dbline -1
00D8 .dbline 93
00D8 ; {
00D8 ; time[i*2+1]=time[i*2]>>4;
00D8 ; time[i*2]=time[i*2]&0x0F;
00D8 ; }
00D8 ; All_smg_display(time);
00D8 ; OSTimeDly (1);
00D8 ; }
00D8 ; }
00D8 ; void Task2(void *data)
00D8 ; {
00D8 .dbline 94
00D8 ; uchar i=0;
00D8 4427 clr R20
00DA .dbline 95
00DA ; data = data;
00DA .dbline 97
00DA ; //OSTimeDly(5);
00DA ; for (;;)
00DA L17:
00DA .dbline 98
00DA ; {
00DA .dbline 99
00DA ; if(i<8)
00DA 4830 cpi R20,8
00DC 48F4 brsh L21
00DE .dbline 100
00DE ; {
00DE .dbline 101
00DE ; All_led(0); //全部熄灭
00DE 0027 clr R16
00E0 0E940000 xcall _All_led
00E4 .dbline 102
00E4 ; One_led(i,1); //点亮指定的LED;
00E4 21E0 ldi R18,1
00E6 042F mov R16,R20
00E8 0E940000 xcall _One_led
00EC .dbline 103
00EC ; i=i+1;
00EC 4395 inc R20
00EE .dbline 104
00EE ; }
00EE 01C0 xjmp L22
00F0 L21:
00F0 .dbline 106
00F0 ; else
00F0 ; {
00F0 .dbline 107
00F0 ; i=0;
00F0 4427 clr R20
00F2 .dbline 108
00F2 ; }
00F2 L22:
00F2 .dbline 109
00F2 0FE0 ldi R16,15
00F4 10E0 ldi R17,0
00F6 0E940000 xcall _OSTimeDly
00FA .dbline 110
00FA .dbline 97
00FA .dbline 97
00FA EFCF xjmp L17
00FC X1:
00FC .dbline -2
00FC L16:
00FC 0E940000 xcall pop_gset2
0100 .dbline 0 ; func end
0100 0895 ret
0102 .dbsym r i 20 c
0102 .dbsym r data 22 pV
0102 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\21_uCOSII\taskexcu.c
0000 _Task2Stack::
0000 .blkb 100
0064 .dbsym e Task2Stack _Task2Stack A[100:100]c
0064 _Task1Stack::
0064 .blkb 100
00C8 .dbsym e Task1Stack _Task1Stack A[100:100]c
00C8 _state::
00C8 .blkb 1
00C9 .dbsym e state _state c
00C9 _s::
00C9 .blkb 1
00CA .dbsym e s _s c
00CA _m::
00CA .blkb 1
00CB .dbsym e m _m c
00CB _h::
00CB .blkb 1
00CC .dbsym e h _h c
00CC _time::
00CC .blkb 6
00D2 .dbsym e time _time A[6:6]c
.area func_lit
0000 6900 PL_Task2: .word `_Task2
0002 3300 PL_Task1: .word `_Task1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -