📄 os_time.lst
字号:
113 =2 sbit REN = SCON^4;
114 =2 sbit TB8 = SCON^3;
115 =2 sbit RB8 = SCON^2;
116 =2 sbit TI = SCON^1;
117 =2 sbit RI = SCON^0;
118 =2
119 =2 /* P1 */
120 =2 sbit T2EX = P1^1; // 8052 only
121 =2 sbit T2 = P1^0; // 8052 only
122 =2
123 =2 /* T2CON */
124 =2 sbit TF2 = T2CON^7;
125 =2 sbit EXF2 = T2CON^6;
126 =2 sbit RCLK = T2CON^5;
127 =2 sbit TCLK = T2CON^4;
128 =2 sbit EXEN2 = T2CON^3;
129 =2 sbit TR2 = T2CON^2;
130 =2 sbit C_T2 = T2CON^1;
131 =2 sbit CP_RL2 = T2CON^0;
132 =2
133 =2 #endif
21 =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 *
C51 COMPILER V8.12 OS_TIME 01/12/2009 17:44:24 PAGE 4
9 =2 * MCU-51 专用代码
10 =2 * KEIL C51大模式编译
11 =2 *
12 =2 * 文件名 : OS_CPU.H
13 =2 * 作者 : Jean J. Labrosse
14 =2 * 改编 : 高伟能(升级到ucOS-II V2.52)
15 =2 *********************************************************************************************************
16 =2 */
17 =2
18 =2 #ifndef _OS_CPU_H_
19 =2 #define _OS_CPU_H_
20 =2
21 =2 #ifdef __C51__
22 =2 #define OS_REENTRANT reentrant
23 =2 #else
=2 #define OS_REENTRANT
=2 #endif
26 =2
27 =2 #ifdef OS_CPU_GLOBALS
=2 #define OS_CPU_EXT
=2 #else
30 =2 #define OS_CPU_EXT extern
31 =2 #endif
32 =2
33 =2 /*
34 =2 *********************************************************************************************************
35 =2 * 数据类型
36 =2 * (编译器相关)
37 =2 *********************************************************************************************************
38 =2 */
39 =2
40 =2 //详见C51.PDF第176页
41 =2 typedef unsigned char BOOLEAN; //注意:不要使用bit定义,因为在结构体里无法使用
42 =2 typedef unsigned char INT8U; //无符号8位数
43 =2 typedef signed char INT8S; //有符号8位数
44 =2 typedef unsigned int INT16U; //无符号16位数
45 =2 typedef signed int INT16S; //有符号16位数
46 =2 typedef unsigned long INT32U; //无符号32位数
47 =2 typedef signed long INT32S; //有符号32位数
48 =2 typedef float FP32; //单精度浮点数
49 =2 typedef double FP64; //双精度浮点数
50 =2
51 =2 typedef unsigned char OS_STK; //栈单元宽度为8比特
52 =2 typedef unsigned char OS_CPU_SR; /* Define size of CPU status register (PSW = 8 bits) */
53 =2
54 =2 #define BYTE INT8S //兼容以前版本的数据类型
55 =2 #define UBYTE INT8U //uC/OS-II可以不用这些数据类型
56 =2 #define WORD INT16S
57 =2 #define UWORD INT16U
58 =2 #define LONG INT32S
59 =2 #define ULONG INT32U
60 =2
61 =2 /*
62 =2 *********************************************************************************************************
63 =2 * 处理器相关代码 MCU-51 (大模式)
64 =2 * 针对51单片机,只使用方法1(直接开关中断)
65 =2 *********************************************************************************************************
66 =2 */
67 =2
68 =2 #define OS_CRITICAL_METHOD 1
69 =2
70 =2 #if OS_CRITICAL_METHOD == 1
C51 COMPILER V8.12 OS_TIME 01/12/2009 17:44:24 PAGE 5
71 =2 #define OS_ENTER_CRITICAL() EA=0 //关中断
72 =2 #define OS_EXIT_CRITICAL() EA=1 //开中断
73 =2 #endif
74 =2
75 =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
=2 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
88 =2
89 =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
93 =2
94 =2
95 =2 #define OS_STK_GROWTH 0 //MCU-51堆栈从下往上增长 1=向下,0=向上
96 =2
97 =2 #define OS_TASK_SW() OSCtxSw() //因为MCU-51没有软中断指令,所以用程序调用代替。两者的堆栈格式相同,
98 =2 //RETI指令复位中断系统,RET则没有。实践表明,对于MCU-51,用子程序调
99 =2 //用入栈,用中断返回指令RETI出栈是没有问题的,反之中断入栈RET出栈则
100 =2 //不行。总之,对于入栈,子程序调用与中断调用效果是一样的,可以混用。
101 =2 //在没有中断发生的情况下复位中断系统也不会影响系统正常运行。
102 =2 //详见《uC/OS-II》第八章193页第12行
103 =2
104 =2 #define OS_ISR_PROTO_EXT 1
105 =2 void OSCtxSw(void);
106 =2 void OSTickInit(void); //系统定时器初始化
107 =2 void OSTickISR(void); //系统定时器中断处理程序
108 =2 #endif //_OS_CPU_H
22 =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-2001, Jean J. Labrosse, Weston, FL
7 =2 * All Rights Reserved
8 =2 *
9 =2 * uC/OS-II Configuration File for V2.52
10 =2 *
11 =2 * File : OS_CFG.H
12 =2 * By : Jean J. Labrosse
13 =2 *********************************************************************************************************
14 =2 */
15 =2
16 =2 /*
17 =2 *********************************************************************************************************
18 =2 * uC/OS-II CONFIGURATION
19 =2 *********************************************************************************************************
20 =2 */
21 =2 #ifndef _OS_CFG_H_
22 =2 #define _OS_CFG_H_
23 =2
C51 COMPILER V8.12 OS_TIME 01/12/2009 17:44:24 PAGE 6
24 =2 //#define MaxStkSize 100 /*根据杨屹的修改,每个任务使用同样大小的堆栈,这就是每个堆栈的大
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -