📄 led.lst
字号:
C51 COMPILER V7.06 LED 03/29/2008 13:29:09 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2
3 ** RTX-51的移植
4
5 ** 移植到AT89S52
6
7 ** 此程序是循环花样显示LED灯
8
9 ** 有三个显示样式,分别对应下面的三个进程
10
11 ** 下面的算法中用到了“时间到空间”的转换,使得算法简化不少
12
13 ** 此程序我已在最小系统板上试验通过。
14
15 */
16
17 #include <reg51.h>
18
19 #include <rtx51tny.h>
20
21
22 const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
23
24 ,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00};
25
26 /*时间到空间的转换,如果table是:
27
28 const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
29
30 则算法和代码会多出一倍来。table数组虽然增加了一倍,算法也随之减少了一半,
31
32 好处当然不止在这里体现,下面的进程2也减少了一半*/
33
34
35 //进程0 左->右->左
36
37 void LED0 (void) _task_ 0
38
39 {
40 1
41 1 int i;
42 1
43 1 os_create_task(1);//创建进程1
44 1
45 1 os_create_task(2);//创建进程2
46 1
47 1 while(1)
48 1
49 1 {
50 2
51 2 for (i = 0; i < 15; i++)
52 2
53 2 {
54 3
55 3 P1 = table[i];
C51 COMPILER V7.06 LED 03/29/2008 13:29:09 PAGE 2
56 3
57 3 os_wait(K_TMO,30,0);//等待30*10000微妙 = 0.3秒
58 3
59 3 }
60 2
61 2 os_send_signal(1); //发送Signal信号,激活进程1
62 2
63 2 os_wait(K_SIG,0,0); //等待信号
64 2
65 2 }
66 1
67 1 }
68
69
70 //进程1 全亮->全灭->全亮
71
72 void LED1 (void) _task_ 1
73
74 {
75 1
76 1 int i;
77 1
78 1 while(1)
79 1
80 1 {
81 2
82 2 os_wait(K_SIG,0,0);
83 2
84 2 for (i = 0; i < 3; i++)
85 2
86 2 {
87 3
88 3 P1 = table[15]; //全亮
89 3
90 3 os_wait(K_TMO,30,0);
91 3
92 3 P1 = table[16]; //全灭
93 3
94 3 os_wait(K_TMO,30,0);
95 3
96 3 }
97 2
98 2 os_send_signal(2);
99 2
100 2 }
101 1
102 1 }
103
104
105 //进程2 两边->中间中间->两边
106
107 void LED2 (void) _task_ 2
108
109 {
110 1
111 1 int i;
112 1
113 1 while(1)
114 1
115 1 {
116 2
117 2 os_wait(K_SIG,0,0);
C51 COMPILER V7.06 LED 03/29/2008 13:29:09 PAGE 3
118 2
119 2 for (i = 0; i < 8; i++)
120 2
121 2 {
122 3
123 3 P1 = table[i] | table[i+7]; //由于table长度多一倍,省去了一个循环,而且算法也简化了。
124 3
125 3 os_wait(K_TMO,30,0);
126 3
127 3 }
128 2
129 2 os_send_signal(0);
130 2
131 2 }
132 1
133 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 200 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -