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

📄 serial.lst

📁 ucos在51单片机内的移植代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.09   SERIAL                                                                11/23/2005 15:21:36 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE serial.c LARGE BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS

line level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                               uC/OS-II
   4          *                                               实时内核
   5          *
   6          *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
   7          *                                               版权所有
   8          *
   9          *                                            MCU-51 专用代码
  10          *                                           KEIL C51大模式编译
  11          *
  12          * 文件名 : SERIAL.C
  13          * 作者   : Jean J. Labrosse
  14          * 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27
  15          *********************************************************************************************************
  16          */
  17          
  18          //**********************************************************************************
  19          //杨屹    2002/08/20    第一版
  20          //基于中断的串口驱动及显示程序
  21          //联系方法:gdtyy@ri.gdt.com.cn(2003/07/31以前有效)
  22          //**********************************************************************************
  23          //程序特点:
  24          //        1.基于中断,可并发执行
  25          //        2.参数可配置(收发缓冲区大小,最大字符串长度,TAB键移动距离)
  26          //**********************************************************************************
  27          //使用方法:(此范例自包含,独立于其他程序。)
  28          //        先配制收发缓冲区大小等可变参数(在serial.h中的宏定义)
  29          //        1.开头加入#include <reg51.h>语句,一定要有。
  30          //        2.初始化串口        InitSerial();//本例中为20MHz晶体,300波特率,模式2初始化
  31          //        3.初始化串口缓冲区  InitSerialBuffer();
  32          //        4.使用显示字节,字,长字,字符,字符串,清屏函数。
  33          //自包含
  34          //**********************************************************************************
  35          //波特率计算公式:
  36          //        TH1=256-(2^SMOD/32*Fosc/12*1/Bound)
  37          //    其中:SMOD=0,1;Fosc=晶体或晶振频率;Bound=波特率
  38          //    本例中,SMOD=0;Fosc=20*10E6;Bound=300,所以TH1=0x52。
  39          //Baud rate(20Mhz)
  40          //300(52);1200(D5);2400(EA);4800(F5);9600(FB);19200(FD);38400(FF);
  41          //**********************************************************************************
  42          //书写风格:
  43          //        1.带yy前缀标志的函数为杨屹改写的等效C库函数。
  44          //        2.单个单词用小写,yy定义为前缀,不算一个单词。
  45          //        3.多个单词(2个及以上),每个单词首字母大写。(有时变量名第一个单词首字母小写)
  46          //        4.采用内缩风格,每次缩进8个空格。
  47          //**********************************************************************************
  48          //应用举例:(可在KEIL仿真环境下运行)
  49          //源程序文件:serial.h/serial.c/main.c
  50          //main.c内容:
  51          //#include <reg51.h>//Note:It must be added.必须在serial.c之前
  52          //#include <serial.h>
  53          //main()
  54          //{
  55          //      unsigned char ch;
C51 COMPILER V7.09   SERIAL                                                                11/23/2005 15:21:36 PAGE 2   

  56          //
  57          //      InitSerial();
  58          //      InitSerialBuffer();
  59          //      while(1){
  60          //              PrintStr("\n");
  61          //              PrintByte(90);PrintStr(" ");
  62          //              PrintWord(90);PrintStr(" ");
  63          //              PrintLong(90);PrintStr(" ");
  64          //              PrintChar('y');PrintChar(' ');//千万别写成双引号,否则打印0(乱字符)。
  65          //              PrintStr("\nHello!\nI'm YangYi.\n");
  66          //              PrintStr("Press any key to continue...");
  67          //              while(!yygetch(&ch));
  68          //      }
  69          //}
  70          //**********************************************************************************
  71          //建议:
  72          //    你完全可以把该子程序当作函数库使用,以便减少重复劳动,提高代码质量。
  73          //**********************************************************************************
  74          
  75          #ifndef  OS_MASTER_FILE
  76          #include "includes.h"
   1      =1  /*
   2      =1  *********************************************************************************************************
   3      =1  *                                               uC/OS-II
   4      =1  *                                               实时内核
   5      =1  *
   6      =1  *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
   7      =1  *                                               版权所有
   8      =1  *
   9      =1  *                                            MCU-51 专用代码
  10      =1  *                                           KEIL C51大模式编译
  11      =1  *
  12      =1  * 文件名 : INCLUDES.H
  13      =1  * 作者   : Jean J. Labrosse
  14      =1  * 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27
  15      =1  *********************************************************************************************************
  16      =1  */
  17      =1  
  18      =1  //uC/OS-II核心
  19      =1  #include    <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  *********************************************************************************************************
  16      =2  */
  17      =2  
  18      =2  #ifdef  OS_CPU_GLOBALS
           =2 #define OS_CPU_EXT
           =2 #else
  21      =2  #define OS_CPU_EXT  extern
  22      =2  #endif
