📄 pointled.lst
字号:
176 1 {
177 2 TR0 = 0;
178 2 DisplayAll();
C51 COMPILER V8.08 POINTLED 07/31/2008 16:43:00 PAGE 4
179 2 DisplayAll();
180 2 DisplayAll();
181 2 TR0 = 1;
182 2 }
183 1 }
184
185 /*----------------------------------------
186 **函数功能:整体流动显示汉字
187 -----------------------------------------*/
188 void MODE1()
189 {
190 1 uint8 i,j;
191 1 uint8 temp;
192 1 data uint16 LastData[4]; //记录移位后的最终数据
193 1
194 1 for(i=0; i<=15; i++)
195 1 {
196 2 LastData[0] = 0;
197 2 LastData[1] = 0;
198 2 LastData[2] = 0;
199 2 LastData[3] = 0;
200 2
201 2 temp = 15 - MoveState%16; //要取得的汉字的位数
202 2 if(MoveState <= 15)
203 2 {
204 3 LastData[3] = ShowData[0][i] >> temp;
205 3 }
206 2 else if(MoveState >= 16 && MoveState <=31)
207 2 {
208 3 LastData[3] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
209 3 LastData[2] = ShowData[0][i] >> temp;
210 3 }
211 2 else if(MoveState >= 32 && MoveState <=47)
212 2 {
213 3 LastData[3] = (ShowData[1][i] << (16 - temp)) | (ShowData[2][i] >> temp);
214 3 LastData[2] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
215 3 LastData[1] = ShowData[0][i] >> temp;
216 3 }
217 2 else
218 2 {
219 3 LastData[3] = (ShowData[2][i] << (16 - temp)) | (ShowData[3][i] >> temp);
220 3 LastData[2] = (ShowData[1][i] << (16 - temp)) | (ShowData[2][i] >> temp);
221 3 LastData[1] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
222 3 LastData[0] = ShowData[0][i] >> temp;
223 3 }
224 2
225 2 MR = 0; //清除端口数据
226 2 clock = 0;
227 2 _nop_();
228 2 _nop_();
229 2 clock = 1;
230 2 MR = 1;
231 2
232 2 TranCon = i; //片选信号
233 2 for(j=0; j<4; j++)
234 2 {
235 3 SerSend((uint8)(LastData[j]>>8));
236 3 SerSend((uint8)LastData[j]);
237 3 }
238 2 clock=0; //锁存
239 2 nop3;
240 2 nop3;
C51 COMPILER V8.08 POINTLED 07/31/2008 16:43:00 PAGE 5
241 2 clock=1;
242 2
243 2 Delay(1);
244 2 }
245 1
246 1 if(MoveState >= 63)
247 1 {
248 2 TR1 = 0;
249 2 DisplayAll();
250 2 DisplayAll();
251 2 DisplayAll();
252 2 DisplayAll();
253 2 TR1 = 1;
254 2 }
255 1 }
256
257 /*----------------------------------------
258 **函数功能:定时器0的中断处理
259 **输入:无
260 **输出:无
261 -----------------------------------------*/
262 void Timer0_int() interrupt 1 using 1
263 {
264 1 static flag=0;
265 1
266 1 flag++;
267 1 if (MODE == 1)
268 1 {
269 2 if(flag == KeepTime)
270 2 {
271 3 flag=0;
272 3 State++; //汉字状态标志
273 3 State %= 16;
274 3 }
275 2 }
276 1
277 1 TR0 = 0;
278 1 TH0 += 0x3C;
279 1 TL0 += 0xB7;
280 1 TR0 = 1;
281 1 }
282
283 /*----------------------------------------
284 **函数功能:定时器1的中断处理
285 **输入:无
286 **输出:无
287 -----------------------------------------*/
288 void Timer1_int() interrupt 3 using 2
289 {
290 1 static flag=0;
291 1
292 1 flag++;
293 1 if(flag == KeepTime)
294 1 {
295 2 flag = 0;
296 2 MoveState++;
297 2 MoveState %= 64;
298 2 }
299 1
300 1 TR1 = 0;
301 1 TH1 += 0x3C;
302 1 TL1 += 0xB7;
C51 COMPILER V8.08 POINTLED 07/31/2008 16:43:00 PAGE 6
303 1 TR1 = 1;
304 1 }
305
306 /*-----------------------------------------
307 **函数功能:外中断0处理函数
308 **输入:无
309 **输出:无
310 ------------------------------------------*/
311 void Out0_int() interrupt 0
312 {
313 1 MODE++;
314 1 MODE %= 3;
315 1 switch(MODE)
316 1 {
317 2 case 0:
318 2 TR0 = 0;
319 2 TR1 = 0;
320 2 break;
321 2 case 1:
322 2 TR0 = 1;
323 2 TR1 = 0;
324 2 break;
325 2 case 2:
326 2 TR0 = 0;
327 2 TR1 = 1;
328 2 break;
329 2 default:
330 2 break;
331 2 }
332 1 }
333
334 /*-----------------------------------------
335 **函数功能:延时
336 ------------------------------------------*/
337 void Delay(uint8 count)
338 {
339 1 uint8 i=80;
340 1 while(count--)
341 1 for(;i>0;i--);
342 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1274 ----
CONSTANT SIZE = 128 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 11
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 + -