|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用pwm控制发光二极管的亮度,各位大佬帮忙看看究竟是哪里出现了问题。(开关就先不设置了,中断暂时也不太会用就先不用了)
; M' S6 n9 |5 z0 L 代码如下:; i1 t: a# x5 o& c/ s0 u
#include <SC92F725x_C.H>
% K, k2 R. Z8 I/ A3 t #define LED1_qidong PWMDTY4=25 //使能led1启动 周期为1/4
7 i3 B. [7 _9 ]) w% G: r+ p #define led1_guanbi PWMDTY4=0 //禁止led1启动- S1 k A" p, k( F' r6 G$ Y3 a9 T
void PWM_Init(void);
( L; X% ~) p' d7 P. o- c void Delays() //延时函数
$ z8 d) O2 l/ X4 n: n7 }{
( w. J2 e) k* v5 r/ p2 W+ \ int i,j; r8 v# Y' x5 e1 Q6 }$ |
for(i=5000;i>0;i--)//延时5s0 ~/ T# c" f5 D! c$ m4 ]) q# [$ A
for(j=110;j>0;j--);
' U# D" `7 M2 A' Z3 K B
" d! y3 E* y5 a; F7 W9 a7 m7 ]# k }; G7 ~; h: q6 ]4 n6 ]- p/ ]5 |
void PWM_Test(void)( z, |0 \ u6 E; L. s9 j
{/ D5 p2 V0 c8 M1 H6 M: ?! x
PWM_Init();
2 O( B3 j- M2 k$ n% Z; t while(1); N# n# G$ q" @4 S' o& H$ v! D
{8 @2 E# K* [ O6 W
led1_qidong;
: S3 t3 f1 o% C Delays();
1 f! ^4 c% T5 |9 o led1_guanbi;' [; P. r- ?9 b. S# p
Delays();
/ {* }: l; Y# Q; \" ~) z ' B7 U" t: B3 j+ g
}
6 S& ?$ G( v/ l, C+ I+ S }* U! K1 o4 ~; u4 g8 a
void PWM_Init(void)9 m* u: S& h5 }1 i$ x" U
{
& |6 |3 l4 ?8 v, O2 b P2CON = 0x40; //0100 xx00 设置P2.6推挽输出6 q6 A- |' n( m$ }1 l
P2PH=0x80; //1000 xx00
: G8 E) y! g1 N0 U9 J1 V PWMCON = 0x04; //PWM关闭,Fsys/32频率;
! u+ k, p S/ h- C# p/ y/ q2 R PWMCFG0 = 0x02; //PWM4输出到I/O. g5 ?& O' O0 G7 w0 Q v3 l
PWMCFG1 = 0x00; //PWM4不反向
+ }7 G C/ C- r$ A* e3 K$ A PWMPRD = 99; //PWM周期=(99+1) 4 y) ~! {: V( Y
PWMDTY4 = 60; //PWM4的Duty = 0/100 =0 默认关闭1 g" c' i' W5 o* M; O" i
PWMCON |= 0x80; //启动PWM工作
/ S: X& w) f0 `4 r b// IE1 |= 0x02; //开启PWM中断* X" \7 D$ d/ Z! e! a& l! {9 ?
// EA = 1;
3 [+ {6 J3 i+ [4 \7 b, G0 t% q }
3 Y* J; C7 ~ P+ z void PWMInt(void) interrupt 8
. ^7 Z! ~) V, x/ b0 F { 9 G0 P. D6 K5 Z- E/ E, V
P02=~P02; 8 A+ |4 v, F# ?( N1 l/ u/ ?
}
% i( @: [8 s& z |
|