📄 test2.lis
字号:
.module test2.c
.area text(rom, con, rel)
.even
0000 _TC2_Init::
0000 ;
0000 ; #define Test1_GLOBALS
0000 ; #include "includes.h"
0000 ;
0000 ; //******************************************************************************
0000 ; // Constants
0000 ; #define TaskStartPrio 10 // Task-Prioritaeten
0000 ; //*****************************************************************************
0000 ; // Variablen
0000 ; INT8U display[5];
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 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <stdio.h>
0000 ;
0000 ;
0000 ; //*****************************************************************************
0000 ; // Prototypes
0000 ;
0000 ; //*****************************************************************************
0000 ; // TickISR
0000 ; //*****************************************************************************
0000 ; // Init Timer/Counter2 fuer Takterzeugung
0000 ; void TC2_Init (void){
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 ; TCCR2 = 0x00; // interner Takt, /1024
0006 2224 clr R2
0008 25BC out 0x25,R2
000A ; TCNT2 = 0; // Counter ruecksetzen, 2ms @ 8MHz
000A 24BC out 0x24,R2
000C ; TCCR2 = 0x04; // 64
000C 84E0 ldi R24,4
000E 85BD out 0x25,R24
0010 ; // OCR2 = 180; // OutputCompareRegister
0010 ; TIMSK |= BIT(TOIE2); // enable OVF-interrupt
0010 89B7 in R24,0x39
0012 8064 ori R24,64
0014 89BF out 0x39,R24
0016 ; //TIMSK |= OCIE2; // enable COMP-interrupt
0016 ;
0016 ; SEI(); // enable global interrupt
0016 7894 sei
0018 L2:
0018 .dbline 0 ; func end
0018 0895 ret
.area vector(rom, abs)
.org 16
0010 0C940000 jmp _OSTickISR
.area text(rom, con, rel)
.even
001A _main::
001A 2397 sbiw R28,3
001C ; }
001C ;
001C ; //*****************************************************************************
001C ; // Interrupt Timer/Counter0 Overflow
001C ; // OVF_Takt: 4MHz / 1024 / 39 = 10ms
001C ; #pragma interrupt_handler OSTickISR:5
001C ;
001C ; void Task1(void *pdata);
001C ; void Task2(void *pdata);
001C ;
001C ; //*****************************************************************************
001C ; // Start
001C ; void main(void){
001C ; OSInit(); // OS init
001C 0E940000 xcall _OSInit
0020 ; Uart_init();
0020 0E940000 xcall _Uart_init
0024 ; //Prints("ATmega8 uc/os-II Test!");
0024 ; //Putchar(0x0d);
0024 ; //Putchar(0x0a);
0024 ;
0024 ; OSTaskCreate(Task1, (void *)0, &Task1Stack[OS_TASK_DEF_STK_SIZE-1], 7);
0024 87E0 ldi R24,7
0026 8A83 std y+2,R24
0028 80E0 ldi R24,<_Task1Stack+99
002A 90E0 ldi R25,>_Task1Stack+99
002C 9983 std y+1,R25
002E 8883 std y+0,R24
0030 2227 clr R18
0032 3327 clr R19
0034 00E0 ldi R16,<PL_Task1
0036 10E0 ldi R17,>PL_Task1
0038 0E940000 xcall _OSTaskCreate
003C ;
003C ; OSTaskCreate(Task2, (void *)0, &Task2Stack[OS_TASK_DEF_STK_SIZE-1], 8);
003C 88E0 ldi R24,8
003E 8A83 std y+2,R24
0040 80E0 ldi R24,<_Task2Stack+99
0042 90E0 ldi R25,>_Task2Stack+99
0044 9983 std y+1,R25
0046 8883 std y+0,R24
0048 2227 clr R18
004A 3327 clr R19
004C 00E0 ldi R16,<PL_Task2
004E 10E0 ldi R17,>PL_Task2
0050 0E940000 xcall _OSTaskCreate
0054 ; // init und start tick
0054 ; TC2_Init(); // Timer/Counter#2 Overflow and Comp init
0054 D5DF xcall _TC2_Init
0056 ; OSStart(); // start multitasking
0056 0E940000 xcall _OSStart
005A L3:
005A 2396 adiw R28,3
005C .dbline 0 ; func end
005C 0895 ret
005E ; data -> R10,R11
.even
005E _Task1::
005E 0E940000 xcall push_gset3x
0062 5801 movw R10,R16
0064 ; }
0064 ;
0064 ; //*****************************************************************************
0064 ; void Task1(void *data){
0064 L7:
0064 ; for (;;){
0064 ; //Prints("ATmega16_UCOS_ii");
0064 ; Putchar(0x80);
0064 00E8 ldi R16,128
0066 0E940000 xcall _Putchar
006A ; OSTimeDly (100);
006A 04E6 ldi R16,100
006C 10E0 ldi R17,0
006E 0E940000 xcall _OSTimeDly
0072 ; }
0072 F8CF xjmp L7
0074 X0:
0074 L6:
0074 0E940000 xcall pop_gset3x
0078 .dbline 0 ; func end
0078 0895 ret
007A ; data -> R10,R11
.even
007A _Task2::
007A 0E940000 xcall push_gset3x
007E 5801 movw R10,R16
0080 ; }
0080 ; void Task2(void *data){
0080 ; data = data;
0080 ; OSTimeDly(5);
0080 05E0 ldi R16,5
0082 10E0 ldi R17,0
0084 0E940000 xcall _OSTimeDly
0088 L12:
0088 ; for (;;){
0088 ; //Prints("Test_OK!");
0088 ; Putchar(0x20);
0088 00E2 ldi R16,32
008A 0E940000 xcall _Putchar
008E ; OSTimeDly (500);
008E 04EF ldi R16,500
0090 11E0 ldi R17,1
0092 0E940000 xcall _OSTimeDly
0096 ; }
0096 F8CF xjmp L12
0098 X1:
0098 L11:
0098 0E940000 xcall pop_gset3x
009C .dbline 0 ; func end
009C 0895 ret
.area bss(ram, con, rel)
0000 _Task2Stack::
0000 .blkb 100
0064 _Task1Stack::
0064 .blkb 100
00C8 _state::
00C8 .blkb 1
00C9 _s::
00C9 .blkb 1
00CA _m::
00CA .blkb 1
00CB _h::
00CB .blkb 1
00CC _display::
00CC .blkb 5
.area func_lit
0000 3D00 PL_Task2: .word `_Task2
0002 2F00 PL_Task1: .word `_Task1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -