📄 main.lst
字号:
C51 COMPILER V7.07 MAIN 06/09/2008 17:24:41 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 #include "include.h"
2 /**************************************************************************************
3 * 函数原型:
4 * 函数功能:
5 * 输入参数:
6 * 输出参数:
7 * 函数说明:
8 **************************************************************************************/
9
10 OS_TID TaskA_ID;
11 OS_TID TaskB_ID;
12 OS_TID TaskC_ID;
13 OS_TID TaskD_ID;
14
15 /**************************************************************************************
16 函数名称:InitT0
17 函数功能:定时器0初始化
18 输入参数:
19 输出参数:
20 函数说明:T0工作于模式1,16位计数器,1ms中断一次
21 **************************************************************************************/
22 void InitT0(void)
23 {
24 1 TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
25 1 TMOD |= 0x01; //T0工作于模式1
26 1 TH0=T0H_COUNTER; //
27 1 TL0=T0L_COUNTER;
28 1
29 1 Timer0Run(); //TR0=1;T0开始计数
30 1 //PT0=1; //T0中断优先级高
31 1 IrqAll_Enable(); //打开总中断
32 1 IrqT0_Enable(); //打开T0中断允许
33 1 }
34
35 /**************************************************************************************
36 函数名称:InT0
37 函数功能:定时器0中断服务程序
38 输入参数:
39 输出参数:
40 函数说明:1ms中断一次
41 **************************************************************************************/
42 //void InT0(void) interrupt 1 //using 1
43 //{ IrqT0_Unable();
44
45 // TH0=T0H_COUNTER;
46 // TL0=T0L_COUNTER;
47
48 // IrqT0_Enable();
49 //}
50
51
52
53 void MainInit(void)
54 {
55 1
C51 COMPILER V7.07 MAIN 06/09/2008 17:24:41 PAGE 2
56 1 InitT0();
57 1 }
58
59
60 void TaskA(void)
61 {char a;
62 1
63 1 while (1)
64 1 {
65 2 a++;
66 2 //OSWait(K_TMO,5);
67 2 P1 = P1^B0000_0001;
68 2 os_dly_wait(ms(1000));
69 2 }
70 1 }
71
72 void TaskB(void)
73 {char b;
74 1 while (1)
75 1 {
76 2 b++;
77 2 //OSWait(K_TMO,10);
78 2 os_evt_wait_or ( 0x01, ms(60000) );
79 2 P1 = P1^B0000_0010;
80 2 //os_dly_wait(ms(4000));
81 2 }
82 1 }
83
84
85 void TaskC(void)
86 {char c;
87 1 //char buf[3];
88 1 while (1)
89 1 {
90 2
91 2 c++;
92 2 //OSWait(K_TMO,15);
93 2 P1 = P1^B0000_0100;
94 2 os_dly_wait(ms(8000));
95 2 }
96 1 }
97
98 void TaskD(void)
99 {char d=0;
100 1 //char buf[3];
101 1 while (1)
102 1 {
103 2
104 2 d++;
105 2
106 2 // if(d==5)
107 2 // {
108 2 // OSTaskResume(1);
109 2 // OSTaskSuspend(3);
110 2 // }
111 2
112 2 //OSWait(K_TMO,15);
113 2
114 2 os_evt_set(0x01, TaskB_ID);
115 2 P1 = P1^B0000_1000;
116 2 os_dly_wait(ms(16000));
117 2 }
C51 COMPILER V7.07 MAIN 06/09/2008 17:24:41 PAGE 3
118 1 }
119
120 /*
121 //main~TaskA, main~TaskB, main~TaskC, main~TaskD
122 //init~TaskA, init~TaskB, init~TaskC, init~TaskD
123
124 */
125 uint8 xdata taskA_stack[50];
126 uint8 xdata taskB_stack[50];
127 uint8 xdata taskC_stack[50];
128 uint8 xdata taskD_stack[50];
129
130
131 void init (void)
132 {
133 1
134 1 //在 os_sys_init 中调用 OSInit(SP);
135 1
136 1 //OSTaskCreate(TaskA, 0);
137 1 //OSTaskCreate(TaskB, 1);
138 1 //OSTaskCreate(TaskC, 2);
139 1 TaskA_ID=os_tsk_create_user( TaskA, 0, taskA_stack, sizeof(taskA_stack) );
140 1 TaskB_ID=os_tsk_create_user( TaskB, 1, taskB_stack, sizeof(taskB_stack) );
141 1 TaskC_ID=os_tsk_create_user( TaskC, 2, taskC_stack, sizeof(taskC_stack) );
142 1 TaskD_ID=os_tsk_create_user( TaskD, 3, taskD_stack, sizeof(taskD_stack) );
143 1
144 1 //os_dly_wait(ms(100));
145 1
146 1 //os_tsk_delete_self ();
147 1 MainInit();
148 1
149 1 //OSTaskSuspend(TaskB_ID);
150 1 DelayNop(1);
151 1
152 1 }
153 //44.2368MHz
154 void main(void)
155 {//char ie_par;
156 1
157 1 DelayNop(1);
158 1
159 1 os_sys_init(init);
160 1
161 1 //MainInit();
162 1
163 1
164 1 while(1)
165 1 {
166 2
167 2 DelayNop(1);
168 2 PCON = PCON | 0x01; // CPU进入休眠状态
169 2
170 2 //ie_par=IE;
171 2 DelayNop(1);
172 2 }
173 1
174 1 }
175
C51 COMPILER V7.07 MAIN 06/09/2008 17:24:41 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION InitT0 (BEGIN)
; SOURCE LINE # 22
; SOURCE LINE # 23
; SOURCE LINE # 24
0000 5389F0 ANL TMOD,#0F0H
; SOURCE LINE # 25
0003 438901 ORL TMOD,#01H
; SOURCE LINE # 26
0006 758C70 MOV TH0,#070H
; SOURCE LINE # 27
0009 E4 CLR A
000A F58A MOV TL0,A
; SOURCE LINE # 29
000C D28C SETB TR0
; SOURCE LINE # 31
000E D2AF SETB EA
; SOURCE LINE # 32
0010 D2A9 SETB ET0
; SOURCE LINE # 33
0012 22 RET
; FUNCTION InitT0 (END)
; FUNCTION MainInit (BEGIN)
; SOURCE LINE # 53
; SOURCE LINE # 54
; SOURCE LINE # 56
0000 020000 R LJMP InitT0
; FUNCTION MainInit (END)
; FUNCTION TaskA (BEGIN)
; SOURCE LINE # 60
; SOURCE LINE # 61
0000 ?C0003:
; SOURCE LINE # 63
; SOURCE LINE # 64
; SOURCE LINE # 65
0000 0500 R INC a
; SOURCE LINE # 67
0002 639001 XRL P1,#01H
; SOURCE LINE # 68
0005 7F64 MOV R7,#064H
0007 7E00 MOV R6,#00H
0009 120000 E LCALL _os_dly_wait
; SOURCE LINE # 69
000C 80F2 SJMP ?C0003
; FUNCTION TaskA (END)
; FUNCTION TaskB (BEGIN)
; SOURCE LINE # 72
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -