|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机基础操作 控制LED灯的亮灭控制以及位移控制程序
. H+ s g: i- h: X- X/*******************************************************************************
5 Y; L: V3 f& ]* u% C u* 文件名称:LED闪烁实验# f3 R) u( i7 j, \+ U4 y0 N' D" n& O
* 实验目的:1.掌握单片机IO口操作的基本方法, ]) Z: A6 {' I6 E+ a# r
* 2.掌握软件延时函数的设计方法
9 ?* J5 T W$ Y8 b" h( e* 程序说明:LED以0.2S为间隔亮灭2 @: M/ n4 ^4 P) e3 A3 a. S X
* 硬件环境:IAP15F2K61S2单片机,单片机内部振荡器频率:11.0592M
8 N; D, s/ V. ]" x) z) c*******************************************************************************/% B1 A( E% @9 u, ~
' J$ O/ p3 p9 y9 A" ~& `! P* L
. w9 `% M" a. s. ]& h/ U3 n#include "reg52.h" //定义51单片机特殊功能寄存器0 C4 o6 U# d! b) W' _& @
#include "intrins.h"
4 U2 e I9 j- Q0 @6 Z& @
5 E# S" z1 g7 E8 A- A/ `% I& @/ [1 z( {; C: x
//关闭外设: b' c" y9 O: M5 U- ?4 i
void cls_buzz(void)- s& F! F+ `. a" }1 i/ y0 g$ p7 h
{
" ~! x; s& h& R* Z/ L2 [ P2 = (P2&0x1F|0xA0);$ i7 c. o- V8 U1 F I0 i, u
P0 = 0x00;0 u7 T5 M0 V* c: ^: J$ X
P2 &= 0x1F;
1 S. M! S) k; H" J) t* e}+ C7 m2 z( E" f8 I7 J- d% \7 y3 j
" V3 u& E; E& T0 T/ @
2 R4 n) W7 d- o" j, P) `& i, e Z2 t
//延时函数 \! `. A( O8 K4 C! \$ q
void delay() //@11.0592MHz1 R- D# a5 t7 u6 f6 G
{4 L6 |0 Z* l4 b6 V
unsigned char i, j, k;
, `7 C( R) c' [+ _( W
( M, t c, v1 X4 V5 a {9 Q
2 \$ Z9 Y e4 V# Z& _4 X _nop_();" A2 v# Y; d/ d9 P7 `5 l
_nop_();: V3 m" O- s) f. v
i = 9;
; K& }; A/ b6 G B( | j = 104;1 x( X% U. [% q; y4 A; b
k = 139;1 \ c2 ~; N( {3 X% X4 Q% F- a/ j
do
& C n/ f1 ^, _3 b* R {
! G7 B: Q( }' s; T/ U9 v! | d1 F do
4 x `. {! j! B6 J3 _- l {
2 v8 _. D6 t! A- p5 ^0 S3 {/ [ while (--k); m0 u/ B! b% Q
} while (--j);
- `$ `. ^% Y: u8 J0 ~0 O } while (--i);7 s- J3 }0 u$ i8 D1 o( |
}2 M3 d& B8 d6 e# f6 A
9 J) m! _3 R8 z4 p; ]( Y( M/ \* ^ e- w" w) S
//主函数( {6 G6 s- C; b, A/ Z1 S% P) _$ J" L
void main(void)
4 S: N; s+ M1 B4 S{: [# `, ~* T0 z6 }" ?
cls_buzz();
8 @, Q2 T7 @; i( ]- A; O. E
: G. D7 t. G! F1 r- i- b& Y7 y while(1)! i- |7 o7 o, j# F
{/ ]( L7 J" Y# _% j: W
P2 = ((P2&0x1f)|0x80);
+ z) W7 `/ T7 d5 {2 | P0 = 0xff; //LED熄灭/ T! ]0 D4 j: C4 `/ A J( S ?' }
P2 &= 0x1f;) G4 f, @- R% V; x- ]/ k
delay();
* c& E4 j- z6 m
/ G! v1 x* L" K1 Q+ `$ B P2 = ((P2&0x1f)|0x80);
! r& X0 B6 o6 X$ P& p) F2 u P0 = 0x00; //LED点亮
& ?8 N$ z, }4 ?) ?" \ P2 &= 0x1f;
5 L4 L8 A- K" U delay();9 Y) r: w$ a) \8 G8 z, \
}
' q) U; `+ v* g I) d& ]2 s S; y}9 R6 M0 c0 r( v6 z9 Z, R
0 ]) j& n: D% m% f9 [/ O, D1 a3 C
1 E7 w# F. T$ H: U3 E& Q1 R |
|