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

📄 test.lst

📁 移植的ucos
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR AT90S C-Compiler V1.41C/386                                            #
#                                                                            #
#       Compile time  =  05/Aug/2001  14:39:15                               #
#       Target option =  Max 64 KB data +   8 KB code (8515 4414...)         #
#       Memory model  =  small                                               #
#       Source file   =  test.c                                              #
#       List file     =  ..\lst\test.lst                                     #
#       Object file   =  ..\obj\test.r90                                     #
#       Command line  =  -C -r -ms -v1 -K -e -y -z9 -q -o ..\obj\test.r90    #
#                        -l ..\lst\test test.c                               #
#                                                                            #
#                           Copyright 1998 IAR Systems. All rights reserved. #
##############################################################################

   \                     	NAME	test(17)
   \                     	RSEG	CODE(0)
   \                     	RSEG	CCSTR(0)
   \                     	RSEG	ECSTR(0)
   \                     	RSEG	UDATA1(0)
   \                     	PUBLIC	AvrInit
   \                     	PUBLIC	DispStrSem
   \                     	EXTERN	OSCPUUsage
   \                     	EXTERN	OSCtxSwCtr
   \                     	EXTERN	OSInit
   \                     	EXTERN	OSSemCreate
   \                     	EXTERN	OSSemPend
   \                     	EXTERN	OSSemPost
   \                     	EXTERN	OSStart
   \                     	EXTERN	OSStatInit
   \                     	EXTERN	OSTaskCreate
   \                     	EXTERN	OSTaskCtr
   \                     	EXTERN	OSTimeDly
   \                     	EXTERN	OSTimeDlyHMSM
   \                     	EXTERN	OSVersion
   \                     	PUBLIC	PutChar
   \                     	PUBLIC	PutDec
   \                     	PUBLIC	PutString
   \                     	PUBLIC	RandomSem
   \                     	PUBLIC	RndNext
   \                     	PUBLIC	SPrintDec
   \                     	PUBLIC	Task
   \                     	PUBLIC	TaskData
   \                     	PUBLIC	TaskStart
   \                     	PUBLIC	TaskStartStk
   \                     	PUBLIC	TaskStk
   \                     	PUBLIC	UartTxBuf
   \                     	PUBLIC	UartTxCount
   \                     	PUBLIC	UartTxHandler
   \                     	PUBLIC	UartTxRdPtr
   \                     	PUBLIC	UartTxSem
   \                     	PUBLIC	UartTxWrPtr
   \                     	PUBLIC	VT102Attribute
   \                     	PUBLIC	VT102DispChar
   \                     	PUBLIC	VT102DispClrScr
   \                     	PUBLIC	VT102DispStr
   \                     	PUBLIC	main
   \                     	PUBLIC	random
   \                     	EXTERN	?UC_DIVMOD_L01
   \                     	EXTERN	?SS_DIVMOD_L02
   \                     	EXTERN	?US_DIVMOD_L02
   \                     	EXTERN	?L_MUL_L03
   \                     	EXTERN	?UL_DIVMOD_L03
   \                     	EXTERN	?PROLOGUE2_L09
   \                     	EXTERN	?PROLOGUE3_L09
   \                     	EXTERN	?PROLOGUE8_L09
   \                     	EXTERN	?EPILOGUE_B2_L09
   \                     	EXTERN	?EPILOGUE_B3_L09
   \                     	EXTERN	?EPILOGUE_B8_L09
   \                     	EXTERN	?CL1S_1_40_L08
   \                     	RSEG	CODE
   \                     main:
      1          /*
      2           *************************************************************************************************************
      3           *                                               uC/OS-II
      4           *                                         The Real-Time Kernel
      5           *
      6           *
      7           *                                            AVR Sample code
      8           * File     : TEST.C
      9           * By       : Ole Saether
     10           *
     11           * $Modtime: 19.07.01 22:24 $
     12           * $Revision: 3 $
     13           *
     14           * Description :
     15           *
     16           *         This file contains a simple example program showing how to use the AVR port of uC/OS-II. It is
     17           *         based on Example #1 from Jean Labrosse's book "MicroC/OS-II, The Real Time Kernel." The main
     18           *         difference is that this example does not display the time of day.
     19           *         You must have the AVR UART connected to a VT102 compatible terminal with color support to get the
     20           *         most out of this example.
     21           *
     22           *         The support routines at the end of this file are included only to make this example run; they
     23           *         should not be used in production code without careful testing.
     24           *
     25           *************************************************************************************************************
     26          */
     27          
     28          #include "includes.h"
     29          
     30          /*
     31          **************************************************************************************************************
     32          *                                               CONSTANTS
     33          **************************************************************************************************************
     34          */
     35          
     36          #define  TASK_STK_SIZE  OS_TASK_DEF_STK_SIZE            /* Size of each task's stacks (# of bytes)          */
     37          #define  N_TASKS        10                              /* Number of identical tasks                        */
     38          
     39          /*
     40          **************************************************************************************************************
     41          *                                               VARIABLES
     42          **************************************************************************************************************
     43          */
     44          
     45          OS_STK          TaskStk[N_TASKS][TASK_STK_SIZE];        /* Tasks stacks                                     */
     46          OS_STK          TaskStartStk[TASK_STK_SIZE];
     47          char            TaskData[N_TASKS];                      /* Parameters to pass to each task                  */
     48          OS_EVENT       *RandomSem;
     49          OS_EVENT       *DispStrSem;
     50          INT32U          RndNext;                                /* Used by random generator                         */
     51          INT8U           UartTxBuf[256];                         /* 256 bytes UART transmit buffer                   */
     52          volatile INT8U  UartTxRdPtr;                            /* UART transmit buffer read pointer                */
     53          INT8U           UartTxWrPtr;                            /* UART transmit buffer write pointer               */
     54          volatile INT8U  UartTxCount;                            /* Number of characters to send                     */
     55          OS_EVENT       *UartTxSem;
     56          
     57          /*
     58          **************************************************************************************************************
     59          *                                           FUNCTION PROTOTYPES
     60          **************************************************************************************************************
     61          */
     62          
     63          C_task Task(void *data);                                 /* Function prototypes of tasks                    */
     64          C_task TaskStart(void *data);                            /* Function prototypes of Startup task             */
     65          void   PutChar(char c);                                  /* Write a character to the AVR UART               */
     66          void   AvrInit(void);                                    /* Initialize AVR                                  */
     67          void   PutString(const char *s);                         /* Write a null-terminated string to the AVR UART  */
     68          void   SPrintDec(char *, INT32U, INT8U, char);           /* Output an INT16U to a string (right adjust)     */
     69          void   PutDec (INT8U x);                                 /* Display an INT8U without leading zeros          */
     70          void   VT102Attribute (INT8U fgcolor, INT8U bgcolor);    /* Set attributes on VT102 terminal                */
     71          void   VT102DispClrScr(void);                            /* Clear VT102 terminal                            */
     72          void   VT102DispChar(INT8U, INT8U, char, INT8U, INT8U);  /* Display a character on VT102 terminal           */
     73          void   VT102DispStr(INT8U, INT8U, char *, INT8U, INT8U); /* Display a string on VT102 terminal              */
     74          INT8U  random(INT8U n);                                  /* Simple random generator (found in K&R)          */
     75          
     76          /*
     77          **************************************************************************************************************
     78          *                                                MAIN
     79          **************************************************************************************************************
     80          */
     81          
     82          C_task main (void)
     83          {
     84              AvrInit();                                          /* Initialize the AVR UART and Timer                */
   \   00000000   D150                       RCALL   AvrInit
     85              OSInit();
   \   00000002   ....                       RCALL   OSInit
     86              RandomSem  = OSSemCreate(1);                        /* Random number semaphore                          */
   \   00000004   D021                       RCALL   ?0089
   \   00000006   9300....                   STS     LWRD(RandomSem),R16
   \   0000000A   9310....                   STS     LWRD((RandomSem+1)),R17
     87              DispStrSem = OSSemCreate(1);                        /* Display string semaphore                         */
   \   0000000E   D01C                       RCALL   ?0089
   \   00000010   9300....                   STS     LWRD(DispStrSem),R16
   \   00000014   9310....                   STS     LWRD((DispStrSem+1)),R17
     88              UartTxSem  = OSSemCreate(254);                      /* Initialize Uart transmit buffer semaphore to 2   */
   \   00000018   EF0E                       LDI     R16,LOW(254)
   \   0000001A   D017                       RCALL   ?0090
   \   0000001C   9300....                   STS     LWRD(UartTxSem),R16
   \   00000020   9310....                   STS     LWRD((UartTxSem+1)),R17
     89                                                                  /* bytes less than the buffer size                  */
     90              OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
   \   00000024   E000                       LDI     R16,LOW(0)
   \   00000026   930A                       ST      -Y,R16
   \   00000028   ....                       LDI     R16,LOW((TaskStartStk+511))
   \   0000002A   ....                       LDI     R17,((TaskStartStk+511) >> 8)
   \   0000002C   D01F                       RCALL   ?0097
   \   0000002E   ....                       LDI     R16,LOW(TaskStart/2)
   \   00000030   ....                       LDI     R17,(TaskStart/2 >> 8)
   \   00000032   ....                       RCALL   OSTaskCreate
     91              RndNext = 1;                                        /* set random generator seed to 1                   */
   \   00000034   E001                       LDI     R16,LOW(1)
   \   00000036   E010                       LDI     R17,LOW(0)
   \   00000038   E030                       LDI     R19,0
   \   0000003A   ....                       LDI     R30,LOW(RndNext)
   \   0000003C   ....                       LDI     R31,(RndNext >> 8)
   \   0000003E   8300                       STD     Z+0,R16
   \   00000040   8311                       STD     Z+1,R17
   \   00000042   8312                       STD     Z+2,R17
   \   00000044   8333                       STD     Z+3,R19
     92              OSStart();                                          /* Start multitasking                               */
   \   00000046   ....                       RJMP    OSStart
   \                     ?0089:
   \   00000048   E001                       LDI     R16,LOW(1)
   \                     ?0090:
   \   0000004A   E010                       LDI     R17,0
   \   0000004C   ....                       RJMP    OSSemCreate
   \                     ?0091:
   \   0000004E   D222                       RCALL   VT102DispStr
   \                     ?0092:
   \   00000050   E000                       LDI     R16,LOW(0)
   \   00000052   930A                       ST      -Y,R16
   \   00000054   E007                       LDI     R16,7
   \   00000056   930A                       ST      -Y,R16
   \   00000058   9508                       RET     
   \                     ?0093:
   \   0000005A   ....                       RCALL   ?PROLOGUE2_L09
   \   0000005C   9721                       SBIW    R28,LOW(1)
   \   0000005E   2F80                       MOV     R24,R16
   \   00000060   2F94                       MOV     R25,R20
   \   00000062   D005                       RCALL   ?0111
   \   00000064   D007                       RCALL   ?0112
   \   00000066   D00B                       RCALL   ?0113
   \   00000068   ....                       RJMP    OSSemPend
   \                     ?0098:
   \   0000006A   D001                       RCALL   ?0111
   \                     ?0097:

⌨️ 快捷键说明

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