?? delay_t0.lst
字號:
C51 COMPILER V6.10 DELAY_T0 03/13/2001 18:07:20 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE DELAY_T0
OBJECT MODULE PLACED IN .\DELAY_T0.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\DELAY_T0.C OPTIMIZE(6,SIZE) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------*-
2
3 Delay_T0.C (v1.00)
4
5 ------------------------------------------------------------------
6
7 Simple hardware delays based on T0.
8
9
10 COPYRIGHT
11 ---------
12
13 This code is from the book:
14
15 PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
16 [Pearson Education, 2001; ISBN: 0-201-33138-1].
17
18 This code is copyright (c) 2001 by Michael J. Pont.
19
20 See book for copyright details and other information.
21
22 -*------------------------------------------------------------------*/
23
24 #include "Main.H"
25
26 // ------ Private constants ----------------------------------------
27
28 // Timer preload values for use in simple (hardware) delays
29 // - Timers are 16-bit, manual reload ('one shot').
30 //
31 // NOTE: These values are portable but timings are *approximate*
32 // and *must* be checked by hand if accurate timing is required.
33 //
34 // Define Timer 0 / Timer 1 reload values for ~1 msec delay
35 // NOTE: Adjustment made to allow for function call overheard etc.
36 #define PRELOAD01 (65536 - (tWord)(OSC_FREQ / (OSC_PER_INST * 1063)))
37 #define PRELOAD01H (PRELOAD01 / 256)
38 #define PRELOAD01L (PRELOAD01 % 256)
39
40 /*------------------------------------------------------------------*-
41
42 Hardware_Delay_T0()
43
44 Function to generate N millisecond delay (approx).
45
46 Uses Timer 0 (easily adapted to Timer 1).
47
48 -*------------------------------------------------------------------*/
49 void Hardware_Delay_T0(const tWord N)
50 {
51 1 tWord ms;
52 1
53 1 // Configure Timer 0 as a 16-bit timer
54 1 TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
55 1 TMOD |= 0x01; // Set required T0 bits (T1 left unchanged)
C51 COMPILER V6.10 DELAY_T0 03/13/2001 18:07:20 PAGE 2
56 1
57 1 ET0 = 0; // No interupts
58 1
59 1 // Delay value is *approximately* 1 ms per loop
60 1 for (ms = 0; ms < N; ms++)
61 1 {
62 2 TH0 = PRELOAD01H;
63 2 TL0 = PRELOAD01L;
64 2
65 2 TF0 = 0; // clear overflow flag
66 2 TR0 = 1; // start timer 0
67 2
68 2 while (TF0 == 0); // Loop until Timer 0 overflows (TF0 == 1)
69 2
70 2 TR0 = 0; // Stop Timer 0
71 2 }
72 1 }
73
74 /*------------------------------------------------------------------*-
75 ---- END OF FILE -------------------------------------------------
76 -*------------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 41 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
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 + -