1 例子1 第二个灯亮
#include<reg52.h>
void main()
Pl=Oxfd;
#include<reg52.h>
Sbit D1=P1A O:
Void main()
1
D1=O
'注意:稍微改程序时需重新hex化例了2第?个灯亮#include<reg52.h> 〃52单片机头文件sbit ledl=Pl A0://单片机管脚位声明
void main() 〃主函数
{
led 1=0; 〃将单片机P1.0 口清零
whiled); 〃程序停止在这里,在后面会讲到为什么这样写。
}例子3第・?个灯亮
#include<reg52.h> //52 单片机头文件
void main() 〃主函数
{
Pl=0xfe; 〃将单片机P1 口的8个口由高到低分别赋值为I111I1I0 whiled); 〃程
序停止在这里,在后面会讲到为什么这样写。
}
2 例1 第三个灯闪烁fii?循环#include<reg52.h> sbit D2=P1A2: unsigned int a; void main()
I
D2=0;
for(a=0;a<= 10000;a++){};
D2=l;
fbr(a=0;a<=10000;a++){};
}
例/ 2第三个闪烁while 循环
#include<reg52.h>
sbit D2=P1A2: unsigned int a;
void main()
a=5000;
D2=0; while(a —); a=5000;
D2=l;
while(a-);
}
2.#include<reg52.h> //52单片机头文件sbit ledl=Pl A0: 〃单片机管脚位声
明
void mai n() 〃主函数
unsigned int i; 〃定义?个int 型变量whiled)
i=50000; 〃变量賦初值为50000 led仁0; 〃点亮灯
while(i —); // 延时
i=50000;
ledl=l; 〃熄灭灯
\vhile(i —);
3 例子1 3 57灯同时亮#include<reg52.h> 〃52 单片机头文件sbit ledl=Pl A0; 〃
单片机管脚位声明
sbit led3=Pl A2; 〃单片机管脚位声明
sbit led5=Pl A4; 〃单片机管脚位声明
sbit led7=Pl A6; 〃单片机管脚位声明
void mai n() 〃主函数
led 仁0: 〃将单片机Pl.o 口淸零
led3=0: 〃将单片机P1.2 口淸零
led5=0: 〃将单片机P1.4 口淸零
led7=0: 〃将单片机P1.6 口淸零
while( 1); ——〃程疗:停止在这里,在后面会讲到为什么这样
写
例子2 1 3 57同时亮
#in clude<reg52.h> 〃52 单片机头文件
void mai n() 〃主函数
I
Pl=0xaa;〃将单片机P1 口的8个口由高到低分别赋值为10101010例了? 3流水灯?个?个接着亮不循环#include<reg52.h> 〃52单片机头文件
void mai n() 〃主函数
unsigned int i:〃定义?个int 型变量whiled)
仁50000: 〃变量赋初值为500()0
Pl=0xfe:〃点亮第?个
灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
Pl=Oxfd; 〃点亮第二个灯while(i —); 〃延时
i=50000: 〃变呈赋初值为50000
PI=Oxfb: 〃点亮第三个灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
Pl=0xf7; 〃点亮第四个灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
Pl=Oxef; 〃点亮第五个灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
Pl=Oxdf; 〃点亮第六个灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
Pl=Oxbf; 〃点亮第七个灯
while(i —); 〃延时
i=50000: 〃变量赋初值为50000
PI=0x7f; 〃点亮第八个灯
while(i —); 〃延时
whiled); 〃程序
停止在这里,在
彳列 f 4 #include<reg52.h> #include <inlrins.h> #define uint unsigned int #define uchar un sig ned char uchar teinpjmnLnuml
sbit beep二P2A3;
void delay(uint);
void main()
1
temp=Oxfe;
while(l)
{
for(num 1 =O:num 1 <3;num 1 ++)
{
for(num=0:num<8:num++)
{
Pl=temp;
beep=O; delay(lOO); temp=_crol_(temp」); PI=Oxff: beep=l;
delay(lOO);
}
}
for(numl=0 :numl<3:numl++)
{
for(num=0:num<8:nuin++)
{
Pl=temp; beep=O; delay(lOO); temp=_cror_(temp. 1); Pl=Oxff;
beep=l; delay(lOO);
}
}
whiled);
void delay(uint z)
{
uinl x.y;
for(x=z:x>0;x —) for(y=l 10;y>0:y —);
4延时子程序
void delay()
uint x;
for(x=100:x>0;x —){}:
For 的嵌套
void delay() {
uint x,y;
for(x= 100:x>0;x-)%小括号后不加分号
与下句隔开(或者{ for(y=600:y>0:y —);})#include<reg52.h> 例子l#includevwg52? h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=PI A O:
void delay(); %注意分号不能少
void main()
i
while(l)
{
Dl=0;
delay();
D1 = I;
delay();
}
void delay()
I
uint x,y; for(x=100:x>0;x-) for(y=600;y>0:y —);
}
带参数的比不带参数的要方便
例r 2 无参和有参的对比#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1A O;
//void delay();
void delay(uint);%带?个参数的,参数类型必须要写,参数可不写。
比如可以写成uint z<,也可以带多个参数
void main()
{
xvhile(l)
{
DI=0: delay(1200);%亮2 秒Dl = l;
delay(1200);
/*
void delay()
1
uint x.y; for(x=100:x>0:x-) for(y=600;y>0:y-);
}*/
void delay(uint z)
I
uint x;
uchar y;
for(x=z:x>0;x-) for(y=20;y>0:y-);
例 f 3#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit D1=P A1O; void
delay(uint); void main()
{
while(l)
{
Dl=0; delay(1200);
Dl = l;delay(1200);
void delay(uint z)
I uint x;
uchar y; for(x=z;x>0;x —) for(y=20:y>0;y —);
5 循环左移三位如10100101 (a5) -00101101(2d)。