函数的使用和熟悉
实例单片机编程100例详解3:用单片机控制第一个灯亮
#include<reg51.h>  //包含51单片机寄存器定义的头文件
void main(void)
  {
    P1=0xfe; //P1=1111 1110B,即P1.0输出低电平
  }
实例4:用单片机控制一个灯闪烁:认识单片机的工作频率
#include<reg51.h>    //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void)        //两个void意思分别为无需返回值,没有参数传递
{
  unsigned int i;      //定义无符号整数,最大取值范围65535
  for(i=0;i<20000;i++)  //20000次空循环
        ;              //什么也不做,等待一个机器周期
}
/*******************************************************
函数功能:主函数 C语言规定必须有也只能有1个主函数)
********************************************************/
void main(void)
{
  while(1)      //无限循环
  {
      P1=0xfe;  //P1=1111 1110B P1.0输出低电平
      delay();  //延时一段时间
      P1=0xff;  //P1=1111 1111B P1.0输出高电平
      delay();  //延时一段时间
    }
}
实例5:将 P1口状态分别送入P0P2P3口:认识I/O口的引脚功能
#include<reg51.h>  //包含单片机寄存器的头文件
/*******************************************************
函数功能:主函数 C语言规定必须有也只能有1个主函数)
********************************************************/
void main(void)
{
    while(1)          //无限循环
      {   
        P1=0xff;    // P1=1111 1111B,熄灭LED
        P0=P1;        // P1口状态送入P0
        P2=P1;        // P1口状态送入P2
      P3=P1;        // P1口状态送入P3
      }
}
实例6:使用P3口流水点亮8LED
#include<reg51.h>  //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void)
  {
      unsigned char i,j;
      for(i=0;i<250;i++)
        for(j=0;j<250;j++)         
          ;
      }
/*******************************************************
函数功能:主函数
********************************************************/
void main(void)
{
  while(1)
      {
          P3=0xfe;  //第一个灯亮
            delay();  //调用延时函数
            P3=0xfd;  //第二个灯亮
            delay();  //调用延时函数
            P3=0xfb;  //第三个灯亮
            delay();  //调用延时函数
            P3=0xf7;  //第四个灯亮
            delay();  //调用延时函数
            P3=0xef;  //第五个灯亮
          delay();  //调用延时函数
            P3=0xdf;  //第六个灯亮
            delay();  //调用延时函数
            P3=0xbf;  //第七个灯亮
          delay();  //调用延时函数
            P3=0x7f;  //第八个灯亮
          delay();  //调用延时函数 
    }
}
实例7:通过对P3口地址的操作流水点亮8LED
#include<reg51.h>  //包含单片机寄存器的头文件
sfr x=0xb0;  //P3口在存储器中的地址是b0H 通过sfr可定义8051内核单片机
          //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void)
  {
      unsigned char i,j;
      for(i=0;i<250;i++)
        for(j=0;j<250;j++)       
          ;  //利用循环等待若干机器周期,从而延时一段时间
      }
/*****************************************
函数功能:主函数
******************************************/
void main(void)
{
    while(1)
      {
            x=0xfe;  //第一个灯亮
            delay();  //调用延时函数
              x=0xfd;  //第二个灯亮
            delay();  //调用延时函数
            x=0xfb;  //第三个灯亮
            delay();  //调用延时函数
            x=0xf7;  //第四个灯亮
            delay();  //调用延时函数
            x=0xef;  //第五个灯亮
          delay();  //调用延时函数
            x=0xdf;  //第六个灯亮
            delay();  //调用延时函数
            x=0xbf;  //第七个灯亮
          delay();  //调用延时函数
            x=0x7f;  //第八个灯亮
          delay();  //调用延时函数   
    }
}
       
实例8:用不同数据类型控制灯闪烁时间
#include<reg51.h>  //包含单片机寄存器的头文件
/******************************************************
函数功能:用整形数据延时一段时间
******************************************************/
void int_delay(void) //延时一段较长的时间
{
  unsigned int m;    //定义无符号整形变量,双字节数据,值域为0~65535
  for(m=0;m<36000;m++)
            ;          //空操作     
}
/******************************************************
函数功能:用字符型数据延时一段时间
******************************************************/
void char_delay(void) //延时一段较短的时间
{
  unsigned char i,j;  //定义无符号字符型变量,单字节数据,值域0~255
    for(i=0;i<200;i++)
      for(j=0;j<180;j++)
              ;        //空操作
}
/******************************************************