?? 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 + -