📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 04/04/2006 15:07:20 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\DEBUG\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE INCDIR(F:\test\SOURCE;F:\test;F:\test\Port) DEBUG OBJEC
-TEXTEND PRINT(.\LST\main.lst) OBJECT(.\DEBUG\main.obj)
stmt level source
1
2 #ifndef OS_MASTER_FILE
3 #include "includes.h"
4 #endif
5 //声明任务堆栈
6 OS_STK TestTask4Stk[64];
7 OS_STK TestTask5Stk[64];
8 OS_STK TestTask6Stk[64];
9 OS_STK TestTask7Stk[64];
10
11
12
13 /*void Init_CAN(void) // 初始化SJA1000主控制器子函数
14
15 {
16
17 MOD=0x01; // 控制寄存器为复位
18
19 CDR=0; // 设置时钟分频器
20
21 ACR=0; // 验收码寄存器
22
23 AMR=0xff; // 验收屏蔽寄存器
24
25 BTR0=0x31; // 总线定时寄存器0
26
27 BTR1=0x18; // 总线定时寄存器1 /*波特率500 K*/
28
29 /*OCR=0x55; // 输出控制寄存器
30
31 MOD=0x6c; // 控制寄存器进入工作
32
33 //EA=1; // CPU开中断
34
35 }*/
36
37
38
39
40 void InitS0 ( unsigned int baud_rate ) TASK_REENTRANT //baud_rate,n,8,1
41 {
42 1 ES = 0;//1; //EA=1;ET1=1;
43 1 SCON = 0x50; /* 0x52;//SCON */
44 1 TMOD |= 0x20; /*0x20;// TMOD */
45 1 TCON = 0x40;//0x60; /*0x60;// TCON */
46 1 PCON = PCON&0x7f;
47 1 switch(baud_rate){ //波特率设置
48 2 case 1200:
49 2 TL1 = 0xe8;TH1 = 0Xe8;break; //1200
50 2 case 2400:
51 2 TL1 = 0xf4;TH1 = 0Xf4;break; //2400
52 2 case 4800:
53 2 TL1 = 0xfa;TH1 = 0Xfa;break; //4800
54 2 case 9600:
C51 COMPILER V7.06 MAIN 04/04/2006 15:07:20 PAGE 2
55 2 TL1 = 0xfd;TH1 = 0Xfd;break; //9600
56 2 case 19200:
57 2 PCON = PCON|0x80;TL1 = 0xfd;TH1 = 0Xfd;break;//19200
58 2 case 38400:
59 2 PCON = PCON|0x80;TL1 = 0xfe;TH1 = 0Xfe;break;//38400
60 2 default:
61 2 TL1=0xfd;TH1=0Xfd;break; //9600
62 2 }
63 1 }
64 //********************************************************************************************************
65 //
66 // 设置时钟节拍中断函数_?OSTickISR的tick率
67 // NOTE: 1: 一般tick率为10-100次/秒;
68 // 2: 特别注意不要在这里启动时钟节拍!!!
69 // 3: 最好在第一个任务(优先级最高的任务)里启动tick时钟节拍
70 // 4: 请尽量不要更改中断优先级寄存器IP的低2位,当INT0与T0同级时就会影响到正常tick
71 //
72 //
73 //********************************************************************************************************
74 void InitTick ( void ) TASK_REENTRANT
75 {
76 1
77 1 TMOD |= 0x01; //选T0,方式1(16位)
78 1 TH0 = 0x3c; //定时50ms
79 1 TL0 = 0x0b0;
80 1 TR0 = 1;
81 1 TI = 1;
82 1 //TF0 = 1;
83 1 IP = 0x02; //设置中断优先级T0最高
84 1 ET0 = 1;
85 1 EA = 1;
86 1 //请注意在第一个任务里启动T0,即:TR0=1;
87 1 // 在OS_CPU_A.ASM的_?OSTickISR里使TH0=0x3ch;TL0=0x0b0h;
88 1 }
89 void TestTask4 (void * os_pdata) TASK_REENTRANT
90 {//本任务优先级为4
91 1 os_pdata = os_pdata;
92 1
93 1 InitS0 ( 38400 );
94 1 InitTick(); //初始化OSTickISR()
95 1 printf ("\n*********************************************************\n");
96 1 printf ("************************任务:TASK-4************************\n");
97 1 printf ("***************这是最高优先级任务的第一次启动**************\n");
98 1 printf ("***************多任务已经启动,tick已经开始 ****************\n");
99 1 printf ("***********************************************************\n");
100 1 while (1)
101 1 {
102 2 printf ("*****TASK-44444\n");
103 2 OSTimeDly(100);
104 2 }
105 1
106 1 }
107 void TestTask5(void * os_pdata) TASK_REENTRANT
108 {//本任务优先级为5
109 1 os_pdata = os_pdata;
110 1
111 1 while(1)
112 1 {
113 2 printf ("********************TASK-55555\n");
114 2 OSTimeDly(200);
115 2 }
116 1 }
C51 COMPILER V7.06 MAIN 04/04/2006 15:07:20 PAGE 3
117 void TestTask6(void * os_pdata) TASK_REENTRANT
118 {//本任务优先级为6
119 1 os_pdata = os_pdata;
120 1
121 1 while(1)
122 1 {
123 2 printf ("***********************************TASK-66666\n");
124 2 OSTimeDly(400);
125 2 }
126 1 }
127 void TestTask7(void * os_pdata) TASK_REENTRANT
128 {//本任务优先级为7
129 1 os_pdata = os_pdata;
130 1
131 1 while(1)
132 1 {
133 2 printf ("**********************************************************************TASK-77777\n");
134 2 OSTimeDly(800);
135 2 }
136 1 }
137
138 void main (void)
139 {Init_CAN();
*** WARNING C206 IN LINE 139 OF MAIN.C: 'Init_CAN': missing function-prototype
140 1
141 1 OSInit();
142 1
143 1 /*INT8U OSTaskCreate (void (*task)(void *pd)TASK_REENTRANT,
144 1 void *os_pdata,
145 1 OS_STK *ptos,
146 1 INT8U prio)TASK_REENTRANT)
147 1 */
148 1 OSTaskCreate (TestTask4,(void *)0, &TestTask4Stk[63], 4);
149 1 OSTaskCreate (TestTask5,(void *)0, &TestTask5Stk[63], 5);
150 1 OSTaskCreate (TestTask6,(void *)0, &TestTask6Stk[63], 6);
151 1 OSTaskCreate (TestTask7,(void *)0, &TestTask7Stk[63], 7);
152 1
153 1 OSStart();
154 1 }
155
156
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 675 ----
CONSTANT SIZE = 482 ----
XDATA SIZE = 256 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -