|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用pwm控制发光二极管的亮度,各位大佬帮忙看看究竟是哪里出现了问题。(开关就先不设置了,中断暂时也不太会用就先不用了)
: a3 o' n. w/ Q3 Z; i+ i7 f9 c# Y 代码如下:
' E3 U, u: k0 ~; G#include <SC92F725x_C.H>
3 b$ |- N* e9 {4 @8 w5 E4 R; L9 _* b #define LED1_qidong PWMDTY4=25 //使能led1启动 周期为1/4
* t- n" M. F3 F0 C #define led1_guanbi PWMDTY4=0 //禁止led1启动
6 {7 A% M- o% lvoid PWM_Init(void);
- I! A" b0 d. R7 \5 ]. l5 m void Delays() //延时函数
& [, K4 M% v0 o2 o) k3 N{( C2 c7 S9 [% U, w( Y
int i,j;
8 Q$ T7 L( T4 u6 \$ L) g/ P( u for(i=5000;i>0;i--)//延时5s* H8 }7 O3 X. S# u
for(j=110;j>0;j--);( J. f% W g3 `. m1 ?' q
! i! h2 }6 T0 V4 S/ X
}
+ f; \7 ^8 q: d) e' V6 h* ^# evoid PWM_Test(void)
2 K* H# @" ^, K* r# f& l* n) ~$ c; @ {
% d5 H; A' q0 ]7 b2 Y& ~ PWM_Init(); M$ t% r0 f; `3 T* v2 B T
while(1)+ j6 D2 @; W0 G+ Y* S
{& T$ _; v0 w; F& k3 C7 s
led1_qidong;% b5 i) H8 s( j4 s* Y1 `) L; d) @
Delays();
X% U) p5 S" g/ B) `% |( U2 @ led1_guanbi;
: p$ D7 N: l% u- X, n7 N Delays();
8 |# ^3 ^- |7 ?+ x: @
5 N% M! @: m1 z- S5 N+ h6 W/ z+ n$ { }6 @ T; T5 ]& r$ G
}
. }" ]& m# s; N& I void PWM_Init(void)3 {8 Z3 v4 c9 _9 e1 C7 Q4 v0 E
{
& B2 T2 B/ O6 \1 S- P P2CON = 0x40; //0100 xx00 设置P2.6推挽输出$ v% ~) p, s# u, _8 X
P2PH=0x80; //1000 xx00 ( s# {! m2 @8 n+ p$ V6 c
PWMCON = 0x04; //PWM关闭,Fsys/32频率;6 Q F3 P+ a) G1 Q
PWMCFG0 = 0x02; //PWM4输出到I/O
9 _' i& T; S4 v% O1 [ PWMCFG1 = 0x00; //PWM4不反向
2 x8 ` w: i& t! T6 E: K' X$ w PWMPRD = 99; //PWM周期=(99+1) 7 z8 ^5 B7 S- q
PWMDTY4 = 60; //PWM4的Duty = 0/100 =0 默认关闭
/ K( l7 @7 d+ X- a) l' F PWMCON |= 0x80; //启动PWM工作0 i2 m3 p! ]2 a" B
// IE1 |= 0x02; //开启PWM中断0 b w _6 T) B# m3 v( a
// EA = 1;
. S" l1 r. k- N* k. Z' P, [ }1 P* o, z, h1 d4 H5 ~
void PWMInt(void) interrupt 8
: L8 ~9 O* T# j) D' \5 @ {
: s2 Y8 y0 z1 S% f. a: ` P02=~P02;
5 |/ y6 Q+ N! C! e( |9 U }! Y, x0 K# }- D# N3 ?& e
|
|