📄 timer.lst
字号:
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN ..\hex\timer.obj
COMPILER INVOKED BY: D:\Program Files\KEIL_UV3\C51\BIN\C51.EXE timer.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND CO
-DE OBJECT(..\hex\timer.obj)
line level source
1 // *******************************************
2
3 // *******************************************
4
5 #include "timer.h"
6 #include "mcu.h"
7
8 unsigned char th0_def;
9 unsigned int timer_tick;
10 xdata char timer_done;
11 xdata unsigned char hh, mm, ss;
12
13 void init_timer(unsigned char intval)
14 {
15 1 stop_timer();
16 1 th0_def = intval;
17 1 TH0 = intval;
18 1 TL0 = 0x00;
19 1 TMOD = TMOD & 0xf0 | 0x01;
20 1 ET0 = 1;
21 1 timer_done = 0;
22 1
23 1 timer_tick = 0;
24 1 hh = 0;
25 1 mm = 0;
26 1 ss = 0;
27 1 }
28
29 void timer_isr(void)
30 {
31 1 timer_tick++;
32 1 stop_timer();
33 1 TH0 = th0_def;
34 1 TL0 = 0x00;
35 1 start_timer();
36 1 if (!timer_done) {
37 2 timer_done = 1;
38 2 }
39 1 if (timer_tick % 125 == 0) {
40 2 if (timer_tick >= (125*524))
41 2 timer_tick = 0;
42 2 ss++;
43 2 if (ss > 59) {
44 3 ss = 0;
45 3 mm++;
46 3 if(mm > 59) {
47 4 mm = 0;
48 4 hh++;
49 4 }
50 3 }
51 2 }
52 1 }
53
54 void delay_ms(int n)
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 2
55 {
56 1 int i, j;
57 1
58 1 for (i=0; i<n; i++) {
59 2 for (j=0; j<DELAY_FACTOR; j++)
60 2 ;
61 2 }
62 1 }
63
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _init_timer (BEGIN)
; SOURCE LINE # 13
;---- Variable 'intval' assigned to Register 'R7' ----
; SOURCE LINE # 14
; SOURCE LINE # 15
0000 C28C CLR TR0
; SOURCE LINE # 16
0002 900000 R MOV DPTR,#th0_def
0005 EF MOV A,R7
0006 F0 MOVX @DPTR,A
; SOURCE LINE # 17
0007 F58C MOV TH0,A
; SOURCE LINE # 18
0009 E4 CLR A
000A F58A MOV TL0,A
; SOURCE LINE # 19
000C E589 MOV A,TMOD
000E 54F0 ANL A,#0F0H
0010 4401 ORL A,#01H
0012 F589 MOV TMOD,A
; SOURCE LINE # 20
0014 D2A9 SETB ET0
; SOURCE LINE # 21
0016 E4 CLR A
0017 A3 INC DPTR
0018 F0 MOVX @DPTR,A
; SOURCE LINE # 23
0019 A3 INC DPTR
001A F0 MOVX @DPTR,A
001B A3 INC DPTR
001C F0 MOVX @DPTR,A
; SOURCE LINE # 24
001D A3 INC DPTR
001E F0 MOVX @DPTR,A
; SOURCE LINE # 25
001F A3 INC DPTR
0020 F0 MOVX @DPTR,A
; SOURCE LINE # 26
0021 A3 INC DPTR
0022 F0 MOVX @DPTR,A
; SOURCE LINE # 27
0023 22 RET
; FUNCTION _init_timer (END)
; FUNCTION timer_isr (BEGIN)
; SOURCE LINE # 29
; SOURCE LINE # 30
; SOURCE LINE # 31
0000 900000 R MOV DPTR,#timer_tick
0003 E4 CLR A
0004 75F001 MOV B,#01H
0007 120000 E LCALL ?C?IILDX
; SOURCE LINE # 32
000A C28C CLR TR0
; SOURCE LINE # 33
000C 900000 R MOV DPTR,#th0_def
000F E0 MOVX A,@DPTR
0010 F58C MOV TH0,A
; SOURCE LINE # 34
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 4
0012 E4 CLR A
0013 F58A MOV TL0,A
; SOURCE LINE # 35
0015 D28C SETB TR0
; SOURCE LINE # 36
0017 A3 INC DPTR
0018 E0 MOVX A,@DPTR
0019 7002 JNZ ?C0011
; SOURCE LINE # 37
001B 04 INC A
001C F0 MOVX @DPTR,A
; SOURCE LINE # 38
001D ?C0011:
; SOURCE LINE # 39
001D 900000 R MOV DPTR,#timer_tick
0020 E0 MOVX A,@DPTR
0021 FA MOV R2,A
0022 A3 INC DPTR
0023 E0 MOVX A,@DPTR
0024 FB MOV R3,A
0025 7C00 MOV R4,#00H
0027 7D7D MOV R5,#07DH
0029 FF MOV R7,A
002A AE02 MOV R6,AR2
002C 120000 E LCALL ?C?UIDIV
002F ED MOV A,R5
0030 4C ORL A,R4
0031 7032 JNZ ?C0016
; SOURCE LINE # 40
0033 C3 CLR C
0034 EB MOV A,R3
0035 94DC SUBB A,#0DCH
0037 EA MOV A,R2
0038 94FF SUBB A,#0FFH
003A 4007 JC ?C0013
; SOURCE LINE # 41
003C E4 CLR A
003D 900000 R MOV DPTR,#timer_tick
0040 F0 MOVX @DPTR,A
0041 A3 INC DPTR
0042 F0 MOVX @DPTR,A
0043 ?C0013:
; SOURCE LINE # 42
0043 900000 R MOV DPTR,#ss
0046 E0 MOVX A,@DPTR
0047 04 INC A
0048 F0 MOVX @DPTR,A
; SOURCE LINE # 43
0049 E0 MOVX A,@DPTR
004A D3 SETB C
004B 943B SUBB A,#03BH
004D 4016 JC ?C0016
; SOURCE LINE # 44
004F E4 CLR A
0050 F0 MOVX @DPTR,A
; SOURCE LINE # 45
0051 900000 R MOV DPTR,#mm
0054 E0 MOVX A,@DPTR
0055 04 INC A
0056 F0 MOVX @DPTR,A
; SOURCE LINE # 46
0057 E0 MOVX A,@DPTR
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 5
0058 D3 SETB C
0059 943B SUBB A,#03BH
005B 4008 JC ?C0016
; SOURCE LINE # 47
005D E4 CLR A
005E F0 MOVX @DPTR,A
; SOURCE LINE # 48
005F 900000 R MOV DPTR,#hh
0062 E0 MOVX A,@DPTR
0063 04 INC A
0064 F0 MOVX @DPTR,A
; SOURCE LINE # 49
; SOURCE LINE # 50
; SOURCE LINE # 51
; SOURCE LINE # 52
0065 ?C0016:
0065 22 RET
; FUNCTION timer_isr (END)
; FUNCTION _delay_ms (BEGIN)
; SOURCE LINE # 54
;---- Variable 'n' assigned to Register 'R6/R7' ----
; SOURCE LINE # 55
; SOURCE LINE # 58
;---- Variable 'i' assigned to Register 'R4/R5' ----
0000 E4 CLR A
0001 FD MOV R5,A
0002 FC MOV R4,A
0003 ?C0017:
0003 C3 CLR C
0004 ED MOV A,R5
0005 9F SUBB A,R7
0006 EE MOV A,R6
0007 6480 XRL A,#080H
0009 F8 MOV R0,A
000A EC MOV A,R4
000B 6480 XRL A,#080H
000D 98 SUBB A,R0
000E 5015 JNC ?C0023
; SOURCE LINE # 59
;---- Variable 'j' assigned to Register 'R2/R3' ----
0010 E4 CLR A
0011 FB MOV R3,A
0012 FA MOV R2,A
0013 ?C0020:
0013 0B INC R3
0014 BB0001 CJNE R3,#00H,?C0024
0017 0A INC R2
0018 ?C0024:
0018 EB MOV A,R3
0019 64DE XRL A,#0DEH
001B 4A ORL A,R2
001C 70F5 JNZ ?C0020
; SOURCE LINE # 61
001E ?C0019:
001E 0D INC R5
001F BD0001 CJNE R5,#00H,?C0025
0022 0C INC R4
0023 ?C0025:
0023 80DE SJMP ?C0017
; SOURCE LINE # 62
0025 ?C0023:
C51 COMPILER V7.50 TIMER 10/03/2008 17:53:18 PAGE 6
0025 22 RET
; FUNCTION _delay_ms (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 176 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 7 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -