📄 pwm_16.lst
字号:
C51 COMPILER V7.50 PWM_16 10/23/2006 11:05:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PWM_16
OBJECT MODULE PLACED IN pwm_16.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm_16.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 本程序为PCA16位PWM输出例程,jp2第2脚为PWM输出
3 ******************************************************************/
4
5 #include <c8051f340.h>
6 #define uchar unsigned char
7 #define uint unsigned int
8
9
10 void port_init (void);
11 void pca_init (void);
12
13 bit pca_flag;
14 uint pwm=0;
15 void main (void)
16 {
17 1 PCA0MD &= ~0x40; //关闭看门狗
18 1 OSCICN |= 0x03; //使用内部12M晶振
19 1 port_init (); //端口初始化
20 1 pca_init (); //PCA初始设为16位脉宽
21 1 EA=1;
22 1
23 1 while (1)
24 1 {
25 2
26 2
27 2 }
28 1 }
29 /******************************************************************
30 端口初始化程序
31 ******************************************************************/
32 void port_init (void)
33 { P0SKIP = 0xff; //跳过P0口
34 1 P1SKIP = 0x03; //跳过P1.1
35 1 XBR1 = 0x42; //将PCA输出配置到P1.2脚
36 1 P1MDOUT |= 0x04; //P1.2配置为推挽输出
37 1 }
38 /******************************************************************
39 初始化PCA的CEX0输出16位PWM信号
40 ******************************************************************/
41 void pca_init (void)
42 {
43 1 PCA0CN = 0x40; //PCA定时器使能
44 1 PCA0CPM0 = 0xc2; //使能16位PWM
45 1 PCA0MD = 0x01; //PCA定时器溢出中断允许
46 1 EIE1= 0x10; //允许PCA中断
47 1 pca_flag=0;
48 1 }
49 /******************************************************************
50 PCA中断处理程序
51 ******************************************************************/
52 void pca_isr (void) interrupt 11
53 {
54 1
55 1 if(pca_flag==0)
C51 COMPILER V7.50 PWM_16 10/23/2006 11:05:11 PAGE 2
56 1 {
57 2 PCA0CPL0=(0xff&pwm);
58 2 PCA0CPH0=(0xff&(pwm>>8));
59 2 pwm+=0x0050;
60 2 if(pwm==0xfff0){pca_flag=1;}
61 2 }
62 1 if(pca_flag==1)
63 1 {
64 2 PCA0CPL0=(0xff&pwm);
65 2 PCA0CPH0=(0xff&pwm>>8);
66 2 pwm-=0x0050;
67 2 if(pwm==0){pca_flag=0;}
68 2 }
69 1 CF = 0;
70 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 118 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -