/*函数的使用和熟悉*/
//实例3:用单片机控制第一个灯亮
#include<reg51.h>  //包含51单片机寄存器定义的头文件
void main(void)
  {
  while(1)      //无限循环
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口状态分别送入P0、P2、P3口:认识I/O口的引脚功能
#include<reg51.h>  //包含单片机寄存器的头文件
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)
********************************************************/
void main(void)
{
    while(1)          //无限循环
      {   
        P1=0xff;        // P1=1111 1111, 熄灭LED
        P0=P1;        // 将 P1口状态送入P0口
        P2=P1;        // 将 P1口状态送入P2口
      P3=P1;        // 将 P1口状态送入P3口
      }
}
//实例6:使用P3口流水点亮8位LED
#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口地址的操作流水点亮8位LED
#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) //延时一段较长的时间c语言编程小游戏
{
  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++)
              ;        //空操作
}
/******************************************************

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。