LED灯闪烁:
第一盏灯闪烁一次:(初始化,亮,延时,暗,延时,用while循环来结束以上程序)
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
P00=0;
for(i=0;i<65535;i++);
P00=1;
for(i=0;i<65535;i++);
while(1);
}
第一盏灯重复闪烁:(利用了while的循环作用,即把上一段程序放在while循环内部)
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
while(1)
{
P00=1;
for(i=0;i<65535;i++);
P00=0;
for(i=0;i<65535;i++);
}
}
第一二盏灯交替闪烁:(交替开启关闭两盏灯,关第一盏灯的同时开启第二盏灯)
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序
while(1)
{
P00=1;
P01=0;
for(i=0;i<65535;i++);
P00=0;
P01=1;
for(i=0;i<65535;i++);
}
}
流水灯:
简易流水灯:(依次开关灯并延时)
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
while(1)
{
P00=0;
for(i=0;i<65535;i++);
P00=1;
P01=0;
for(i=0;i<65535;i++);
P01=1;
P02=0;
for(i=0;i<65535;i++);
P02=1;
P03=0;
for(i=0;i<65535;i++);
P03=1;
P04=0;
for(i=0;i<65535;i++);
P04=1;
P05=0;
for(i=0;i<65535;i++);
P05=1;
P06=0;
for(i=0;i<65535;i++);
P06=1;
P07=0;
for(i=0;i<65535;i++);
P07=1;
}
}
整体赋值法:(整体确定一排灯的亮暗并延时)
#include<STC15F2K60S2.H>
unsigned int i;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
while(1)
{
P0=0XFE;
for(i=0;i<65535;i++);
P0=0XFD;
for(i=0;i<65535;i++);
P0=0XFB;
for(i=0;i<65535;i++);
P0=0XF7;
for(i=0;i<65535;i++);
P0=0XEF;
for(i=0;i<65535;i++);
P0=0XDF;
for(i=0;i<65535;i++);
P0=0XBF;
for(i=0;i<65535;i++);
P0=0X7F;
for(i=0;i<65535;i++);
P0=0XFF;
for(i=0;i<65535;i++);
}
}
子函数调用:(定义并调用了延时函数)
#include<STC15F2K60S2.H>
void Delayms(int ms);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
while(1)
{
P0=0XFE;
Delayms(1000);//延时1000ms
P0=0XFD;
Delayms(1000);
P0=0XFB;
Delayms(1000);
P0=0XF7;
Delayms(1000);
P0=0XEF;
Delayms(1000);
P0=0XDF;
Delayms(1000);
P0=0XBF;
Delayms(1000);
P0=0X7F;
Delayms(1000);
P0=0XFF;
Delayms(1000);
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
左移的使用:(利用移位来简化程序,移位后移除的位去掉,移入的位补0,0X01依次移0-7位)
#include<STC15F2K60S2.H>
unsigned char LED;
void Delayms(int ms);
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
while(1)
{
for(LED=0;LED<8;LED++)
{
P0=~(0X01<<LED);//0X01的左移0~7位 0000 0001到1000 0000
Delayms(1000);
}
}
}
void Delayms(int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=845;j>0;j--);
}
基本时序:
振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源周期,默认选择11.0592MHz。
15系列单片机的的机器周期=振荡周期。
指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。51单片机系统中,有单周期指令、双周期指令和四周期指令。
51单片机相对于STC15单片机和STC8单片机:
需要外接晶振;机器周期=12个振荡周期;其他功能。