📄 pwm-8.lst
字号:
C51 COMPILER V8.08 PWM_8 04/17/2009 18:51:14 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE PWM_8
OBJECT MODULE PLACED IN pwm-8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm-8.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //===================================================================================
2 //PCA工作在8位脉宽调制器工作方式,在PWM引脚输出一个占空比为0<-->0xfe的PWM
3 //信号且重复输出,可用示波器观察占空比变化。
4
5 //实验时短接J12的1,2引脚.
6 //-----------------------------------------------------------------------------------
7 // Includes
8 //-----------------------------------------------------------------------------------
9
10 #include <c8051f310.h> // SFR declarations
11 #include <INTRINS.H>
12 #include <stdio.h>
13
14 //------------------------------------------------------------------------------------
15 //------------------------------------------------------------------------------------
16 void PORT_Init (void);
17 void PCA_Init (void);
18 void PCA_ISR (void);
19 //------------------------------------------------------------------------------------
20 // MAIN Routine
21 //------------------------------------------------------------------------------------
22 void main (void)
23 {
24 1 unsigned long b;
25 1
26 1 /*关看门狗*/
27 1 PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
28 1 OSCICN |= 0x03; // Set internal oscillator to highest
29 1 // setting (24500000)
30 1
31 1 PORT_Init (); /*初始化I/O口*/
32 1 PCA_Init (); /*PCA初始化成8位脉宽调置方式*/
33 1 EIE1= 0x10;
34 1 EA=1;
35 1 PCA0CPH0=0x20;
36 1 while (1)
37 1 {
38 2
39 2 for(b=0;b>0xffffffff;b++)//延时
40 2 {
41 3 _nop_();
42 3 }
43 2 }
44 1 }
45 //配置I/O端口
46 void PORT_Init (void)
47 { P0SKIP =0xff;
48 1 P1SKIP = 0x3f;
49 1 XBR1 = 0x42; /*CEX0-->P1.6*/
50 1
51 1 P1MDOUT |= 0x40; /*使能P1.6脚推挽输出*/
52 1 }
53 //配置PCA的CEX0输出8位PWM信号
54 void PCA_Init (void)
55 {
C51 COMPILER V8.08 PWM_8 04/17/2009 18:51:14 PAGE 2
56 1 PCA0CN = 0x40;
57 1 PCA0CPM0 = 0x42; //pwm-8模式
58 1 PCA0CPL0 = 0x00;
59 1 PCA0CPH0 = 0x00;
60 1 //PCA0CPL4 = 0x00;
61 1 //PCA0MD &= 0x40;
62 1 PCA0MD = 0x01; //pca计数器/定时器溢出中断允许
63 1 }
64 //-------------------------------
65 void PCA_ISR (void) interrupt 11
66 { unsigned char a ;
67 1 bit PWM_PAC;
68 1 CF = 0;
69 1 if(PWM_PAC==0) //占空比由0 >>0xfe
70 1 {
71 2 PCA0CPH0=a;
72 2 a++;
73 2 if(a==0xfe){PWM_PAC=1;}
74 2 }
75 1 else //占空比由0xfe >>0
76 1 {
77 2 PCA0CPH0=a;
78 2 a--;
79 2 if(a==0){PWM_PAC=0;}
80 2 }
81 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 137 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -