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

📄 os_cpu_c.lst

📁 ucos-ii在C51中移植 附加介绍文档
💻 LST
📖 第 1 页 / 共 4 页
字号:
 497      =2  void       *OSTaskStkInit(void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) reentrant;
 498      =2  void        OSTaskSwHook(void) reentrant;
 499      =2  
 500      =2  void        OSTickISR(void);
 501      =2  
 502      =2  void        OSTimeTickHook(void) reentrant;
 503      =2  
 504      =2  //Hard timer
 505      =2  void        InitTimer0(void) reentrant;
  22      =1  
  23      =1  //系统显示
  24      =1  #include    <serial.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  * 文件名 : SERIAL.H
  13      =2  * 作者   : Jean J. Labrosse
  14      =2  * 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27
  15      =2  *********************************************************************************************************
  16      =2  */
  17      =2  
  18      =2  //**********************************************************************************
  19      =2  //杨屹    2002/08/20    第一版
  20      =2  //基于中断的串口驱动及显示程序
  21      =2  //联系方法:gdtyy@ri.gdt.com.cn(2003/07/31以前有效)
  22      =2  //**********************************************************************************
  23      =2  //使用方法:(此范例自包含,独立于其他程序。)
  24      =2  //        1.开头加入#include <reg51.h>语句,一定要有。
  25      =2  //        2.初始化串口        InitSerial();//本例中为20MHz晶体,300波特率,模式2初始化
  26      =2  //        3.初始化串口缓冲区  InitSerialBuffer();
  27      =2  //        4.使用显示字节,字,长字,字符,字符串,清屏函数。
  28      =2  //**********************************************************************************
  29      =2  //波特率计算公式:
  30      =2  //        TH1=256-(2^SMOD/32*Fosc/12*1/Bound)
  31      =2  //    其中:SMOD=0,1;Fosc=晶体或晶振频率;Bound=波特率
  32      =2  //    本例中,SMOD=0;Fosc=20*10E6;Bound=300,所以TH1=0x52。
  33      =2  //**********************************************************************************
  34      =2  //书写风格:
  35      =2  //        1.带yy前缀标志的函数为杨屹改写的等效C库函数。
  36      =2  //        2.单个单词用小写,yy定义为前缀,不算一个单词。
C51 COMPILER V6.12  OS_CPU_C                                                               05/08/2003 14:54:19 PAGE 13  

  37      =2  //        3.多个单词(2个及以上),每个单词首字母大写。(有时变量名第一个单词首字母小写)
  38      =2  //        4.采用内缩风格,每次缩进8个空格。
  39      =2  //**********************************************************************************
  40      =2  
  41      =2  void InitSerial() reentrant;//串口初始化
  42      =2  void InitSerialBuffer(void) reentrant;//串口缓冲区初始化
  43      =2  bit  yygetch(unsigned char *ch) reentrant;//从串口缓冲区读1字节数据
  44      =2  void PrintChar(unsigned char ch) reentrant;//显示字符
  45      =2  void PrintCh(unsigned char ch) reentrant;//内部使用,不建议用户使用。
  46      =2  void PrintByte(unsigned char Byte) reentrant;//以十六进制格式显示1个字节数据
  47      =2  void PrintWord(unsigned int Word) reentrant;//以十六进制格式显示1个字数据
  48      =2  void PrintLong(unsigned long LongWord) reentrant;//以十六进制格式显示1个长字数据
  49      =2  void PrintStr(unsigned char *str) reentrant;//显示字符串
  50      =2  void clrscr() reentrant;//清屏
  51      =2  
  52      =2  void serial(void) reentrant;//串口中断服务子程序
  53      =2  
  54      =2  //收发缓冲区长度
  55      =2  #define LenTxBuf        2000    //Don't too small,because it will cause display abnormal.
  56      =2  #define LenRxBuf        50
  57      =2  
  58      =2  #define MaxLenStr       100     /*buf[MaxLenStr+1] for '\0'*/
  59      =2  
  60      =2  #define	TABNum          4       //TAB键移动长度
  61      =2  
  25      =1  #include    <reg51.h>
   1      =2  /*--------------------------------------------------------------------------
   2      =2  REG51.H
   3      =2  
   4      =2  Header file for generic 80C51 and 80C31 microcontroller.
   5      =2  Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
   6      =2  All rights reserved.
   7      =2  --------------------------------------------------------------------------*/
   8      =2  
   9      =2  /*  BYTE Register  */
  10      =2  sfr P0   = 0x80;
  11      =2  sfr P1   = 0x90;
  12      =2  sfr P2   = 0xA0;
  13      =2  sfr P3   = 0xB0;
  14      =2  sfr PSW  = 0xD0;
  15      =2  sfr ACC  = 0xE0;
  16      =2  sfr B    = 0xF0;
  17      =2  sfr SP   = 0x81;
  18      =2  sfr DPL  = 0x82;
  19      =2  sfr DPH  = 0x83;
  20      =2  sfr PCON = 0x87;
  21      =2  sfr TCON = 0x88;
  22      =2  sfr TMOD = 0x89;
  23      =2  sfr TL0  = 0x8A;
  24      =2  sfr TL1  = 0x8B;
  25      =2  sfr TH0  = 0x8C;
  26      =2  sfr TH1  = 0x8D;
  27      =2  sfr IE   = 0xA8;
  28      =2  sfr IP   = 0xB8;
  29      =2  sfr SCON = 0x98;
  30      =2  sfr SBUF = 0x99;
  31      =2  
  32      =2  
  33      =2  /*  BIT Register  */
  34      =2  /*  PSW   */
  35      =2  sbit CY   = 0xD7;
  36      =2  sbit AC   = 0xD6;