C51 COMPILER V7.09   SERIAL                                                                11/23/2005 15:21:36 PAGE 3   

  23      =2  
  24      =2  /*
  25      =2  *********************************************************************************************************
  26      =2  *                                       数据类型
  27      =2  *                                     (编译器相关)
  28      =2  *********************************************************************************************************
  29      =2  */
  30      =2  
  31      =2  //详见C51.PDF第176页
  32      =2  typedef unsigned char  BOOLEAN;       //注意:不要使用bit定义,因为在结构体里无法使用
  33      =2  typedef unsigned char  INT8U;         //无符号8位数
  34      =2  typedef signed   char  INT8S;         //有符号8位数
  35      =2  typedef unsigned int   INT16U;        //无符号16位数
  36      =2  typedef signed   int   INT16S;        //有符号16位数
  37      =2  typedef unsigned long  INT32U;        //无符号32位数
  38      =2  typedef signed   long  INT32S;        //有符号32位数
  39      =2  typedef float          FP32;          //单精度浮点数
  40      =2  typedef double         FP64;          //双精度浮点数
  41      =2  
  42      =2  typedef unsigned char  OS_STK;        //栈单元宽度为8比特
  43      =2  
  44      =2  #define BYTE           INT8S          //兼容以前版本的数据类型
  45      =2  #define UBYTE          INT8U          //uC/OS-II可以不用这些数据类型
  46      =2  #define WORD           INT16S
  47      =2  #define UWORD          INT16U
  48      =2  #define LONG           INT32S
  49      =2  #define ULONG          INT32U
  50      =2  
  51      =2  /* 
  52      =2  *********************************************************************************************************
  53      =2  *                              处理器相关代码 MCU-51 (大模式)
  54      =2  * 针对51单片机,只使用方法1(直接开关中断)
  55      =2  *********************************************************************************************************
  56      =2  */
  57      =2  
  58      =2  #define  OS_ENTER_CRITICAL()  EA=0    //关中断
  59      =2  
  60      =2  #define  OS_EXIT_CRITICAL()   EA=1    //开中断
  61      =2  
  62      =2  #define  OS_STK_GROWTH    0           //MCU-51堆栈从下往上增长  1=向下,0=向上
  63      =2  
  64      =2  #define  OS_TASK_SW()     OSCtxSw()   //因为MCU-51没有软中断指令,所以用程序调用代替。两者的堆栈格式相同,
  65      =2                                        //RETI指令复位中断系统,RET则没有。实践表明,对于MCU-51,用子程序调
  66      =2                                        //用入栈,用中断返回指令RETI出栈是没有问题的,反之中断入栈RET出栈则
  67      =2                                        //不行。总之,对于入栈,子程序调用与中断调用效果是一样的,可以混用。
  68      =2                                        //在没有中断发生的情况下复位中断系统也不会影响系统正常运行。
  69      =2                                        //详见《uC/OS-II》第八章193页第12行
  70      =2                                        
  20      =1  #include    <os_cfg.h>
   1      =2  /*
   2      =2  *********************************************************************************************************
   3      =2  *                                                uC/OS-II
   4      =2  *                                          The Real-Time Kernel
   5      =2  *
   6      =2  *                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
   7      =2  *                                           All Rights Reserved
   8      =2  *
   9      =2  *                                   Configuration for Intel 80x86 (Large)
  10      =2  *
  11      =2  * File : OS_CFG.H
  12      =2  * By   : Jean J. Labrosse
  13      =2  *********************************************************************************************************
C51 COMPILER V7.09   SERIAL                                                                11/23/2005 15:21:36 PAGE 4   

  14      =2  */
  15      =2  
  16      =2  /*
  17      =2  *********************************************************************************************************
  18      =2  *                                         uC/OS-II CONFIGURATION
  19      =2  *********************************************************************************************************
  20      =2  */
  21      =2  
  22      =2  #define MaxStkSize              100
  23      =2  
  24      =2  #define OS_MAX_EVENTS             2            /* Max. number of event control blocks in your application 
             -...  */
  25      =2                                                 /* ... MUST be >= 2                                        
             -     */
  26      =2  #define OS_MAX_MEM_PART           2            /* Max. number of memory partitions ...                    
             -     */
  27      =2                                                 /* ... MUST be >= 2                                        
             -     */
  28      =2  #define OS_MAX_QS                 2            /* Max. number of queue control blocks in your application 
             -...  */
  29      =2                                                 /* ... MUST be >= 2                                        
             -     */
  30      =2  #define OS_MAX_TASKS             11            /* Max. number of tasks in your application ...            
             -     */
  31      =2                                                 /* ... MUST be >= 2                                        
             -     */
  32      =2  
  33      =2  #define OS_LOWEST_PRIO           12            /* Defines the lowest priority that can be assigned ...    
             -     */
  34      =2                                                 /* ... MUST NEVER be higher than 63!                       
             -     */
  35      =2  
  36      =2  #define OS_TASK_IDLE_STK_SIZE    MaxStkSize    /* Idle task stack size (# of 16-bit wide entries)         
             -     */
  37      =2  
  38      =2  #define OS_TASK_STAT_EN           0            /* Enable (1) or Disable(0) the statistics task            
             -     */
  39      =2  #define OS_TASK_STAT_STK_SIZE    MaxStkSize    /* Statistics task stack size (# of 16-bit wide entries)   
             -     */
  40      =2  
  41      =2  #define OS_CPU_HOOKS_EN           1            /* uC/OS-II hooks are found in the processor port files    
             -     */
  42      =2  #define OS_MBOX_EN                0            /* Include code for MAILBOXES                              

⌨️ 快捷键说明

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