📄 ucos_ii.lst
字号:
496 =2 void OSTaskStatHook(void) reentrant;
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定义为前缀,不算一个单词。
37 =2 // 3.多个单词(2个及以上),每个单词首字母大写。(有时变量名第一个单词首字母小写)
38 =2 // 4.采用内缩风格,每次缩进8个空格。
C51 COMPILER V6.12 UCOS_II 05/08/2003 14:54:20 PAGE 13
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;
37 =2 sbit F0 = 0xD5;
38 =2 sbit RS1 = 0xD4;
C51 COMPILER V6.12 UCOS_II 05/08/2003 14:54:20 PAGE 14
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
9 =2 #define MaxLenComBuf 256 /*256*/ //命令缓冲区最大长度
10 =2
C51 COMPILER V6.12 UCOS_II 05/08/2003 14:54:20 PAGE 15
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 + -