C51 COMPILER V6.12  OS_CPU_C                                                               05/08/2003 14:54:19 PAGE 14  

  37      =2  sbit F0   = 0xD5;
  38      =2  sbit RS1  = 0xD4;
  39      =2  sbit RS0  = 0xD3;
  40      =2  sbit OV   = 0xD2;
  41      =2  sbit P    = 0xD0;
  42      =2  
  43      =2  /*  TCON  */
  44      =2  sbit TF1  = 0x8F;
  45      =2  sbit TR1  = 0x8E;
  46      =2  sbit TF0  = 0x8D;
  47      =2  sbit TR0  = 0x8C;
  48      =2  sbit IE1  = 0x8B;
  49      =2  sbit IT1  = 0x8A;
  50      =2  sbit IE0  = 0x89;
  51      =2  sbit IT0  = 0x88;
  52      =2  
  53      =2  /*  IE   */
  54      =2  sbit EA   = 0xAF;
  55      =2  sbit ES   = 0xAC;
  56      =2  sbit ET1  = 0xAB;
  57      =2  sbit EX1  = 0xAA;
  58      =2  sbit ET0  = 0xA9;
  59      =2  sbit EX0  = 0xA8;
  60      =2  
  61      =2  /*  IP   */ 
  62      =2  sbit PS   = 0xBC;
  63      =2  sbit PT1  = 0xBB;
  64      =2  sbit PX1  = 0xBA;
  65      =2  sbit PT0  = 0xB9;
  66      =2  sbit PX0  = 0xB8;
  67      =2  
  68      =2  /*  P3  */
  69      =2  sbit RD   = 0xB7;
  70      =2  sbit WR   = 0xB6;
  71      =2  sbit T1   = 0xB5;
  72      =2  sbit T0   = 0xB4;
  73      =2  sbit INT1 = 0xB3;
  74      =2  sbit INT0 = 0xB2;
  75      =2  sbit TXD  = 0xB1;
  76      =2  sbit RXD  = 0xB0;
  77      =2  
  78      =2  /*  SCON  */
  79      =2  sbit SM0  = 0x9F;
  80      =2  sbit SM1  = 0x9E;
  81      =2  sbit SM2  = 0x9D;
  82      =2  sbit REN  = 0x9C;
  83      =2  sbit TB8  = 0x9B;
  84      =2  sbit RB8  = 0x9A;
  85      =2  sbit TI   = 0x99;
  86      =2  sbit RI   = 0x98;
  26      =1  
  27      =1  //用户头文件加在最后面
  28      =1  //Your head file add here.
  29      =1  #include    <word.h>
   1      =2  //**********************************************************************************
   2      =2  //杨屹    2002/08/20    第一版
   3      =2  //词法分析程序(取词)
   4      =2  //联系方法:gdtyy@ri.gdt.com.cn(2003/07/31以前有效)
   5      =2  //**********************************************************************************
   6      =2  #define MaxLenWord	200	/*20*/      //单词最大长度
   7      =2  #define MaxLenWordTable	100	/*10*/      //词表最大长度
   8      =2  
