📄 timrpwm.lst
字号:
C51 COMPILER V8.16 TIMRPWM 02/17/2009 20:15:18 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE TIMRPWM
OBJECT MODULE PLACED IN .\bin\TimrPWM.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE src\TimrPWM.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\
-bin\TimrPWM.lst) OBJECT(.\bin\TimrPWM.obj)
line level source
1 #include<reg51.h>
2 #include"inc/define.h"
3 #include"inc/config.h"
4 #include"inc/timrpwm.h"
5
6
7 static u8 tmr_sel;
8 /* PWM输出引脚电平指示 1:高 0:低 */
9 u8 pin_level = 1;
10
11 u8 hgh_h,hgh_l;
12 u8 low_h,low_l;
13
14 /******************************************************
15 *说明:对用于产生PWM的定时器进行初始化
16 *函数名称:pwm_init
17 *参数:
18 *tmr:指定用于产生PWM的定时器 0:定时器0 其他:定时器1
19 *baud:脉冲频率
20 *rate:脉冲占空比
21 *返回值:
22 *其他:
23 *********************************************************/
24 void pwm_init(u8 tmr,u16 baud,u8 rate)
25 {
26 1 hgh_h = (u32)(65536 - (F_CPU/baud)*(rate/100.0))/256;
27 1 hgh_l = (u32)(65536 - (F_CPU/baud)*(rate/100.0))%256;
28 1 low_h = (u32)(65536 - (F_CPU/baud)*(1 - rate/100.0))/256;
29 1 low_l = (u32)(65536 - (F_CPU/baud)*(1 - rate/100.0))%256;
30 1
31 1 if(1==tmr || 0==tmr)
32 1 tmr_sel = tmr;
33 1 else
34 1 tmr_sel = 1;
35 1 if(1 == tmr_sel)
36 1 {
37 2 TMOD &= 0x0F;
38 2 TMOD |= 0x10; /* 定时器1方式1:16位手动装载模式 */
39 2 if(1 == pin_level)
40 2 {
41 3 TH1 = hgh_h;
42 3 TL1 = hgh_l;
43 3 }
44 2 else
45 2 {
46 3 TH1 = low_h;
47 3 TL1 = low_l;
48 3 }
49 2
50 2 EA = 1; /* 开启全局中断 */
51 2 ET1 = 1; /* 开启定时器1中断 */
52 2 TR1 = 1; /* 启动定时器1 */
53 2 }
54 1 else /* 0 == tmr_sel */
C51 COMPILER V8.16 TIMRPWM 02/17/2009 20:15:18 PAGE 2
55 1 {
56 2 TMOD &= 0xF0;
57 2 TMOD |= 0x01; /* 定时器0方式1:16位手动装载模式 */
58 2 if(1 == pin_level)
59 2 {
60 3 TH0 = hgh_h;
61 3 TL0 = hgh_l;
62 3 }
63 2 else
64 2 {
65 3 TH0 = low_h;
66 3 TL0 = low_l;
67 3 }
68 2
69 2 EA = 1; /* 开启全局中断 */
70 2 ET0 = 1; /* 开启定时器0中断 */
71 2 TR0 = 1; /* 启动定时器0 */
72 2 }
73 1 }
74
75
76 /*****************************************************
77 *说明:使用定时器0产生PWM时起作用
78 *函数名称:Timer0_ISR
79 *参数:
80 *返回值:
81 *其他:
82 *******************************************************
83 void Timer0_ISR(void) interrupt 1
84 {
85 if(0 == pin_level)
86 {
87 pin_level = 1;
88 TH0 = low_h;
89 TL0 = low_l;
90 }
91 else
92 {
93 pin_level = 0;
94 TH0 = hgh_h;
95 TL0 = hgh_l;
96 }
97
98 PWMPort = (pin_level << PWM_PIN );
99 }
100 *******************************************************/
101 /*****************************************************
102 *说明:使用定时器1产生PWM时起作用
103 *函数名称:Timer1_ISR
104 *参数:
105 *返回值:
106 *其他:
107 *******************************************************/
108 void Timer1_ISR(void) interrupt 3
109 {
110 1 if(0 == pin_level)
111 1 {
112 2 pin_level = 1;
113 2 TH1 = low_h;
114 2 TL1 = low_l;
115 2 }
116 1 else
C51 COMPILER V8.16 TIMRPWM 02/17/2009 20:15:18 PAGE 3
117 1 {
118 2 pin_level = 0;
119 2 TH1 = hgh_h;
120 2 TL1 = hgh_l;
121 2 }
122 1
123 1 PWMPort = (pin_level << PWM_PIN);
124 1
125 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 514 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 4
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 + -