📄 app.lis
字号:
003A ; *********************************************************************************************************
003A ; */
003A ; void OSTickISR_Init (void)
003A ; {
003A ; CLI();
003A ; TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */); //disable TC2 interrupts
003A ; TCCR2 = 0x00; // interner Takt, /1024
003A ; TCNT2 = 0; // Counter ruecksetzen, 20ms @ 8MHz
003A ; TCCR2 = 0x07; // 1024
003A ; TIMSK |= BIT(TOIE2);
003A ; }
003A ; /*
003A ; *********************************************************************************************************
003A ; * SETUP THE I/Os
003A ; *********************************************************************************************************
003A ; */
003A ; void main (void)
003A ; {
003A ; OSTickISR_Init(); /* Initialize the ticker */
003A ; OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
003A ; RandomSem = OSSemCreate(1);
003A ; OSTaskCreate(TaskStart, (void *)0, (OS_STK *)&TaskStartStk[OS_TASK_STK_SIZE - 1], 0);
003A ; OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
003A ; }
003A ; static void TaskStart(void *pdata)
003A .dbline 90
003A ; {
003A ; #if OS_CRITICAL_METHOD == 3
003A 4427 clr R20
003C 09C0 xjmp L19
003E L16:
003E .dbline 91
003E ; OS_CPU_SR cpu_sr;
003E .dbline 92
003E ; #endif
003E AF98 cbi 0x15,7
0040 .dbline 93
0040 ; SEI();
0040 07FF sbrs R16,7
0042 02C0 rjmp L20
0044 .dbline 94
0044 ; pdata = pdata;
0044 AE9A sbi 0x15,6
0046 01C0 xjmp L21
0048 L20:
0048 .dbline 96
0048 ; OS_ENTER_CRITICAL();
0048 ; Lcd_Init();
0048 AE98 cbi 0x15,6
004A L21:
004A .dbline 97
004A 000F lsl R16
004C .dbline 98
004C AF9A sbi 0x15,7
004E .dbline 99
004E L17:
004E .dbline 90
004E 4395 inc R20
0050 L19:
0050 .dbline 90
0050 4830 cpi R20,8
0052 A8F3 brlo L16
0054 .dbline -2
0054 L15:
0054 0E940000 xcall pop_gset1
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r i 20 c
005A .dbsym r data 16 c
005A .dbend
005A .dbfunc e Wr_Com _Wr_Com fV
005A ; data -> R20
.even
005A _Wr_Com::
005A 0E940000 xcall push_gset1
005E 402F mov R20,R16
0060 .dbline -1
0060 .dbline 108
0060 ; TaskStartDispInit();
0060 ; OS_EXIT_CRITICAL();
0060 ; OSStatInit();
0060 ; OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&Task1Stk[OS_TASK_STK_SIZE - 1], 1);
0060 ; OSTaskCreate(AppTask2, (void *)0, (OS_STK *)&Task2Stk[OS_TASK_STK_SIZE - 1], 2);
0060 ; OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&Task3Stk[OS_TASK_STK_SIZE - 1], 3);
0060 ; while(1)
0060 ; {
0060 ; TaskStartDisp();
0060 ; OSCtxSwCtr = 0;
0060 ; OSTimeDly(50);
0060 ; }
0060 .dbline 109
0060 ; }
0060 969A sbi 0x12,6
0062 .dbline 110
0062 ; static void TaskStartDispInit(void)
0062 08EF ldi R16,248
0064 E8DF xcall _SendData
0066 .dbline 111
0066 ; {
0066 042F mov R16,R20
0068 007F andi R16,240
006A E5DF xcall _SendData
006C .dbline 112
006C ; INT8U *line;
006C 042F mov R16,R20
006E 0F70 andi R16,#0x0F
0070 0295 swap R16
0072 E1DF xcall _SendData
0074 .dbline 113
0074 ; line = "uCOSii EXEMPLE";
0074 9698 cbi 0x12,6
0076 .dbline -2
0076 L22:
0076 0E940000 xcall pop_gset1
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r data 20 c
007C .dbend
007C .dbfunc e Wr_Date _Wr_Date fV
007C ; data -> R20
.even
007C _Wr_Date::
007C 0E940000 xcall push_gset1
0080 402F mov R20,R16
0082 .dbline -1
0082 .dbline 122
0082 ; LCD_write_string(0,0,line);
0082 ; line = "switch/s:";
0082 ; LCD_write_string(0,3,line);
0082 ; line = "CPU Usage";
0082 ; LCD_write_string(0,2,line);
0082 ; }
0082 ; static void TaskStartDisp(void)
0082 ; {
0082 ; INT8U i;
0082 .dbline 123
0082 ; INT8U a=OSCPUUsage;
0082 969A sbi 0x12,6
0084 .dbline 124
0084 ; temp[4]=0;
0084 0AEF ldi R16,250
0086 D7DF xcall _SendData
0088 .dbline 125
0088 ; temp[3]=0x25;
0088 042F mov R16,R20
008A 007F andi R16,240
008C D4DF xcall _SendData
008E .dbline 126
008E ; for(i=3;i>0;--i)
008E 042F mov R16,R20
0090 0F70 andi R16,#0x0F
0092 0295 swap R16
0094 D0DF xcall _SendData
0096 .dbline 127
0096 ; {
0096 9698 cbi 0x12,6
0098 .dbline -2
0098 L23:
0098 0E940000 xcall pop_gset1
009C .dbline 0 ; func end
009C 0895 ret
009E .dbsym r data 20 c
009E .dbend
009E .dbfunc e Clear_All _Clear_All fV
.even
009E _Clear_All::
009E .dbline -1
009E .dbline 136
009E ; if(a>0)
009E ; {
009E ; temp[i-1]=a%10+0x30;
009E ; a/=10;
009E ; }
009E ; else temp[i-1]=0x20;
009E ; }
009E ; LCD_write_string(5,2,temp);
009E ; a=OSCtxSwCtr;
009E .dbline 137
009E ; for(i=4;i>0;--i)
009E 01E0 ldi R16,1
00A0 DCDF xcall _Wr_Com
00A2 .dbline 138
00A2 ; {
00A2 08E2 ldi R16,40
00A4 10E0 ldi R17,0
00A6 B8DF xcall _delay_nms
00A8 .dbline -2
00A8 L24:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbend
00AA .dbfunc e Lcd_Init _Lcd_Init fV
.even
00AA _Lcd_Init::
00AA .dbline -1
00AA .dbline 147
00AA ; if(a>0)
00AA ; {
00AA ; temp[i-1]=a%10+0x30;
00AA ; a/=10;
00AA ; }
00AA ; else temp[i-1]=0x20;
00AA ; }
00AA ; LCD_write_string(5,3,temp);
00AA ; }
00AA .dbline 148
00AA ;
00AA 80EC ldi R24,192
00AC 84BB out 0x14,R24
00AE .dbline 149
00AE ;
00AE 80E4 ldi R24,64
00B0 81BB out 0x11,R24
00B2 .dbline 150
00B2 ; static void AppTask1(void *p_arg)
00B2 00E3 ldi R16,48
00B4 D2DF xcall _Wr_Com
00B6 .dbline 151
00B6 ; {
00B6 00E5 ldi R16,80
00B8 A3DF xcall _delay
00BA .dbline 152
00BA ; INT8U err;
00BA 0CE0 ldi R16,12
00BC CEDF xcall _Wr_Com
00BE .dbline 153
00BE ; p_arg = p_arg;
00BE 00E5 ldi R16,80
00C0 9FDF xcall _delay
00C2 .dbline 154
00C2 ; while (TRUE) {
00C2 01E0 ldi R16,1
00C4 CADF xcall _Wr_Com
00C6 .dbline 155
00C6 ; OSSemPend(RandomSem,0,&err);
00C6 08E2 ldi R16,40
00C8 10E0 ldi R17,0
00CA A6DF xcall _delay_nms
00CC .dbline 156
00CC ; PORTB^=0x01;
00CC 00E6 ldi R16,96
00CE C5DF xcall _Wr_Com
00D0 .dbline 157
00D0 ; OSSemPost(RandomSem);
00D0 00E5 ldi R16,80
00D2 96DF xcall _delay
00D4 .dbline -2
00D4 L25:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
00D6 .dbfunc e LCD_set_xy _LCD_set_xy fV
00D6 ; address -> R20
00D6 ; y -> R20
00D6 ; x -> R22
.even
00D6 _LCD_set_xy::
00D6 0E940000 xcall push_gset2
00DA 422F mov R20,R18
00DC 602F mov R22,R16
00DE .dbline -1
00DE .dbline 166
00DE ; OSTimeDly(1);
00DE ; }
00DE ; }
00DE ; static void AppTask2(void *p_arg)
00DE ; {
00DE ; INT8U err;
00DE ; p_arg = p_arg;
00DE ; while (TRUE) {
00DE ; OSSemPend(RandomSem,0,&err);
00DE .dbline 168
00DE ; PORTB^=0x02;
00DE ; OSSemPost(RandomSem);
00DE 5527 clr R21
00E0 4030 cpi R20,0
00E2 4507 cpc R20,R21
00E4 69F0 breq L30
00E6 X0:
00E6 4130 cpi R20,1
00E8 E0E0 ldi R30,0
00EA 5E07 cpc R21,R30
00EC 61F0 breq L31
00EE 4230 cpi R20,2
00F0 E0E0 ldi R30,0
00F2 5E07 cpc R21,R30
00F4 59F0 breq L32
00F6 4330 cpi R20,3
00F8 E0E0 ldi R30,0
00FA 5E07 cpc R21,R30
00FC 51F0 breq L33
00FE 0CC0 xjmp L27
0100 X1:
0100 .dbline 169
0100 ; OSTimeDly(4);
0100 L30:
0100 .dbline 171
0100 ; }
0100 ; }
0100 462F mov R20,R22
0102 4058 subi R20,128 ; addi 128
0104 .dbline 172
0104 ; static void AppTask3(void *data)
0104 0BC0 xjmp L28
0106 L31:
0106 .dbline 174
0106 ; {
0106 ; #if OS_CRITICAL_METHOD == 3
0106 462F mov R20,R22
0108 4057 subi R20,112 ; addi 144
010A .dbline 175
010A ; OS_CPU_SR cpu_sr;
010A 08C0 xjmp L28
010C L32:
010C .dbline 177
010C ; #endif
010C ; INT8U *line="Task_Three";
010C 462F mov R20,R22
010E 4857 subi R20,120 ; addi 136
0110 .dbline 178
0110 ; data = data;
0110 05C0 xjmp L28
0112 L33:
0112 .dbline 180
0112 ; LCD_write_string(0,1,line);
0112 ; for(;;)
0112 462F mov R20,R22
0114 4856 subi R20,104 ; addi 152
0116 .dbline 181
0116 ; {
0116 02C0 xjmp L28
0118 L27:
0118 .dbline 182
0118 ; line="\\";
0118 462F mov R20,R22
011A 4058 subi R20,128 ; addi 128
011C .dbline 183
011C ; OS_ENTER_CRITICAL();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -