📄 ex1.lst
字号:
C51 COMPILER V7.06 EX1 07/30/2008 11:19:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN ex1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-------------------------------------包涵文件
2 #include "..\uc_os_II\includes.h"
3 #include "..\Ex1_Keil\ucos51_bl.h"
4
5 //-------------------------------------定义任务堆栈大小
6 OS_STK xdata KEYStack[CPU_MAX_STK_SIZE]; //定义OS_STK堆栈类型,存放于xdata连续空间,大小为CPU_MAX_STK_S
-IZE的数组中
7 OS_STK xdata SPKStack[CPU_MAX_STK_SIZE];
8 OS_STK xdata LEDStack[CPU_MAX_STK_SIZE];
9
10 //-------------------------------------函数定义
11 void fsbyte(INT8U byte);
12 //-------------------------------------按键扫描(10ms-100ms)
13 void jianpan(void xdata * ppdata) reentrant
14 {
15 1 ppdata = ppdata;
16 1 while(1)
17 1 {
18 2 if(P1&128)
19 2 {
20 3 keyys=0,keyok=0;
21 3 OSTimeDly(10);//100ms
22 3 }
23 2 else
24 2 {
25 3 OSTimeDly(1);//10ms
26 3 keyys++;
27 3 if(keyys>=5 & keyok==0)//连按无效
28 3 {
29 4 keyok=1;
30 4 sycd=10,syyx=1;
31 4 keyys=0,key++;
32 4 if(key>=100) key=0;
33 4 }
34 3 }
35 2 }
36 1 }
37
38 //-------------------------------------喇叭程序(10ms)
39 void SPK(void xdata * ppdata) reentrant
40 {
41 1 ppdata = ppdata;
42 1 while(1)
43 1 {
44 2 OSTimeDly(1);
45 2 if(syyx==1)
46 2 {
47 3 P3|=1;
48 3 if(sycd>0)
49 3 {
50 4 sycd--;
51 4 }
52 3 else
53 3 {
54 4 syyx=0;
C51 COMPILER V7.06 EX1 07/30/2008 11:19:16 PAGE 2
55 4 P3&=254;
56 4 }
57 3 }
58 2 else
59 2 {
60 3 sycd=0,P3&=254;
61 3 }
62 2 }
63 1 }
64
65 //-------------------------------------LED扫描(2ms)
66 void LedSM(void xdata * ppdata) reentrant
67 {
68 1 unsigned char err=0;
69 1 ppdata = ppdata;
70 1 while(1)
71 1 {
72 2 OSMboxPend (LEDSM,0,&err);
*** WARNING C259 IN LINE 72 OF EX1.C: 'parameter': pointer: different mspace
73 2 js100++;
74 2 P1&=252;
75 2 switch(ledfen)
76 2 {
77 3 case 0:
78 3 {//个位扫描
79 4 ledfen=1;
80 4 fsbyte(LED[ge]);
81 4 P1|=1;
82 4 }
83 3 break;
84 3
85 3 case 1:
86 3 {//十位扫描
87 4 ledfen=0;
88 4 fsbyte(LED[shi]);
89 4 P1|=2;
90 4 }
91 3 break;
92 3
93 3 default:
94 3 ledfen=0;
95 3 }
96 2
97 2 if(js100>=50)
98 2 {//100ms
99 3 js100=0;
100 3 ge=key%10;
101 3 shi=key/10;
102 3 if(shi==0) shi=10;
103 3 }
104 2
105 2 }
106 1 }
107
108 //-------------------------------------字节发送器
109 void fsbyte(INT8U byte)
110 {
111 1 unsigned char fsjsq=0;
112 1 for(fsjsq=0;fsjsq<8;fsjsq++)
113 1 {
114 2 P1&=251; //CLK=0
115 2 P1|=((byte<<fsjsq)&128)>>4;
C51 COMPILER V7.06 EX1 07/30/2008 11:19:16 PAGE 3
116 2 P1|=4; //CLK=1
117 2 P1&=247;
118 2 }
119 1 }
120
121 //-------------------------------------参数初始化
122 void ParameterInitial()
123 {
124 1 //计数器
125 1 time0=0;
126 1
127 1 //按键
128 1 keyys=keyok=key=0;
129 1
130 1 //led分配器
131 1 ledfen=0;
132 1 js100=0;
133 1
134 1 //100ms计数器清空
135 1 js100=0;
136 1
137 1 //声音
138 1 sycd=0;syyx=0;
139 1
140 1 //LED表
141 1 //0 ;1 ;2 ;3 ;4
142 1 LED[0]=192;LED[1]=249;LED[2]=164;LED[3]=176;LED[4]=153;
143 1 //5 ;6 ;7 ;8 ;9
144 1 LED[5]=146;LED[6]=130;LED[7]=248;LED[8]=128;LED[9]=144;
145 1 //Nothing ;
146 1 LED[10]=255;
147 1
148 1 //邮箱
149 1 LEDSM=OSMboxCreate((void*)0);
150 1 }
151
152 //-------------------------------------定时中断初始化
153 void InterruptInitial()
154 {
155 1 /* set timer. 50ms, THTL = 3caf when cpu at 12MHz */
156 1 TMOD = 0x01; //2ms,mode 1,16 bits
157 1 TH0 = TIMER_24M_25MS_H;
158 1 TL0 = TIMER_24M_25MS_L;
159 1 /* TR0 is set in OSStart() */
160 1 ET0 = 1;
161 1 }
162
163 //-------------------------------------主函数
164 main()
165 {
166 1 InterruptInitial();
167 1 OSInit();
168 1
169 1 ParameterInitial();
170 1
171 1 OSTaskCreate(LedSM, (void xdata *)0, &LEDStack[0], 1);
172 1 OSTaskCreate(jianpan, (void xdata *)0, &KEYStack[0], 2);
173 1 OSTaskCreate(SPK, (void xdata *)0, &SPKStack[0], 3);
174 1 OSStart();
175 1 }
C51 COMPILER V7.06 EX1 07/30/2008 11:19:16 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 495 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 744 ----
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 + -