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

📄 test.lst

📁 ATMEL ucos transplant of AVR
💻 LST
📖 第 1 页 / 共 5 页
字号:
    147          **************************************************************************************************************
    148          *                                                  TASKS
    149          **************************************************************************************************************
    150          */
    151          void Task (void *data)
    152          {
   \   000001C0   ........                   CALL    ?PROLOGUE4_L09
   \   000001C4   9721                       SBIW    R28,LOW(1)
   \   000001C6   2FA0                       MOV     R26,R16
   \   000001C8   2FB1                       MOV     R27,R17
   \                     ?0033:
    153              INT8U x;
    154              INT8U y;
    155              INT8U err;
    156          
    157              for (;;) {
    158                  OSSemPend(RandomSem, 0, &err);                  /* Acquire semaphore to perform random numbers      */
   \   000001CA   DF5B                       RCALL   ?0072
   \   000001CC   9100....                   LDS     R16,LWRD(RandomSem)
   \   000001D0   9110....                   LDS     R17,LWRD((RandomSem+1))
   \   000001D4   ........                   CALL    OSSemPend
    159                  x = random(80);                                 /* Find X position where task number will appear    */
   \   000001D8   E500                       LDI     R16,80
   \   000001DA   D0F1                       RCALL   random
   \   000001DC   2F90                       MOV     R25,R16
    160                  y = random(16);                                 /* Find Y position where task number will appear    */
   \   000001DE   E100                       LDI     R16,16
   \   000001E0   D0EE                       RCALL   random
   \   000001E2   2F80                       MOV     R24,R16
    161                  OSSemPost(RandomSem);                           /* Release semaphore                                */
   \   000001E4   9100....                   LDS     R16,LWRD(RandomSem)
   \   000001E8   9110....                   LDS     R17,LWRD((RandomSem+1))
   \   000001EC   ........                   CALL    OSSemPost
    162                                                                  /* Display the task number on the screen            */
    163                  VT102DispChar(x + 1, y + 5, *(char *)data, COLOR_WHITE, COLOR_BLACK);
   \   000001F0   DF37                       RCALL   ?0064
   \   000001F2   2FEA                       MOV     R30,R26
   \   000001F4   2FFB                       MOV     R31,R27
   \   000001F6   8100                       LD      R16,Z
   \   000001F8   930A                       ST      -Y,R16
   \   000001FA   5F8B                       SUBI    R24,LOW(251)
   \   000001FC   2F48                       MOV     R20,R24
   \   000001FE   9593                       INC     R25
   \   00000200   2F09                       MOV     R16,R25
   \   00000202   D14F                       RCALL   VT102DispChar
    164                  OSTimeDly(10);                                  /* Delay 10 clock ticks                             */
   \   00000204   E00A                       LDI     R16,LOW(10)
   \   00000206   E010                       LDI     R17,0
   \   00000208   ........                   CALL    OSTimeDly
    165              }
    166          }
   \   0000020C   CFDE                       RJMP    ?0033
   \                     ;	data            	R26-R27
   \                     ;	y               	R24
   \                     ;	x               	R25
   \                     UART_TX_interrupt:
    167          
    168          /*
    169          **************************************************************************************************************
    170          *                                                  SUPPORT ROUTINES
    171          **************************************************************************************************************
    172          */
    173          
    174          interrupt [UART_TX_vect] void UART_TX_interrupt (void)
    175          {
   \   0000020E   920A                       ST      -Y,R0
   \   00000210   921A                       ST      -Y,R1
   \   00000212   922A                       ST      -Y,R2
   \   00000214   923A                       ST      -Y,R3
   \   00000216   930A                       ST      -Y,R16
   \   00000218   931A                       ST      -Y,R17
   \   0000021A   932A                       ST      -Y,R18
   \   0000021C   933A                       ST      -Y,R19
   \   0000021E   934A                       ST      -Y,R20
   \   00000220   935A                       ST      -Y,R21
   \   00000222   936A                       ST      -Y,R22
   \   00000224   937A                       ST      -Y,R23
   \   00000226   93EA                       ST      -Y,R30
   \   00000228   93FA                       ST      -Y,R31
   \   0000022A   B60F                       IN      R0,LOW(63)
   \   0000022C   920A                       ST      -Y,R0
   \   0000022E   B60B                       IN      R0,LOW(59)
   \   00000230   920A                       ST      -Y,R0
    176              UartTxCount--;                                      /* Decrement number of characters left to send      */
   \   00000232   9100....                   LDS     R16,LWRD(UartTxCount)
   \   00000236   950A                       DEC     R16
   \   00000238   9300....                   STS     LWRD(UartTxCount),R16
    177              if (UartTxCount) {
   \   0000023C   F099                       BREQ    ?0035
    178                  UDR = UartTxBuf[UartTxRdPtr];                   /* Place next character into UART transmit register */
   \   0000023E   91E0....                   LDS     R30,LWRD(UartTxRdPtr)
   \   00000242   E0F0                       LDI     R31,LOW(0)
   \   00000244   ....                       SUBI    R30,LOW(-(UartTxBuf))
   \   00000246   ....                       SBCI    R31,HIGH(-(UartTxBuf))
   \   00000248   8100                       LD      R16,Z
   \   0000024A   B90C                       OUT     LOW(12),R16
    179                  UartTxRdPtr++;                                  /* Advance to next character                        */
   \   0000024C   9100....                   LDS     R16,LWRD(UartTxRdPtr)
   \   00000250   9503                       INC     R16
   \   00000252   9300....                   STS     LWRD(UartTxRdPtr),R16
    180                  OSSemPost(UartTxSem);                           /* Signal that we have room for one more character  */
   \   00000256   9100....                   LDS     R16,LWRD(UartTxSem)
   \   0000025A   9110....                   LDS     R17,LWRD((UartTxSem+1))
   \   0000025E   ........                   CALL    OSSemPost
    181              } else {
   \   00000262   C001                       RJMP    ?0036
   \                     ?0035:
    182                  UCR &= ~0x40;                                   /* Disable UART transmit complete interrupt         */
   \   00000264   9856                       CBI     LOW(10),LOW(6)
   \                     ?0036:
    183              }
    184          }
   \   00000266   9009                       LD      R0,Y+
   \   00000268   BE0B                       OUT     LOW(59),R0
   \   0000026A   9009                       LD      R0,Y+
   \   0000026C   BE0F                       OUT     LOW(63),R0
   \   0000026E   91F9                       LD      R31,Y+
   \   00000270   91E9                       LD      R30,Y+
   \   00000272   9179                       LD      R23,Y+
   \   00000274   9169                       LD      R22,Y+
   \   00000276   9159                       LD      R21,Y+
   \   00000278   9149                       LD      R20,Y+
   \   0000027A   9139                       LD      R19,Y+
   \   0000027C   9129                       LD      R18,Y+
   \   0000027E   9119                       LD      R17,Y+
   \   00000280   9109                       LD      R16,Y+
   \   00000282   9039                       LD      R3,Y+
   \   00000284   9029                       LD      R2,Y+
   \   00000286   9019                       LD      R1,Y+
   \   00000288   9009                       LD      R0,Y+
   \   0000028A   9518                       RETI    
   \                     AvrInit:
    185          
    186          void AvrInit (void)
    187          {
    188              TCCR0       = 0x07;                                 /* Set TIMER0 prescaler to CLK/1024                 */
   \   0000028C   E007                       LDI     R16,7
   \   0000028E   BF03                       OUT     LOW(51),R16
    189              TIMSK       = 0x01;                                 /* Enable TIMER0 overflow interrupt                 */
   \   00000290   E001                       LDI     R16,1
   \   00000292   BF07                       OUT     LOW(55),R16
    190              UBRR        = 12;                                   /* 19200 BAUD at 4.0MHz                             */
   \   00000294   E00C                       LDI     R16,12
   \   00000296   B909                       OUT     LOW(9),R16
    191              MCUCR      |= 0x80;                                 /* Enable external RAM                              */
   \   00000298   B705                       IN      R16,LOW(53)
   \   0000029A   6800                       ORI     R16,LOW(128)
   \   0000029C   BF05                       OUT     LOW(53),R16
    192              UCR         = 0x08;                                 /* Enable UART transmitter                          */
   \   0000029E   E008                       LDI     R16,8
   \   000002A0   B90A                       OUT     LOW(10),R16
    193              USR        |= 0x40;                                 /* Clear UART transmit complete bit (TXC)           */
   \   000002A2   9A5E                       SBI     LOW(11),LOW(6)
    194              UartTxCount = 0;                                    /* Clear number of characters to send               */
   \   000002A4   E000                       LDI     R16,LOW(0)
   \   000002A6   9300....                   STS     LWRD(UartTxCount),R16
    195              UartTxRdPtr = 0;                                    /* Initialize transmit buffer read pointer          */
   \   000002AA   9300....                   STS     LWRD(UartTxRdPtr),R16
    196              UartTxWrPtr = 0;                                    /* Initialize transmit buffer write pointer         */
   \   000002AE   9300....                   STS     LWRD(UartTxWrPtr),R16
    197          }
   \   000002B2   9508                       RET     
   \                     PutChar:
    198          
    199          
    200          void PutChar (char c)
    201          {
   \   000002B4   938A                       ST      -Y,R24
   \   000002B6   9721                       SBIW    R28,LOW(1)
   \   000002B8   2F80                       MOV     R24,R16
    202              INT8U err;
    203          
    204              if (UartTxCount) {
   \   000002BA   9100....                   LDS     R16,LWRD(UartTxCount)
   \   000002BE   2300                       TST     R16
   \   000002C0   F039                       BREQ    ?0038
    205                  OSSemPend(UartTxSem, 0, &err);                  /* Wait for space in transmit buffer                */
   \   000002C2   DEDF                       RCALL   ?0072
   \   000002C4   9100....                   LDS     R16,LWRD(UartTxSem)
   \   000002C8   9110....                   LDS     R17,LWRD((UartTxSem+1))
   \   000002CC   ........                   CALL    OSSemPend
   \                     ?0038:
    206              }
    207              OS_ENTER_CRITICAL();
   \   000002D0   930A                       DW      LWRD(37642)
   \   000002D2   B70F                       DW      LWRD(46863)
   \   000002D4   94F8                       CLI     
   \   000002D6   930F                       DW      LWRD(37647)
   \   000002D8   9109                       DW      LWRD(37129)
    208              if (UartTxCount) {
   \   000002DA   9100....                   LDS     R16,LWRD(UartTxCount)
   \   000002DE   2300                       TST     R16
   \   000002E0   F089                       BREQ    ?0040
    209                  UartTxBuf[UartTxWrPtr] = c;                     /* Put character to send in transmit buffer         */
   \   000002E2   91E0....                   LDS     R30,LWRD(UartTxWrPtr)
   \   000002E6   E0F0                       LDI     R31,LOW(0)
   \   000002E8   ....                       SUBI    R30,LOW(-(UartTxBuf))
   \   000002EA   ....                       SBCI    R31,HIGH(-(UartTxBuf))
   \   000002EC   8380                       ST      Z,R24
    210                  UartTxWrPtr++;                                  /* Prepare for next character                       */
   \   000002EE   9100....                   LDS     R16,LWRD(UartTxWrPtr)
   \   000002F2   9503                       INC     R16
   \   000002F4   9300....                   STS     LWRD(UartTxWrPtr),R16
    211                  UartTxCount++;                                  /* Increment number of characters to send           */
   \   000002F8   9100....                   LDS     R16,LWRD(UartTxCount)
   \   000002FC   9503                       INC     R16
   \   000002FE   9300....                   STS     LWRD(UartTxCount),R16
    212              } else {
   \   00000302   C005                       RJMP    ?0041
   \                     ?0040:
    213                  UDR         = c;                                /* Write first char directly to the UART            */
   \   00000304   B98C                       OUT     LOW(12),R24
    214                  UartTxCount = 1;
   \   00000306   E001                       LDI     R16,1
   \   00000308   9300....                   STS     LWRD(UartTxCount),R16
    215                  UCR        |= 0x40;                             /* Enable UART transmit complete interrupt          */
   \   0000030C   9A56                       SBI     LOW(10),LOW(6)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -