|
|
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
3 v8 k7 A; V/ I; h& I) I7 h" L. W/ }" Z% ~+ B) \
***it LED0=P1^0;// 用***it 关键字 定义 LED到P1.0端口,LED是自己任意定义且容易记忆的符号. f( W* c/ @2 z. @) L
" v5 H' _8 l: u/ C
0 N; G9 j1 h9 e+ t8 F, n
void Delay(unsigned int t); //函数声明
) o# L, v5 F2 L( w5 a: l# a. ^/ _4 v/*------------------------------------------------8 h4 Y z3 o2 J4 z
主函数7 V6 }- E) q. j& b3 ^. R0 W& e
------------------------------------------------*/& H8 H6 j) e& v/ g: c' D6 e2 ]( Y- p
void main (void)
! k b j$ _& H$ F3 T{
' e" K5 l: g' ^6 h 3 o9 {/ L/ P, d3 j4 f8 r
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
0 V# r6 O2 T8 W- vwhile (1) //主循环
; S+ s: c1 I/ c) }0 C {2 [: s* y, F/ d: i1 I$ ]
LED0=1;
4 k5 x# Q7 h' CDelay(60000); //特意加延时,可以看到熄灭的过程( D3 b( ?: d# b
for(PWM_LOW=1 WM_LOW //电平时间,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次
8 u0 \$ n! _; I' y: U5 G L" j& M- L5 F
LED0=0; //点亮LED 2 j, y' `9 T: Y9 b* B
Delay(PWM_LOW);//延时长度,600次循环中从1加至599: E6 Z# ~9 w" z1 ?: H, T
LED0=1; //熄灭LED
+ s1 _# ?' C" O Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1& w+ f7 m4 V7 o3 O4 v. e
- ^; T7 v' S( O! R* P8 H$ r }
+ ?( _: T. P' t5 k+ L+ f. W- XLED0=0;
( {4 y' t- v# n, L7 A2 G% o4 ifor(PWM_LOW=CYCLE-1 WM_LOW>0 WM_LOW--){ //与逐渐变亮相反的过程
h- J+ d+ g1 {$ [1 F- w% f( X0 A0 l) ]; U
LED0=0; F* k2 C& r& D3 y* B; A1 F, A/ c
Delay(PWM_LOW);0 R( O- v1 a6 _3 T4 `4 M1 L
LED0=1;6 W Y4 `/ p/ E5 p, ^9 \+ F! k
Delay(CYCLE-PWM_LOW);
$ O+ c' N% j, C A2 R/ d
T6 S6 F7 o! j }, z* u% O) y1 a, O! e
//主循环中添加其他需要一直工作的程序, A$ d% y' o7 v* {5 x1 z7 B6 t
}6 N# ?& F- R! }9 s4 t
}
3 I- Y \! e& {/ o' H* w/*------------------------------------------------9 {6 r( h: _. m2 [0 j, i3 J8 L
延时函数,含有输入参数 unsigned int t,无返回值/ g! z( Q# ^" R; B
unsigned int 是定义无符号整形变量,其值的范围是 V/ F5 [) Q9 d& Q0 C
0~655354 R/ K, [ R( k+ w% S
------------------------------------------------*/+ _0 C* ]( f1 @2 r- I' g3 `: Y
void Delay(unsigned int t)* I( u5 V$ f3 e" g9 K$ W- H
{
7 W. O, n) R; K$ a- [7 _1 dwhile(--t);9 C( h& _2 |0 i+ r% n0 f8 _
} |
|