C51 COMPILER V6.12  OS_CPU_C                                                               05/08/2003 14:54:19 PAGE 15  

   9      =2  #define MaxLenComBuf	256	/*256*/     //命令缓冲区最大长度
  10      =2  
  11      =2  #define MaxComNum	30                  //最大命令种类数
  12      =2  #define MaxLenCom	10                  //命令最大长度
  13      =2  
  14      =2  typedef struct{
  15      =2  		int Num;
  16      =2  		int LeftCurveNum,RightCurveNum;
  17      =2  		struct{
  18      =2  			int Length;
  19      =2  			unsigned char Str[MaxLenWord+1];	/*for '\0'*/
  20      =2  		} wt[MaxLenWordTable];
  21      =2  } WORDTABLE;
  22      =2  
  23      =2  bit GetWord(unsigned char *ComBuf,WORDTABLE *WordTable);
  30      =1  #include    <yyshell.h>
   1      =2  #define StatInputCom	0
   2      =2  #define StatExeCom	1
   3      =2  
   4      =2  void yyshell(void *yydata) reentrant;
  31      =1  #include    <yyshellsub.h>
   1      =2  //**********************************************************************************
   2      =2  //杨屹    2002/08/21    第一版
   3      =2  //shell界面命令执行程序
   4      =2  //联系方法:gdtyy@ri.gdt.com.cn(2003/07/31以前有效)
   5      =2  //**********************************************************************************
   6      =2  //命令处理函数
   7      =2  void DisplayTask(WORDTABLE *WordTable) reentrant;//显示任务
   8      =2  void Kill(WORDTABLE *WordTable) reentrant;//杀死任务
   9      =2  void PingCommand(WORDTABLE *WordTable) reentrant;//ping命令
  10      =2  void UDPCommand(WORDTABLE *WordTable) reentrant;//udp命令
  11      =2  void CfgHost(WORDTABLE *WordTable) reentrant;//配置主机IP地址
  12      =2  void CfgMask(WORDTABLE *WordTable) reentrant;//配置子网掩码
  13      =2  void CfgGateway(WORDTABLE *WordTable) reentrant;//配置网关IP地址
  14      =2  void PrintConfig(WORDTABLE *WordTable) reentrant;//显示配置信息
  15      =2  void DisplayHelpMenu(WORDTABLE *WordTable) reentrant;//显示帮助采单
  16      =2  
  17      =2  //转换函数
  18      =2  bit IPadrToHEX(unsigned char *Str,union ip_address_type *ip);
  19      =2  void HEXToIPadr(unsigned char *Str,union ip_address_type *ip);
  20      =2  
  21      =2  //IP地址类型联合体
  22      =2  union ip_address_type{
  23      =2  	unsigned long dwords;
  24      =2  	unsigned int words[2];
  25      =2  	unsigned char bytes[4];
  26      =2  };
  32      =1  #include    <mystring.h>
   1      =2  //**********************************************************************************
   2      =2  //杨屹    2002/08/20    第一版
   3      =2  //字符串操作函数
   4      =2  //联系方法:gdtyy@ri.gdt.com.cn(2003/07/31以前有效)
   5      =2  //**********************************************************************************
   6      =2  //与标准库函数用法相同。
   7      =2  //**********************************************************************************
   8      =2  void yystrlwr(unsigned char *str);//将字符串全部转换成小写格式
   9      =2  char yystrcmp(unsigned char *stra,unsigned char *strb);//比较a和b两个字符串的大小,a>b 1 a=b 0 a<b -1
  10      =2  unsigned int yystrlen(unsigned char *Str);//计算字符串长度,不包括'\0'标志。
  11      =2  bit StrToNum(unsigned char *Str,long int *Num);//字符串转换成数值(自动区分十进制“无前缀”和十六进制“0x

⌨️ 快捷键说明

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