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

📄 serial.lst

📁 1. UC/OS 8051中完全应用。 2. 显示各个任务的执行时间, 执行时间占总时间百分比, tick计数器 3.任务中信号量,消息以及消息队列的使用。 我自己仔细测试过了
💻 LST
📖 第 1 页 / 共 5 页
字号:
  26      =2  extern char strcmp (char *s1, char *s2);
  27      =2  extern char strncmp (char *s1, char *s2, int n);
  28      =2  
  29      =2  extern char *strcpy (char *s1, char *s2);
  30      =2  extern char *strncpy (char *s1, char *s2, int n);
  31      =2  
  32      =2  extern int strlen (char *);
  33      =2  
  34      =2  extern char *strchr (const char *s, char c);
  35      =2  extern int strpos (const char *s, char c);
  36      =2  extern char *strrchr (const char *s, char c);
  37      =2  extern int strrpos (const char *s, char c);
  38      =2  
  39      =2  extern int strspn (char *s, char *set);
  40      =2  extern int strcspn (char *s, char *set);
  41      =2  extern char *strpbrk (char *s, char *set);
  42      =2  extern char *strrpbrk (char *s, char *set);
  43      =2  extern char *strstr  (char *s, char *sub);
  44      =2  extern char *strtok  (char *str, const char *set);
  45      =2  
  46      =2  extern char memcmp (void *s1, void *s2, int n);
  47      =2  extern void *memcpy (void *s1, void *s2, int n);
  48      =2  extern void *memchr (void *s, char val, int n);
  49      =2  extern void *memccpy (void *s1, void *s2, char val, int n);
  50      =2  extern void *memmove (void *s1, void *s2, int n);
  51      =2  extern void *memset  (void *s, char val, int n);
  52      =2  #pragma RESTORE
  53      =2  
  54      =2  #endif
  27      =1  #include    <ctype.h>
   1      =2  /*--------------------------------------------------------------------------
C51 COMPILER V8.08   SERIAL                                                                08/06/2008 16:11:38 PAGE 5   

   2      =2  CTYPE.H
   3      =2  
   4      =2  Prototypes for character functions.
   5      =2  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
   6      =2  All rights reserved.
   7      =2  --------------------------------------------------------------------------*/
   8      =2  
   9      =2  #ifndef __CTYPE_H__
  10      =2  #define __CTYPE_H__
  11      =2  
  12      =2  #pragma SAVE
  13      =2  #pragma REGPARMS
  14      =2  extern bit isalpha (unsigned char);
  15      =2  extern bit isalnum (unsigned char);
  16      =2  extern bit iscntrl (unsigned char);
  17      =2  extern bit isdigit (unsigned char);
  18      =2  extern bit isgraph (unsigned char);
  19      =2  extern bit isprint (unsigned char);
  20      =2  extern bit ispunct (unsigned char);
  21      =2  extern bit islower (unsigned char);
  22      =2  extern bit isupper (unsigned char);
  23      =2  extern bit isspace (unsigned char);
  24      =2  extern bit isxdigit (unsigned char);
  25      =2  extern unsigned char tolower (unsigned char);
  26      =2  extern unsigned char toupper (unsigned char);
  27      =2  extern unsigned char toint (unsigned char);
  28      =2  
  29      =2  #define _tolower(c) ( (c)-'A'+'a' )
  30      =2  #define _toupper(c) ( (c)-'a'+'A' )
  31      =2  #define toascii(c)  ( (c) & 0x7F )
  32      =2  #pragma RESTORE
  33      =2  
  34      =2  #endif
  28      =1  #include    <stdlib.h>
   1      =2  /*--------------------------------------------------------------------------
   2      =2  STDLIB.H
   3      =2  
   4      =2  Standard functions.
   5      =2  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
   6      =2  All rights reserved.
   7      =2  --------------------------------------------------------------------------*/
   8      =2  
   9      =2  #ifndef __STDLIB_H__
  10      =2  #define __STDLIB_H__
  11      =2  
  12      =2  #ifndef _SIZE_T
           =2  #define _SIZE_T
           =2  typedef unsigned int size_t;
           =2 #endif
  16      =2  
  17      =2  #ifndef NULL
           =2  #define NULL ((void *) 0L)
           =2 #endif
  20      =2  
  21      =2  #ifndef _WCHAR_T_DEFINED_
  22      =2  #define _WCHAR_T_DEFINED_
  23      =2  typedef char wchar_t;
  24      =2  #endif
  25      =2  
  26      =2  
  27      =2  #pragma SAVE
  28      =2  #pragma REGPARMS
C51 COMPILER V8.08   SERIAL                                                                08/06/2008 16:11:38 PAGE 6   

  29      =2  
  30      =2  extern int    abs  (int   val);
  31      =2  extern long  labs  (long  val);
  32      =2  
  33      =2  extern float atof (char *s1);
  34      =2  extern long  atol (char *s1);
  35      =2  extern int   atoi (char *s1);
  36      =2  extern int   rand ();
  37      =2  extern void  srand (int);
  38      =2  
  39      =2  extern float         strtod  (char *, char **);
  40      =2  extern long          strtol  (char *, char **, unsigned char);
  41      =2  extern unsigned long strtoul (char *, char **, unsigned char);
  42      =2  
  43      =2  #define _MALLOC_MEM_    xdata
  44      =2  
  45      =2  extern void init_mempool          (void _MALLOC_MEM_ *p, unsigned int size);
  46      =2  extern void _MALLOC_MEM_ *malloc  (unsigned int size);
  47      =2  extern void free                  (void _MALLOC_MEM_ *p);
  48      =2  extern void _MALLOC_MEM_ *realloc (void _MALLOC_MEM_ *p, unsigned int size);
  49      =2  extern void _MALLOC_MEM_ *calloc  (unsigned int size, unsigned int len);
  50      =2  
  51      =2  #pragma RESTORE
  52      =2  
  53      =2  #endif
  29      =1  
  30      =1  #include    "uCosii\os_cpu.h"
   1      =2  /*
   2      =2  *********************************************************************************************************
   3      =2  *                                               uC/OS-II
   4      =2  *                                               实时内核
   5      =2  *
   6      =2  *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
   7      =2  *                                               版权所有
   8      =2  *
   9      =2  *                                            MCU-51 专用代码
  10      =2  *                                           KEIL C51大模式编译
  11      =2  *
  12      =2  * 文件名 : OS_CPU.H
  13      =2  * 作者   : Jean J. Labrosse
  14      =2  * 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部
  15      =2  * 改编   : 钟文青,升级到ucOS-II V2.51
  16      =2  *********************************************************************************************************
  17      =2  */
  18      =2  
  19      =2  #ifndef __OS_CPU_H
  20      =2  #define __OS_CPU_H
  21      =2  
  22      =2  #ifdef  OS_CPU_GLOBALS
           =2 #define OS_CPU_EXT
           =2 #else
  25      =2  #define OS_CPU_EXT  extern
  26      =2  #endif
  27      =2  
  28      =2  /*
  29      =2  *********************************************************************************************************
  30      =2  *                                       数据类型
  31      =2  *                                     (编译器相关)
  32      =2  *********************************************************************************************************
  33      =2  */
  34      =2  
  35      =2  //详见C51.PDF第176页
C51 COMPILER V8.08   SERIAL                                                                08/06/2008 16:11:38 PAGE 7   

  36      =2  typedef unsigned char  BOOLEAN;       //注意:不要使用bit定义,因为在结构体里无法使用
  37      =2  typedef unsigned char  INT8U;         //无符号8位数
  38      =2  typedef signed   char  INT8S;         //有符号8位数
  39      =2  typedef unsigned int   INT16U;        //无符号16位数
  40      =2  typedef signed   int   INT16S;        //有符号16位数
  41      =2  typedef unsigned long  INT32U;        //无符号32位数
  42      =2  typedef signed   long  INT32S;        //有符号32位数
  43      =2  typedef float          FP32;          //单精度浮点数
  44      =2  typedef double         FP64;          //双精度浮点数
  45      =2  
  46      =2  typedef unsigned char  OS_STK;        //栈单元宽度为8比特
  47      =2  typedef unsigned char  OS_CPU_SR;     /* Define size of CPU status register (PSW = 8 bits)  */
  48      =2  
  49      =2  #define BYTE           INT8S          //兼容以前版本的数据类型
  50      =2  #define UBYTE          INT8U          //uC/OS-II可以不用这些数据类型
  51      =2  #define WORD           INT16S
  52      =2  #define UWORD          INT16U
  53      =2  #define LONG           INT32S
  54      =2  #define ULONG          INT32U
  55      =2  
  56      =2  /* 
  57      =2  *********************************************************************************************************
  58      =2  *                              处理器相关代码 MCU-51 (大模式)
  59      =2  * 针对51单片机,只使用方法1(直接开关中断)
  60      =2  *********************************************************************************************************
  61      =2  */
  62      =2  
  63      =2  #define  OS_CRITICAL_METHOD    1
  64      =2  
  65      =2  #if      OS_CRITICAL_METHOD == 1
  66      =2  #define  OS_ENTER_CRITICAL()  EA=0    //关中断
  67      =2  #define  OS_EXIT_CRITICAL()   EA=1    //开中断
  68      =2  #endif
  69      =2  
  70      =2  #if      OS_CRITICAL_METHOD == 2
           =2 /* As an undocumented keyword of keil c. __asm is supported in Keil C v6.20.
           =2 . No other means to define assemble language code in a macro, I have to use it here. If your compiler does
             - not support __asm, use method 1 or 3 then. */
           =2 /* A2 AF MOV C, EA*/
           =2 /* C2 AF CLR EA   */
           =2 /* C0 D0 PUSH PSW */
           =2 #define  OS_ENTER_CRITICAL()    __asm DB 0A2H, 0AFH, 0C2H, 0AFH, 0C0H, 0D0H
           =2 
           =2 /* D0 D0 POP PSW   */
           =2 /* 92 AF MOV EA, C */
           =2 #define  OS_EXIT_CRITICAL()     __asm DB 0D0H, 0D0H, 092H, 0AFH
           =2 #endif
  82      =2  
  83      =2  #if      OS_CRITICAL_METHOD == 3
           =2 #define  OS_ENTER_CRITICAL()  (cpu_sr = EA, EA=0)   /* Disable interrupts  */
           =2 #define  OS_EXIT_CRITICAL()   (EA=cpu_sr)               /* Enable  interrupts  */
           =2 #endif
  87      =2  
  88      =2  
  89      =2  #define  OS_STK_GROWTH    0           //MCU-51堆栈从下往上增长  1=向下,0=向上
  90      =2  
  91      =2  #define  OS_TASK_SW()     OSCtxSw()   //因为MCU-51没有软中断指令,所以用程序调用代替。两者的堆栈格式相同,
  92      =2                                        //RETI指令复位中断系统,RET则没有。实践表明,对于MCU-51,用子程序调
  93      =2                                        //用入栈,用中断返回指令RETI出栈是没有问题的,反之中断入栈RET出栈则
  94      =2                                        //不行。总之,对于入栈,子程序调用与中断调用效果是一样的,可以混用。
  95      =2                                        //在没有中断发生的情况下复位中断系统也不会影响系统正常运行。
  96      =2                                        //详见《uC/OS-II》第八章193页第12行
C51 COMPILER V8.08   SERIAL                                                                08/06/2008 16:11:38 PAGE 8   

⌨️ 快捷键说明

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