📄 upsd_timer.lst
字号:
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE UPSD_TIMER
OBJECT MODULE PLACED IN upsd_timer.OBJ
COMPILER INVOKED BY: E:\KEIL\C51\BIN\C51.EXE upsd_timer.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------------------
2 uPSD_TIMER.C
3
4 uPSD Timer0 Device Driver Functions
5 06/2002 Ver 0.1 - Initial Version
6
7 Copyright 2002 ST Microelectronics
8 This example demo code is provided as is and has no warranty,
9 implied or otherwise. You are free to use/modify any of the provided
10 code at your own risk in your applications with the expressed limitation
11 of liability (see below) so long as your product using the code contains
12 at least one uPSD products (device).
13
14 LIMITATION OF LIABILITY: NEITHER STMicroelectronics NOR ITS VENDORS OR
15 AGENTS SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
16 INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
17 CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
18 OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
19 ------------------------------------------------------------------------------*/
20
21 #pragma CODE // include assembler listing in .lst file
22
23 #include "upsd3200.h"
24 #include "upsd_timer.h"
25
26 /*------------------------------------------------------------------------------
27 Local Macro and Manifest Constant Declarations
28 ------------------------------------------------------------------------------*/
29 //#define TIMER0_COUNT 0xFACA // ((10000h-TC)*(Period*12)) - 17)= 10mS
30 #define TIMER0_COUNT 0xF448 // for DK3200 (36MHz board)
31
32 // 16Mhz = 0xcbfc, (0xfaca=1mS)
33 // 12mHZ = 0xd8ff
34 // 11.059Mhz = 0xdb62
35 // 36.00 Mhz = 0x8ae0 (0xf448=1mS)
36
37 /*------------------------------------------------------------------------------
38 Local Variable Declarations
39 ------------------------------------------------------------------------------*/
40 static unsigned timer0_tick;
41
42 /*------------------------------------------------------------------------------
43 static void timer0_isr (void);
44
45 This function is an interrupt service routine for TIMER 0. It should never
46 be called by a C or assembly function. It will be executed automatically
47 when TIMER 0 overflows.
48 ------------------------------------------------------------------------------*/
49 static void timer0_isr (void) interrupt 1 using 1 // 10mS Timer Interrupt Update
50 {
51 1 TR0 = 0; // stop timer 0
52 1 TL0 = TL0 + (TIMER0_COUNT & 0x00FF); // Update LSB
53 1 TH0 = TH0 + (TIMER0_COUNT >> 8); // Update MSB
54 1 TR0 = 1; // start timer 0
55 1 timer0_tick++; // Increment the timer tick.. every 10mS
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 2
56 1 }
57
58 /*------------------------------------------------------------------------------
59 void timer0_initialize (void);
60
61 This function enables TIMER 0. TIMER 0 will generate a synchronous interrupt
62 once every 100Hz (10mS).
63 ------------------------------------------------------------------------------*/
64 void timer0_initialize (void) // Enable TMR0 for 10mS interrupts
65 {
66 1 EA = 0; // disable interrupts
67 1 timer0_tick = 0; // initialize tick value
68 1 TR0 = 0; // stop timer 0
69 1 TMOD &= ~0x0F; // clear timer 0 mode bits
70 1 TMOD |= 0x01; // put timer 0 into 16-bit no prescale
71 1 TL0 = (TIMER0_COUNT & 0x00FF); // set LSB timeout
72 1 TH0 = (TIMER0_COUNT >> 8); // set MSB timeout
73 1 PT0 = 0; // set low priority for timer 0
74 1 ET0 = 1; // enable timer 0 interrupt
75 1 TR0 = 1; // start timer 0
76 1 EA = 1; // enable interrupts
77 1 }
78
79 /*------------------------------------------------------------------------------
80 unsigned timer0_count (void);
81
82 This function returns the current timer0 tick count.
83 ------------------------------------------------------------------------------*/
84 unsigned timer0_count (void)
85 {
86 1 unsigned t;
87 1 EA = 0;
88 1 t = timer0_tick;
89 1 EA = 1;
90 1 return(t);
91 1 }
92
93
94 /*------------------------------------------------------------------------------
95 void timer0_delay (
96 unsigned count);
97
98 This function waits for 'count' timer ticks to pass.
99 ------------------------------------------------------------------------------*/
100 void timer0_delay (unsigned int count)
101 {
102 1 unsigned start_count;
103 1
104 1 start_count = timer0_count (); /* get the start count */
105 1
106 1 while ((timer0_count () - start_count) <= count) /* wait for count "ticks" */
107 1 {
108 2 }
109 1 }
110
111
112 void delay_10ms()
113 {
114 1 timer0_delay(10);
115 1 }
116
117 /*
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 3
118 void delay_1sec(void)
119 {
120 timer0_delay(1000);
121 }
122
123 void delay_2sec(void)
124 {
125 delay_1sec();
126 delay_1sec();
127 }
128
129 void delay_10sec(void)
130 {
131 delay_2sec();
132 delay_2sec();
133 delay_2sec();
134 delay_2sec();
135 delay_2sec();
136 }
137
138 void delay_0_5sec(void)
139 {
140 timer0_delay(500);
141 }
142
143 void delay_0_1sec(void)
144 {
145 timer0_delay(100);
146 }
147 */
148
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION timer0_isr (BEGIN)
0000 C0E0 PUSH ACC
0002 C0D0 PUSH PSW
; SOURCE LINE # 49
; SOURCE LINE # 51
0004 C28C CLR TR0
; SOURCE LINE # 52
0006 7448 MOV A,#048H
0008 258A ADD A,TL0
000A F58A MOV TL0,A
; SOURCE LINE # 53
000C 74F4 MOV A,#0F4H
000E 258C ADD A,TH0
0010 F58C MOV TH0,A
; SOURCE LINE # 54
0012 D28C SETB TR0
; SOURCE LINE # 55
0014 0500 R INC timer0_tick+01H
0016 E500 R MOV A,timer0_tick+01H
0018 7002 JNZ ?C0008
001A 0500 R INC timer0_tick
001C ?C0008:
; SOURCE LINE # 56
001C D0D0 POP PSW
001E D0E0 POP ACC
0020 32 RETI
; FUNCTION timer0_isr (END)
; FUNCTION timer0_initialize (BEGIN)
; SOURCE LINE # 64
; SOURCE LINE # 65
; SOURCE LINE # 66
0000 C2AF CLR EA
; SOURCE LINE # 67
0002 E4 CLR A
0003 F500 R MOV timer0_tick,A
0005 F500 R MOV timer0_tick+01H,A
; SOURCE LINE # 68
0007 C28C CLR TR0
; SOURCE LINE # 69
0009 5389F0 ANL TMOD,#0F0H
; SOURCE LINE # 70
000C 438901 ORL TMOD,#01H
; SOURCE LINE # 71
000F 758A48 MOV TL0,#048H
; SOURCE LINE # 72
0012 758CF4 MOV TH0,#0F4H
; SOURCE LINE # 73
0015 C2B9 CLR PT0
; SOURCE LINE # 74
0017 D2A9 SETB ET0
; SOURCE LINE # 75
0019 D28C SETB TR0
; SOURCE LINE # 76
001B D2AF SETB EA
; SOURCE LINE # 77
001D 22 RET
; FUNCTION timer0_initialize (END)
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 5
; FUNCTION timer0_count (BEGIN)
; SOURCE LINE # 84
; SOURCE LINE # 85
; SOURCE LINE # 87
0000 C2AF CLR EA
; SOURCE LINE # 88
;---- Variable 't' assigned to Register 'R6/R7' ----
0002 AF00 R MOV R7,timer0_tick+01H
0004 AE00 R MOV R6,timer0_tick
; SOURCE LINE # 89
0006 D2AF SETB EA
; SOURCE LINE # 90
; SOURCE LINE # 91
0008 ?C0003:
0008 22 RET
; FUNCTION timer0_count (END)
; FUNCTION _timer0_delay (BEGIN)
; SOURCE LINE # 100
;---- Variable 'count' assigned to Register 'R4/R5' ----
0000 AD07 MOV R5,AR7
0002 AC06 MOV R4,AR6
; SOURCE LINE # 101
; SOURCE LINE # 104
0004 120000 R LCALL timer0_count
;---- Variable 'start_count' assigned to Register 'R2/R3' ----
0007 AB07 MOV R3,AR7
0009 AA06 MOV R2,AR6
000B ?C0004:
; SOURCE LINE # 106
000B 120000 R LCALL timer0_count
000E C3 CLR C
000F EF MOV A,R7
0010 9B SUBB A,R3
0011 FF MOV R7,A
0012 EE MOV A,R6
0013 9A SUBB A,R2
0014 FE MOV R6,A
0015 D3 SETB C
0016 EF MOV A,R7
0017 9D SUBB A,R5
0018 EE MOV A,R6
0019 9C SUBB A,R4
001A 40EF JC ?C0004
; SOURCE LINE # 107
; SOURCE LINE # 108
; SOURCE LINE # 109
001C ?C0006:
001C 22 RET
; FUNCTION _timer0_delay (END)
; FUNCTION delay_10ms (BEGIN)
; SOURCE LINE # 112
; SOURCE LINE # 113
; SOURCE LINE # 114
0000 7F0A MOV R7,#0AH
0002 7E00 MOV R6,#00H
0004 020000 R LJMP _timer0_delay
; FUNCTION delay_10ms (END)
C51 COMPILER V7.00 UPSD_TIMER 11/13/2002 09:49:12 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 108 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -