|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用pwm控制发光二极管的亮度,各位大佬帮忙看看究竟是哪里出现了问题。(开关就先不设置了,中断暂时也不太会用就先不用了). _, A- h+ T) |2 ?! x( U- m6 Y8 h# H
代码如下:; S: R% S) Z1 u* v7 n; s( S
#include <SC92F725x_C.H>
/ m1 ~' z* |9 U$ b; ~4 Q #define LED1_qidong PWMDTY4=25 //使能led1启动 周期为1/4. h' C- r- ^% N2 G& a4 b3 m
#define led1_guanbi PWMDTY4=0 //禁止led1启动
2 `. F, n' z8 \$ m; k1 O: X. Ivoid PWM_Init(void);
% ^+ J) n- Z1 Z void Delays() //延时函数1 x5 @9 \, g- K
{
4 _) V+ g3 \0 o `, Q int i,j;7 Y$ L6 O3 M1 J9 z' D; H9 l
for(i=5000;i>0;i--)//延时5s
; I6 f4 A) T, o5 B( L0 r! Y for(j=110;j>0;j--);6 y3 X5 c2 K, ?* j2 W1 s
0 V2 \0 b6 `( C }8 q, i$ r; H! ?# t6 a, b" H: |
void PWM_Test(void)% z- u, B; R* U% C; I' r( a
{4 O+ P, h! b$ P8 H
PWM_Init();
6 x5 U0 Z$ P/ R* P2 A+ L# F9 ] while(1)
& E; P8 G5 q& T& {1 y% V {3 y/ ^+ [$ R: Z/ ?' A
led1_qidong;
' x6 |5 `, G' E( s9 U3 ` Delays();
* ^: y' m& {$ Y+ g2 U+ y1 i5 J led1_guanbi;- f( K( P: j- K {% j) X1 F
Delays();
; F0 O: V" f$ H4 X* l2 U! s2 h% L 8 K) B u' s2 |! ~( Z8 L
}
. g! K. i7 r/ W/ G7 a# [* b }! J0 Y& A! Y& O" C* P
void PWM_Init(void)
# `+ g1 s4 X" _/ t {! h: t' I( T5 b0 {, ]
P2CON = 0x40; //0100 xx00 设置P2.6推挽输出
4 F% _- ]& f* Y! O; x P2PH=0x80; //1000 xx00
0 r2 D4 K& l' ?& s3 R" l PWMCON = 0x04; //PWM关闭,Fsys/32频率;
9 ]$ Z- B7 s1 p# ~% T; v0 B PWMCFG0 = 0x02; //PWM4输出到I/O
/ e+ p* h9 r% S- E& k8 T0 f: H PWMCFG1 = 0x00; //PWM4不反向
3 k) M1 N6 _: c( `9 w6 N PWMPRD = 99; //PWM周期=(99+1) $ y9 J6 s# d" w0 G. u# w
PWMDTY4 = 60; //PWM4的Duty = 0/100 =0 默认关闭
9 I$ {* D# I( D" X- |/ }" a A PWMCON |= 0x80; //启动PWM工作
5 D7 `% Y7 z# W* Q// IE1 |= 0x02; //开启PWM中断
$ x# o+ I4 |" e8 f2 k/ O// EA = 1;6 K3 r% @+ w: e% w' k
} v9 T3 n, P# S0 E( i; ~( T$ O
void PWMInt(void) interrupt 8( q; l8 T% S, m1 I. |8 {
{
- @$ \2 {2 [( G9 @/ g0 t P02=~P02;
" v1 E# @ Y. a" r& l* B# p }
( ?3 ]2 f0 {" j( B z1 G d X |
|