📄 pwm_t2.lst
字号:
C51 COMPILER V7.06 PWM_T2 11/05/2008 23:44:42 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PWM_T2
OBJECT MODULE PLACED IN pwm_t2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm_t2.c BROWSE INCDIR(C:\EZST\EasyStudy51\ES51-II\Target\INC\) DEBUG OBJEC
-TEXTEND
stmt level source
1
2 /*
3 File: pwm_t2.c
4 说明: PWM波形输出,定时器实现
5 Author:wolfe
6 Data: 2008.10
7 */
8
9
10 #include "at89x52.h"
11 #include "ES51_II.h"
12 #include "es51_ii_lib.h"
13
14 // 输出到P1.0,直接观察LED1亮度粗略地判断.
15 sbit PWM_OUT = P1^0;
16
17 // 全局变量
18 bit bPWMFLAG;
19 unsigned int Revlue;
20 unsigned int Positive;
21 unsigned int Negative;
22
23 // timer2初始化程序
24 void InitTimer2(unsigned int value)
25 {
26 1 RCAP2H = value>>8;
27 1 RCAP2L = value;
28 1 T2MOD = 0x00; // 禁止定时时钟从P1.0输出.
29 1 // 计数方式与P1.1无关,采用加计数方式.
30 1 TH2 = RCAP2H;
31 1 TL2 = RCAP2L;
32 1 T2CON = 0x00; // 0000,0000 计数,自动重装方式.
33 1 }
34
35 // timer2中断程序
36 void T2OverflowINT(void) interrupt 5 using 0
37 {
38 1 PWM_OUT = !PWM_OUT;
39 1 TF2 = 0; //清零中断标志
40 1 RCAP2H = Revlue>>8; //重写RCAP寄存器
41 1 RCAP2L = Revlue;
42 1
43 1 if(0 == bPWMFLAG) //设置下一次RCAP2H的值
44 1 Revlue = Positive;
45 1 else
46 1 Revlue = Negative;
47 1 bPWMFLAG = !bPWMFLAG;
48 1 }
49
50
51 // 设置占空比(频率为1KHZ)
52 // 设置占空比范围:5.0%-95.0%;精确到小数后一位,
53 // 矩形波中占空比是指正脉冲与整个周期的比值.
54 void SetDutyCycle(float duty)
C51 COMPILER V7.06 PWM_T2 11/05/2008 23:44:42 PAGE 2
55 {
56 1 bPWMFLAG = 0;
57 1 PWM_OUT = 0; // PWM输出引脚初始状态为0
58 1 Positive = 0xffff - 10*duty;
59 1 Negative = 0xffff - 10*(100-duty);
60 1 InitTimer2(Negative);
61 1 }
62
63 // 启动PWM输出
64 #define ENPWMOUT() TR2=1
65 // 停止PWM输出
66 #define DISPWMOUT() TR2=0
67
68 void main()
69 {
70 1 EA = 1; // 开总中断
71 1 ET2 = 1; // 允许T2溢出中断
72 1
73 1 // 修改传递的参数,观察LED1灯的亮度.
74 1 SetDutyCycle(53.4); // 设置占空比为53.4%
75 1
76 1 ENPWMOUT(); // 允许PWM输出
77 1 while(1);
78 1 }
79
80
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 180 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 4
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -