📄 prm_hard.lst
字号:
C51 COMPILER V6.10 PRM_HARD 04/19/2001 10:39:57 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE PRM_HARD
OBJECT MODULE PLACED IN .\PRM_HARD.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\PRM_HARD.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------*-
2
3 PRM_Hard.C (v1.00)
4
5 ------------------------------------------------------------------
6
7 Simple library demonstrating hardware (T2) pulse-rate modulation.
8
9 See Chapter 31 for details.
10
11
12 COPYRIGHT
13 ---------
14
15 This code is from the book:
16
17 PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
18 [Pearson Education, 2001; ISBN: 0-201-33138-1].
19
20 This code is copyright (c) 2001 by Michael J. Pont.
21
22 See book for copyright details and other information.
23
24 -*------------------------------------------------------------------*/
25
26 #include "Main.h"
27
28 // ------ Public variable definitions ------------------------------
29
30 tWord PRM_reload_G = 0;
31
32 /*------------------------------------------------------------------*-
33
34 PRM_Hardware_Init()
35
36 Start PRM.
37
38 -*------------------------------------------------------------------*/
39 void PRM_Hardware_Init(void)
40 {
41 1 T2CON &= 0xFD; // Clear *only* C /T2 bit
42 1 T2MOD |= 0x02; // Set T2OE bit (omit in basic 8052 clone)
43 1
44 1 // Start at lowest frequency (~45Hz with 12MHz xtal)
45 1 TL2 = 0x00; // Timer 2 low byte
46 1 TH2 = 0x00; // Timer 2 high byte
47 1 RCAP2L = 0x00; // Timer 2 reload capture register, low byte
48 1 RCAP2H = 0x00; // Timer 2 reload capture register, high byte
49 1
50 1 ET2 = 0; // No interrupt.
51 1
52 1 TR2 = 1; // Start timer 2
53 1 }
54
55
C51 COMPILER V6.10 PRM_HARD 04/19/2001 10:39:57 PAGE 2
56 /*------------------------------------------------------------------*-
57
58 PRM_Hardware_Update()
59
60 Call this function only when you need to change the pulse rate.
61
62 See text for details of resulting PRM frequency.
63
64 -*------------------------------------------------------------------*/
65 void PRM_Hardware_Update(void)
66 {
67 1 TR2 = 0;
68 1
69 1 TL2 = PRM_reload_G % 256;
70 1 RCAP2L = TL2;
71 1 TH2 = PRM_reload_G / 256;
72 1 RCAP2H = TH2;
73 1
74 1 TR2 = 1;
75 1 }
76
77 /*------------------------------------------------------------------*-
78 ---- END OF FILE -------------------------------------------------
79 -*------------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 38 ----
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 + -