|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机基础操作 控制LED灯的亮灭控制以及位移控制程序
+ N8 r' D9 _" K t! s D0 j3 B/*******************************************************************************
4 T/ S$ f" F& `; A: o k. M* C, H* 文件名称:LED闪烁实验
0 Y$ u4 u8 h$ @. G# }* 实验目的:1.掌握单片机IO口操作的基本方法6 b9 i/ j& W. E8 ~5 l0 x8 I
* 2.掌握软件延时函数的设计方法8 T2 G7 i& I# g' a u5 u: l6 T
* 程序说明:LED以0.2S为间隔亮灭4 Y7 U4 Z; h! a9 ?& t6 }- m+ H
* 硬件环境:IAP15F2K61S2单片机,单片机内部振荡器频率:11.0592M' Q; u" @: M# |/ j6 e, \
*******************************************************************************/
2 n+ a- w) x/ X+ s8 M
' g' ^$ ]9 F& U7 A( `
4 L2 m- F/ d) e#include "reg52.h" //定义51单片机特殊功能寄存器8 P5 {4 [* R4 }8 Z0 q+ _! K
#include "intrins.h"
# {- \2 p$ w0 W9 d! r) O( h3 X
5 ~+ K' L3 d; L% F( Y, y$ f7 d' S+ o3 n4 G/ T; u
//关闭外设! L, Q3 n. \/ O! Z; w) z, h9 n2 {. ?. n
void cls_buzz(void)) X% w. X& O7 D3 U u! k3 V8 h) \! r
{
: W4 G L' {7 a! H# V P2 = (P2&0x1F|0xA0);
, q$ N- x% h5 M) X4 | P0 = 0x00;
6 E: ?( D6 [: z% c$ W1 K P2 &= 0x1F;" O/ P: H7 g) E: _5 @+ ^
}0 S% r( d8 M$ Q8 e- D3 N- o/ E
6 N* x- N' m+ O# Y
& Y4 S) r4 h) P* }4 \
//延时函数 c9 C. R' i6 j, {7 r
void delay() //@11.0592MHz; q& t+ n8 J! [3 r; o5 e7 n. c
{
+ Z; T2 B5 r7 B; {/ n0 h unsigned char i, j, k;
: x3 ^ C" T& K7 S3 n1 l: v; [4 h$ a. u3 e/ t. s" {9 x4 [ K+ }5 S
& [' O5 `, O N p3 ]7 ~! p+ f _nop_();0 i& Z F1 Q3 D: s. K# _) W. X C! e
_nop_();* `) u3 ], b3 I2 j" f4 V$ Q- x% W$ {
i = 9;( u1 ~# M% G$ V7 i& n3 m
j = 104;! q- z: q* f! v; \5 y6 T" n9 l
k = 139; V' {* _6 e5 f2 Q* q+ G: I" v
do& L4 } u) P% J& ~- t0 j7 K# W( x
{8 l9 q9 K w- ~# m9 @
do
/ F/ ?; L1 G1 P) ~+ B {" \& B0 q2 p+ e1 h8 K2 ^
while (--k);
: }! ?7 ]8 m7 M6 r: H. W } while (--j);
) X! s4 q) u. `! ?: p4 q( _ H } while (--i);) e4 H. o: U2 d9 H" s* O
}: S3 W8 s# G! {& P' d3 @8 N7 X6 K
6 K d( |# \: o8 z6 p2 A+ G# V, I
k! @1 s& b4 `) K* q* {: s//主函数, x( N) c$ E N$ F- U% N
void main(void)& Y3 \4 M+ R: i" r! z; o u8 C& @
{
" q8 Y' d: v- E0 d cls_buzz();
0 a2 b9 M% r) n. G7 b
& U& U- M8 ~& o; c& Q: _ while(1)4 p: ]/ I" ?+ p2 Y2 ]0 {
{
^) G3 p( ?1 H& O' R; G P2 = ((P2&0x1f)|0x80);1 A3 V1 q$ k; _( x
P0 = 0xff; //LED熄灭
6 d( H" z# ^1 L3 H5 f: H! {0 j3 _ P2 &= 0x1f;( W g+ _0 e G2 ~: k
delay();
) K, L; r. `$ M R; A5 y , A( W) R$ D% ]$ g% E b" q! H
P2 = ((P2&0x1f)|0x80);
6 ?+ s! Q& K7 J! q, R3 T P0 = 0x00; //LED点亮. T4 _0 z0 B! b0 M! j
P2 &= 0x1f;& }7 P$ }# @; w2 T
delay();/ h W8 u3 E3 Y+ T9 y$ \
}; A( G- o! Y! n6 {
}
0 T& t6 [0 M6 w, Z
. O) I& b% l+ [, [
* X2 r$ m; ^, F" U y w |
|