|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机基础操作 控制LED灯的亮灭控制以及位移控制程序
$ Z9 z2 Y6 r0 M/******************************************************************************* 7 x$ s' N1 R8 H& c3 V& j0 X
* 文件名称:LED闪烁实验6 _& N- O; f+ W. x6 D( b
* 实验目的:1.掌握单片机IO口操作的基本方法
5 T ~# D3 J+ M2 W6 T* 2.掌握软件延时函数的设计方法. O+ G' ^# h: x5 r+ \; Z4 V
* 程序说明:LED以0.2S为间隔亮灭
! [( R' G& b% l0 [# s* 硬件环境:IAP15F2K61S2单片机,单片机内部振荡器频率:11.0592M
2 y0 u9 ^8 V8 ^( f*******************************************************************************/% `' y, P% O5 M9 s
2 A5 C& @$ c- |" y! v
* c" l- C% \% r3 K& [% S; |' ]& L
#include "reg52.h" //定义51单片机特殊功能寄存器
# _5 V8 g3 L* f1 ?#include "intrins.h". ~ S' g' q v2 P) ^* c
& e' u; d3 B, h+ r7 x
: ?% n1 B2 {) B& F1 E//关闭外设
; y& T. C3 b1 _7 Y7 }6 r" [& Evoid cls_buzz(void)
* `( P% W/ y4 B) d{
- U; I+ H* D- }9 z: f P2 = (P2&0x1F|0xA0);; V$ K* v! }" i
P0 = 0x00;1 G6 A: D% w8 n& e
P2 &= 0x1F;$ [; b8 X" L$ I; a: L+ @: m; J9 h
}
( ]5 }& s5 e) g2 H4 p* G5 @7 x1 j4 f) o2 x) y
2 }6 o( ?4 H+ ^* c+ z; e+ @4 |
//延时函数
! H, R# x4 ~$ [8 L P; d/ V' }$ \8 f; Fvoid delay() //@11.0592MHz9 O$ D# r3 ]8 e2 s X# R! F. A$ v
{& G8 [% c6 R9 j1 Z4 Q$ F* `8 G
unsigned char i, j, k;" }! l) N2 E- [0 r
2 M5 M. u+ a* m$ b8 n _: E/ d* @" L! V Y
_nop_();
/ K E3 D Q* }2 y" p _nop_();3 P# |7 {+ J9 e0 o
i = 9;
' ?( P/ x, g: U+ N9 S/ Q2 O- t. x j = 104;3 I% \, H4 w2 t H! t, e
k = 139;
" z* @! E+ P$ W2 |/ y do8 R5 f g* P y$ o
{
8 h. ?" R, j+ g& n$ W! Y do4 c5 m4 D& a$ w2 A9 c% D! |" R
{
. O* o' n/ [3 P: P, ` while (--k);8 j( L. i- B K& s+ T: R% P
} while (--j);
0 i. o$ ^! R1 C# W' c: [ } while (--i);
3 m) R, }2 M5 M9 L/ b- g* N. @8 q}
" t/ ?3 I5 d1 }0 L# W! t
0 p5 Y/ Q4 h* ]$ U5 U( B2 A2 L
+ [( D/ D+ r' k$ @//主函数4 b5 z6 c1 q& m4 @
void main(void)
4 D+ I" Q8 K1 W6 d6 M9 W{0 o. O0 M: L) ^- x
cls_buzz();9 J3 U$ t V8 J8 ?, ]- ~1 m! ^
8 @- d( `5 T/ D% y7 a* d
while(1)
; A4 i- ]3 ~ ~; @; { {3 e! @; J0 [: L6 ^
P2 = ((P2&0x1f)|0x80);2 E6 f3 ]; g5 P3 ~% s' ~7 h, |/ A
P0 = 0xff; //LED熄灭$ [8 z* h3 z, _/ f. ^
P2 &= 0x1f;9 p$ V: p1 ^ Y, r/ p% a9 d: a' S
delay();
9 J1 A; S7 y0 s
) T9 h8 I* G; s3 a8 F5 `8 G8 @6 u P2 = ((P2&0x1f)|0x80);' M# L$ T+ T I! |( @6 s6 \
P0 = 0x00; //LED点亮
/ V2 a5 w" t3 `1 Y* ] P2 &= 0x1f;
* V. `$ @, H5 A, n' h8 ]" ^ delay();0 ^5 G1 ^6 [0 E& }. p
}& L% l( v I0 @, y. Y& |
}' A5 t: d) f# H8 h. u7 ^
' ]7 @* B% n' A; b* E6 E4 G
) N# t/ j8 F ^1 h+ Z# c# ~1 G |
|