⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.lis

📁 uCOS-II工程文件,使用ICC编译。
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -