?? test1.s
字號:
.module test1.c
.area vector(rom, abs)
.org 14
rjmp _OSTickISR
.area text(rom, con, rel)
.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\ucos-ii-source\test1.c
.dbfunc e main _main fV
.even
_main::
sbiw R28,3
.dbline -1
.dbline 24
; /*
; */
; #define Test1_GLOBALS
; #include "includes.h"
;
; //******************************************************************************
; // Variablen
; OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
; OS_STK Task3Stack[OS_TASK_DEF_STK_SIZE];
;
; //*****************************************************************************
; // Prototypes
; void Task2(void *pdata);
; void Task3(void *pdata);
; //*****************************************************************************
;
; //*****************************************************************************
; // Interrupt Timer/Counter0 Overflow
; // OVF_Takt: 4MHz / 1024 / 39 = 10ms
; #pragma interrupt_handler OSTickISR:8
; //#pragma interrupt_handler test_OSTickISR0:8
;
; void main()
; {
.dbline 25
; CLI();//close interrupt
cli
.dbline 26
; ProgramRest(FLASH_WHEN_RESET);
ldi R16,3
ldi R17,0
rcall _ProgramRest
.dbline 27
; OSInit(); // OS init
rcall _OSInit
.dbline 29
; //check OSTCBFreeList;
; if(OSRunning || (0==OSTCBFreeList))//stack destroyed
lds R2,_OSRunning
tst R2
brne L6
lds R2,_OSTCBFreeList
lds R3,_OSTCBFreeList+1
tst R2
brne L4
tst R3
brne L4
X0:
L6:
.dbline 30
; goto OSTASKCREATE_ERROR;
rjmp L7
L4:
.dbline 32
;
; if(OS_NO_ERR!=OSTaskCreate(Task2,
ldi R24,2
std y+2,R24
ldi R24,<_Task2Stack+111
ldi R25,>_Task2Stack+111
std y+0,R24
std y+1,R25
ldi R18,50
ldi R19,0
ldi R16,<PL_Task2
ldi R17,>PL_Task2
rcall _OSTaskCreate
tst R16
breq L8
.dbline 36
; (void *)(int)'2',
; &Task2Stack[OS_TASK_DEF_STK_SIZE-1],
; TaskStartPrio))
; goto OSTASKCREATE_ERROR;
rjmp L7
L8:
.dbline 38
;
; if(OSRunning || (0==OSTCBFreeList))//stack destroyed
lds R2,_OSRunning
tst R2
brne L13
lds R2,_OSTCBFreeList
lds R3,_OSTCBFreeList+1
tst R2
brne L11
tst R3
brne L11
X1:
L13:
.dbline 39
; goto OSTASKCREATE_ERROR;
rjmp L7
L11:
.dbline 41
;
; if(OS_NO_ERR!=OSTaskCreate(Task3,
ldi R24,3
std y+2,R24
ldi R24,<_Task3Stack+111
ldi R25,>_Task3Stack+111
std y+0,R24
std y+1,R25
ldi R18,51
ldi R19,0
ldi R16,<PL_Task3
ldi R17,>PL_Task3
rcall _OSTaskCreate
tst R16
breq L14
.dbline 45
; (void *)(int)'3',
; &Task3Stack[OS_TASK_DEF_STK_SIZE-1],
; TaskStartPrio+1))
; goto OSTASKCREATE_ERROR;
rjmp L7
L14:
.dbline 47
;
; TC2_Init();
rcall _TC2_Init
.dbline 49
;
; SEI();
sei
.dbline 52
; //check OSTCBCur
; //if(0==OSTCBCur)goto OSTASKCREATE_ERROR;
; OSStart(); // start multitasking
rcall _OSStart
L7:
.dbline 56
; //error
; OSTASKCREATE_ERROR:
; //dead loop
; ProgramError();
rcall _ProgramError
.dbline -2
.dbline 57
; }
L3:
adiw R28,3
.dbline 0 ; func end
ret
.dbend
.dbfunc e Task2 _Task2 fV
; data -> R20,R21
.even
_Task2::
rcall push_gset1
mov R20,R16
mov R21,R17
.dbline -1
.dbline 60
;
; //*****************************************************************************
; void Task2(void *data){
.dbline 61
; Task2_porta(data);
mov R16,R20
mov R17,R21
rcall _Task2_porta
.dbline -2
.dbline 62
; }
L17:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 pV
.dbend
.dbfunc e Task2_porta _Task2_porta fV
; j -> R20
; i -> R22
; data -> R10,R11
.even
_Task2_porta::
rcall push_gset3
mov R10,R16
mov R11,R17
.dbline -1
.dbline 63
; void Task2_porta(void *data){
.dbline 64
; INT8U i,j=0;
clr R20
.dbline 65
; DDRA=0xff;
ldi R24,255
out 0x1a,R24
rjmp L20
L19:
.dbline 67
.dbline 68
inc R22
.dbline 69
out 0x1b,R22
.dbline 70
ldi R16,10
ldi R17,0
rcall _OSTimeDly
.dbline 71
L20:
.dbline 66
rjmp L19
X2:
.dbline -2
.dbline 72
; while(1)
; {
; i++;
; PORTA=i;
; OSTimeDly(10);
; }
; }
L18:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 c
.dbsym r data 10 pV
.dbend
.dbfunc e Task3 _Task3 fV
; i -> R20
; j -> R22
; k -> R10
; data -> R20,R21
.even
_Task3::
rcall push_gset3
mov R20,R16
mov R21,R17
.dbline -1
.dbline 74
;
; void Task3(void *data){
rjmp L24
L23:
.dbline 77
; unsigned char i,j,k;
; while(1)
; {
.dbline 78
; DDRC=0xff;
ldi R24,255
out 0x14,R24
.dbline 79
; SEI();
sei
.dbline 80
; for(i=0;i<8;i++)
clr R20
rjmp L29
L26:
.dbline 81
; {
.dbline 82
; j=1;
ldi R22,1
.dbline 83
; for(k=0;k<=i;k++)
clr R10
rjmp L33
L30:
.dbline 84
lsl R22
L31:
.dbline 83
inc R10
L33:
.dbline 83
cp R20,R10
brsh L30
.dbline 85
com R22
.dbline 86
out 0x15,R22
.dbline 87
ldi R16,10
ldi R17,0
rcall _OSTimeDly
.dbline 88
L27:
.dbline 80
inc R20
L29:
.dbline 80
cpi R20,8
brlo L26
.dbline 89
L24:
.dbline 76
rjmp L23
X3:
.dbline -2
.dbline 90
; j*=2;
; asm("com %j");
; PORTC=j;
; OSTimeDly(10);
; }
; }
; }
L22:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 22 c
.dbsym r k 10 c
.dbsym r data 20 pV
.dbend
.area bss(ram, con, rel)
.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\ucos-ii-source\test1.c
_Task3Stack::
.blkb 112
.dbsym e Task3Stack _Task3Stack A[112:112]c
_Task2Stack::
.blkb 112
.dbsym e Task2Stack _Task2Stack A[112:112]c
.area func_lit
PL_Task3: .word `_Task3
PL_Task2: .word `_Task2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -