|
好家伙 我程序都给你发出来) C+ t. u4 d4 x( q, G
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义9 R7 V+ c9 [8 I1 n& K
% `" u* M0 }3 ~+ Ssbit LED0=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号
/ e' ]" `. @/ d& E9 c z/ @. b8 Q6 l. ?+ k& n5 m4 [* i; z
void Delay(unsigned int t); //函数声明' b1 k" W" J, c3 P: J
/*------------------------------------------------
8 F9 |& Y# {8 t# d8 C 主函数1 V/ r4 n6 \' y# A* f
------------------------------------------------*/6 z- Z$ G3 z. Q
void main (void)" @4 I9 S: P2 N1 \ e: b+ P F
{2 N0 c' E, x! Y5 N# M [! g; \7 D% O0 J
! P, W9 Z1 x8 O
unsigned int CYCLE=600,PWM_LOW=0; //定义周期并赋值
2 t' `: W1 e# H$ [ while (1) //主循环. U7 R$ w7 v( {* Q' i# k* ?
{- S d( ~1 L5 P% L
LED0=1;
" d' p$ x U4 N+ P% V* k. _0 f/ c Delay(60000); //特意加延时,可以看到熄灭的过程4 E0 Q! u0 `' d) W
for(PWM_LOW=1 WM_LOW<CYCLE WM_LOW++)//PWM_LOW表示低4 J2 f9 i" N2 L* Q
{, ^/ e: c. a- k7 n6 @, e* L
//电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
2 x. V: t& m0 ]2 y* P! A' B LED0=0; //点亮LED 8 t, g4 U9 H; h4 {, A$ P" a. R
Delay(PWM_LOW);//延时长度,600次循环中从1加至599
' p- c( t3 `. h* `- d0 T8 X! a LED0=1; //熄灭LED
" V+ r5 I" c0 O/ q& } V Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1- q6 w8 \$ q8 a9 ]0 F+ S
}7 j+ L& {+ M$ w# y
LED0=0;
( N& C0 d; s' @7 D for(PWM_LOW=CYCLE-1 WM_LOW>0;PWM_LOW--)
. P: ~" a' g1 ?; Y { //与逐渐变亮相反的过程
4 K1 H" b& V8 J" ? LED0=0;/ Z) E* C O2 Q& P5 n/ B+ P. i
Delay(PWM_LOW);
. E5 B/ y# |8 m$ @' m4 ^4 Y LED0=1;
' g9 N* t6 k& Z Delay(CYCLE-PWM_LOW);
{3 F9 L0 { G# _+ V' P, }7 P }
0 P* g2 W' y+ i2 s3 `. E& o7 ~ }
7 Y5 J) g' v+ t( E# B}% Y W, M" a- \
/*------------------------------------------------) E7 Y7 @5 v0 A, I S
延时函数,含有输入参数 unsigned int t,无返回值
2 H# S, B' K7 F, _! F1 ^/ ^, Munsigned int 是定义无符号整形变量,其值的范围是
* K7 R6 b; x: h3 W( X W0~65535
0 K$ h* Y% J1 `, [9 D5 ?8 T$ ` `------------------------------------------------*/
6 P( h2 i- Q0 c' wvoid Delay(unsigned int t)
$ I5 Q6 T+ u. L8 M{2 r ?! k7 o1 j3 m
while(--t);
6 r q/ y9 s" ]& C8 h" |6 ~3 C} |
|