📄 stimer.ls1
字号:
224
---- 225 RSEG ?DT?GetTickCount?STIMER
0000 226 cyl?444: DS 2
227
---- 228 RSEG ?DT?GetTickCount?STIMER
0002 229 ms?445: DS 2
230
---- 231 RSEG ?DT?GetTenTickCount?STIMER
0000 232 tmp?546: DS 2
233
---- 234 RSEG ?DT?_InitTimer?STIMER
0000 235 ltmp?648: DS 4
236
---- 237 RSEG ?DT?_StartCLKO?STIMER
0000 238 rld?953: DS 2
239
---- 240 RSEG ?C_INITSEG
0000 03 241 DB 003H
0001 00 F 242 DB Interval
0002 0399 243 DW 00399H
0004 24 244 DB 024H
245
0005 04 246 DB 004H
0006 00 F 247 DB TStatus
0007 0000 248 DW 00000H
0009 0000 249 DB 000H,000H
250
251
000B 01 252 DB 001H
000C 00 F 253 DB LedTick
000D 00 254 DB 000H
255
A51 MACRO ASSEMBLER STIMER 03/13/2009 15:44:55 PAGE 5
000E 01 256 DB 001H
000F 00 F 257 DB LedCnt
0010 00 258 DB 000H
259
0011 C100 F 260 DB 0C1H, LedFlash + 000H ; bit-init
261
0013 01 262 DB 001H
0014 00 F 263 DB BuzzerTick
0015 00 264 DB 000H
265
0016 01 266 DB 001H
0017 00 F 267 DB BuzzerCnt
0018 00 268 DB 000H
269
0019 01 270 DB 001H
001A 00 F 271 DB BuzzerTimes
001B 00 272 DB 000H
273
001C C100 F 274 DB 0C1H, fSetting + 000H ; bit-init
275
276 ; //////////////////////////////////////////////
277 ; // timer.c //
278 ; // 1毫秒系统时钟 //
279 ; // 自定义时间长度中断调用 //
280 ; // 预定义时间长度中断调用 //
281 ; // design by: 刘俐训 //
282 ; //////////////////////////////////////////////
283 ;
284 ; #include <reg52.h>
285 ; #include "stimer.h"
286 ; #include <v51rx2.h>
287 ; #include "t_event.h"
288 ; #include "intrsc.h"
289 ; #include "wdt.h"
290 ;
291 ; #ifndef enable
292 ; #define enable() EA=1
293 ; #define disable() EA=0
294 ; #endif
295 ;
296 ; #ifdef BUZZEROUT
297 ; #ifndef BZFRQ
298 ; #define BZFRQ
299 ; #define BZFRQ0 0
300 ; #define BZFRQ2K 2
301 ; #define BZFRQ4K 4
302 ; #endif
303 ; #endif
304 ;
305 ; #ifndef NULL
306 ; #define NULL (void *)0
307 ; #endif
308 ;
309 ; #define USER_TIMER TL0
310 ; #define SYS_TIMER TH0
311 ; #define TF_USER TF0
312 ; #define TF_SYS TF1
313 ;
314 ;
315 ; typedef struct _INTERVAL
316 ; {
317 ; unsigned int mscycles;
318 ; unsigned char tenmsloops;
319 ; }INTERVAL;
320 ;
321 ; typedef struct _TSTATUS
A51 MACRO ASSEMBLER STIMER 03/13/2009 15:44:55 PAGE 6
322 ; {
323 ; union _TICK
324 ; {
325 ; unsigned int cycles;
326 ; unsigned char loops;
327 ; }Tick;
328 ; unsigned int ms;
329 ; }TSTATUS;
330 ;
331 ; static INTERVAL data Interval = {921, 36};
332 ; static volatile TSTATUS data TStatus = {0};
333 ;
334 ; static unsigned char data LedTick = 0;
335 ; static unsigned char data LedCnt = 0;
336 ; static bit LedFlash = 0;
337 ;
338 ; static unsigned char data UserReload;
339 ; static unsigned long SysClk;
340 ;
341 ; /*
342 ; static unsigned char data Led1Tick = 0;
343 ; static unsigned char data Led1Cnt = 0;
344 ; static bit Led1Flash = 0;
345 ; */
346 ;
347 ; static unsigned char data BuzzerTick = 0;
348 ; static unsigned char data BuzzerCnt = 0;
349 ; static unsigned char data BuzzerTimes = 0;
350 ; static bit fSetting = 0;
351 ;
---- 352 CSEG AT 0000BH
000B 020000 F 353 LJMP IntUserTimer
354
355 ; void IntUserTimer(void) interrupt TF0_VECTOR using 2
356
---- 357 RSEG ?PR?IntUserTimer?STIMER
358 USING 2
0000 359 IntUserTimer:
0000 C0E0 360 PUSH ACC
0002 C0F0 361 PUSH B
0004 C083 362 PUSH DPH
0006 C082 363 PUSH DPL
0008 C0D0 364 PUSH PSW
365 USING 2
000A 75D010 366 MOV PSW,#010H
367 ; SOURCE LINE # 77
368 ; {
369 ; TL0 += UserReload;
370 ; SOURCE LINE # 79
000D E500 F 371 MOV A,UserReload
000F 258A 372 ADD A,TL0
0011 F58A 373 MOV TL0,A
374 ; TimerEvent();
375 ; SOURCE LINE # 80
0013 120000 F 376 LCALL TimerEvent
377 ; }
378 ; SOURCE LINE # 81
0016 D0D0 379 POP PSW
0018 D082 380 POP DPL
001A D083 381 POP DPH
001C D0F0 382 POP B
001E D0E0 383 POP ACC
0020 32 384 RETI
385 ; END OF IntUserTimer
386
---- 387 CSEG AT 0001BH
A51 MACRO ASSEMBLER STIMER 03/13/2009 15:44:55 PAGE 7
001B 020000 F 388 LJMP IntSysTimer
389
390 ;
391 ; void IntSysTimer( void ) interrupt TF1_VECTOR using 1
392
---- 393 RSEG ?PR?IntSysTimer?STIMER
394 USING 1
0000 395 IntSysTimer:
0000 C0E0 396 PUSH ACC
0002 C0D0 397 PUSH PSW
398 ; SOURCE LINE # 83
399 ; {
400 ; TStatus.Tick.loops ++;
401 ; SOURCE LINE # 85
0004 0500 F 402 INC TStatus
403 ; if(TStatus.Tick.loops > Interval.tenmsloops)
404 ; SOURCE LINE # 86
0006 E500 F 405 MOV A,TStatus
0008 D3 406 SETB C
0009 9500 F 407 SUBB A,Interval+02H
000B 4039 408 JC ?C0008
409 ; {
410 ; SOURCE LINE # 87
411 ; TStatus.Tick.loops = 0;
412 ; SOURCE LINE # 88
000D 750000 F 413 MOV TStatus,#00H
414 ; TStatus.ms += 10;
415 ; SOURCE LINE # 89
0010 740A 416 MOV A,#0AH
0012 2500 F 417 ADD A,TStatus+03H
0014 F500 F 418 MOV TStatus+03H,A
0016 E4 419 CLR A
0017 3500 F 420 ADDC A,TStatus+02H
0019 F500 F 421 MOV TStatus+02H,A
422 ; if(LedFlash)
423 ; SOURCE LINE # 90
001B 30000E F 424 JNB LedFlash,?C0003
425 ; {
426 ; SOURCE LINE # 91
427 ; LedCnt ++;
428 ; SOURCE LINE # 92
001E 0500 F 429 INC LedCnt
430 ; if(LedCnt >= LedTick)
431 ; SOURCE LINE # 93
0020 E500 F 432 MOV A,LedCnt
0022 C3 433 CLR C
0023 9500 F 434 SUBB A,LedTick
0025 4005 435 JC ?C0003
436 ; {
437 ; SOURCE LINE # 94
438 ; LedCnt = 0;
439 ; SOURCE LINE # 95
0027 750000 F 440 MOV LedCnt,#00H
441 ; LED = ~LED;
442 ; SOURCE LINE # 96
002A B293 443 CPL P1_3
444 ; }
445 ; SOURCE LINE # 97
446 ; }
447 ; SOURCE LINE # 98
002C 448 ?C0003:
449 ;
450 ; /*
451 ; if(Led1Flash)
452 ; {
453 ; Led1Cnt ++;
A51 MACRO ASSEMBLER STIMER 03/13/2009 15:44:55 PAGE 8
454 ; if(Led1Cnt >= Led1Tick)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -