📄 pwm.lst
字号:
C51 COMPILER V7.06 PWM 05/12/2005 21:42:46 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN pwm.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE pwm.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函数声明,变量定义--------------------------------------------------------
2 #include <reg51.h>
3 #include <intrins.h>
4 #include<ABSACC.H>
5 //-----------------------定义管脚--------------------------------------------------------
6 sbit PWM=P1^0; //PWM波形输出
7 sbit DR=P1^1; //方向控制
8 #define timer_data (256-100) //定时器预置值,12M时钟是,定时0.1ms
9 #define PWM_T 100 //定义PWM的周期T为10ms
10 unsigned char PWM_t; //PWM_t为脉冲宽度(0~100)时间为0~10ms
11 unsigned char PWM_count; //输出PWM周期计数
12 unsigned char time_count; //定时计数
13 bit direction; //方向标志为
14 //--------------------------------------------------------------------------------------------------
15 // 函数名称:timer_init
16 // 函数功能:初始化设施定时器
17 //--------------------------------------------------------------------------------------------------
18 void timer_init()
19 {
20 1 TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装) */
21 1 PCON=0x00;
22 1 TF0=0;
23 1 TH0=timer_data; //保证定时时长为0.1ms
24 1 TL0=TH0;
25 1 ET0=1;
26 1 TR0=1; //开始计数
27 1 EA=1; //中断允许
28 1 }
29 //--------------------------------------------------------------------------------------------------
30 // 函数名称:setting_PWM
31 // 函数功能:设置PWM的脉冲宽度和设定方向
32 //--------------------------------------------------------------------------------------------------
33 void setting_PWM()
34 {
35 1 if(PWM_count==0) //初始设置
36 1 {
37 2 PWM_t=20;
38 2 direction=1;
39 2 }
40 1 }
41 //--------------------------------------------------------------------------------------------------
42 // 函数名称:IntTimer0
43 // 函数功能:定时器中断处理程序
44 //--------------------------------------------------------------------------------------------------
45 void IntTimer0() interrupt 1
46 {
47 1 time_count++;
48 1 DR=direction;
49 1 if(time_count>=PWM_T)
50 1 {
51 2 time_count=0;
52 2 PWM_count++;
53 2 setting_PWM(); //每输出一个PWM波调用一次
54 2 }
55 1 if(time_count<PWM_t)
C51 COMPILER V7.06 PWM 05/12/2005 21:42:46 PAGE 2
56 1 PWM=1;
57 1 else
58 1 PWM=0;
59 1 }
60
61 //--------------------------------------------------------------------------------------------------
62 // 函数名称:main
63 // 用户主函数
64 // 函数功能:主函数
65 //--------------------------------------------------------------------------------------------------
66 void main()
67 {
68 1 timer_init();
69 1 setting_PWM();
70 1 }
71
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 80 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -