📄 test1.s
字号:
.module test1.c
.area text(rom, con, rel)
.dbfile E:\study\ucos_ii\ucos2_iccavr\iccavr\ucos2_application\test1.c
.dbfunc e main _main fV
.even
_main::
sbiw R28,3
.dbline -1
.dbline 35
; /*
; ********************************************************************************
; * Portierung des RTOS "礐/OS-II" von Jean J. Labrosse auf den ATmega103
; *
; * Compiler: IIC von imagecraft
; * File: Test1.c (Testapplikation)
; * By: Joerg Meyer
; * Revision: 0
; *
; *
; *
; ********************************************************************************
; */
; #define Test1_GLOBALS
; #include "includes.h"
;
;
; //******************************************************************************
; // Constants
; #define TaskStartPrio 10 // Task-Prioritaeten
;
;
; //*****************************************************************************
; // Variablen
; OS_STK Task1Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
; OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE];
;
; //*****************************************************************************
; // Prototypes
; void Task1(void *pdata);
; void uart0_init(void);
; void Task3(void *data);
; //*****************************************************************************
; // Start
; void main(void){
.dbline 36
; OSInit(); // OS init
xcall _OSInit
.dbline 38
;
; OSTaskCreate(Task1,
ldi R24,10
std y+2,R24
ldi R24,<_Task1Stack+127
ldi R25,>_Task1Stack+127
std y+1,R25
std y+0,R24
ldi R18,97
ldi R19,0
ldi R16,<PL_Task1
ldi R17,>PL_Task1
xcall _OSTaskCreate
.dbline 43
; (void *)(int)'a',
; &Task1Stack[OS_TASK_DEF_STK_SIZE-1],
; TaskStartPrio);
;
; OSTaskCreate(Task3,
ldi R24,11
std y+2,R24
ldi R24,<_Task2Stack+127
ldi R25,>_Task2Stack+127
std y+1,R25
std y+0,R24
ldi R18,98
ldi R19,0
ldi R16,<PL_Task3
ldi R17,>PL_Task3
xcall _OSTaskCreate
.dbline 48
; (void *)(int)'b',
; &Task2Stack[OS_TASK_DEF_STK_SIZE-1],
; TaskStartPrio+1);
; // init und start tick
; uart0_init();
xcall _uart0_init
.dbline 49
; TC2_Init();
xcall _TC2_Init
.dbline 50
; DDRG |= 0x18; PORTG &=~(1<<PG3); PORTG &=~(1<<PG4);
lds R24,100
ori R24,24
sts 100,R24
.dbline 50
lds R24,101
andi R24,247
sts 101,R24
.dbline 50
lds R24,101
andi R24,239
sts 101,R24
.dbline 51
; OSStart(); // start multitasking
xcall _OSStart
.dbline -2
L3:
adiw R28,3
.dbline 0 ; func end
ret
.dbend
.dbfunc e Task1 _Task1 fV
; data -> R20,R21
.even
_Task1::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 56
;
; }
;
; //*****************************************************************************
; void Task1(void *data){
.dbline 62
; // char c = (int)data;
;
;
; // Timer/Counter#2 Overflow and Comp init
;
; for (;;){
.dbline 62
L11:
.dbline 64
L12:
.dbline 64
sbis 0xb,5
rjmp L11
.dbline 65
ldi R24,97
out 0xc,R24
.dbline 68
ldi R16,5
ldi R17,0
xcall _OSTimeDly
.dbline 70
.dbline 62
.dbline 62
xjmp L12
X0:
.dbline -2
L6:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 pV
.dbend
.dbfunc e Task3 _Task3 fV
; data -> R20,R21
.even
_Task3::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 72
; // putchar(c);
; while(!(UCSR0A&0x20));
; UDR0 = 'a';
; // PORTA = ~PORTA;
; // DDRA = 0xff;
; OSTimeDly (5);
;
; }
; }
; void Task3(void *data){
.dbline 74
; // char c = (int)data;
; for (;;){
.dbline 74
L19:
.dbline 76
L20:
.dbline 76
sbis 0xb,5
rjmp L19
.dbline 77
ldi R24,98
out 0xc,R24
.dbline 80
ldi R16,5
ldi R17,0
xcall _OSTimeDly
.dbline 82
.dbline 74
.dbline 74
xjmp L20
X1:
.dbline -2
L14:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 pV
.dbend
.area bss(ram, con, rel)
.dbfile E:\study\ucos_ii\ucos2_iccavr\iccavr\ucos2_application\test1.c
_Task2Stack::
.blkb 128
.dbsym e Task2Stack _Task2Stack A[128:128]c
_Task1Stack::
.blkb 128
.dbsym e Task1Stack _Task1Stack A[128:128]c
.area func_lit
PL_Task3: .word `_Task3
PL_Task1: .word `_Task1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -