单片机100列3-15 - 迟顿的日志- 网易博客

单片机100列3-15

2010-04-20 11:31:34 阅读12 评论0 字号:

//

#include<reg51.h>  //包含51单片机寄存器定义的头文件

void main(void)

  {

    P1=0xfe; //P1=1111 1110B,即P1.0输出低电平

  }

//

#include<reg51.h>    //包含单片机寄存器的头文件

/  ****函数功能:延时一段时间**/

void delay(void)        //两个void意思分别为无需返回值,没有参数传递

{

  unsigned int i;       //定义无符号整数,{zd0}取值范围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();  //延时一段时间

      }

}

 //

#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

       }

}

//

#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;   //{dy}个灯亮

              delay();   //调用延时函数

              P3=0xfd;   //第二个灯亮

              delay();   //调用延时函数

              P3=0xfb;   //第三个灯亮

              delay();   //调用延时函数

              P3=0xf7;   //第四个灯亮

              delay();   //调用延时函数

              P3=0xef;   //第五个灯亮

          delay();   //调用延时函数

              P3=0xdf;   //第六个灯亮

             delay();   //调用延时函数

              P3=0xbf;   //第七个灯亮

          delay();   //调用延时函数

              P3=0x7f;   //第八个灯亮

          delay();   //调用延时函数 

     }  }          //

#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;   //{dy}个灯亮

              delay();  //调用延时函数

               x=0xfd;  //第二个灯亮

              delay();  //调用延时函数

               x=0xfb;  //第三个灯亮

              delay();  //调用延时函数

               x=0xf7;  //第四个灯亮

              delay();  //调用延时函数

              x=0xef;   //第五个灯亮

          delay();  //调用延时函数

              x=0xdf;   //第六个灯亮

             delay();  //调用延时函数

              x=0xbf;   //第七个灯亮

          delay();  //调用延时函数

              x=0x7f;   //第八个灯亮

          delay();  //调用延时函数   

     }  }           

//

#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++)

                 ;        //空操作

}

/ ***  函数功能:主函数    ********/

void main(void) 

{

  unsigned char i;

  while(1)

     {

       for(i=0;i<3;i++)

          {

          P1=0xfe;     //P1.0口的灯点亮

           int_delay(); //延时一段较长的时间

           P1=0xff;     //熄灭

           int_delay(); //延时一段较长的时间

          }

     for(i=0;i<3;i++)

          {

          P1=0xef;     //P1.4口的灯点亮

           char_delay(); //延时一段较长的时间

           P1=0xff;     //熄灭

           char_delay(); //延时一段较长的时间

          }  

        

      }  }         //

#include<reg51.h>

void main(void)  

{ 

  unsigned char m,n;

  m=43;     //即十进制数2x16+11=43

  n=60;     //即十进制数3x16+12=60

  P1=m+n;  //P1=103=0110 0111B,结果P1.3P1.4P1.7 口的灯被点亮

  P0=n-m;  //P0=17=0001 0001B,结果P0.0P0.4的灯被熄灭

 }         

//

#include<reg51.h> //包含单片机寄存器的头文件

void main(void) 

{

  unsigned char m,n;

  unsigned int s;

  m=64;

  n=71;

  s=m*n;       //s=64*71=4544,需要16位二进制数表示,高8位送P1口,低8位送P0

               //由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0

                       //两边同除以256,可得17+192/256=H3*16+H2+H1*16+H0/256

                       //因此,高816进制数H3*16+H2必然等于17,即4544除以256的商

                       //816进制数H1*16+H0必然等于192,即4544除以256的余数

            

  P1=s/256;     //8位送P1口 ,P1=17=11H=0001 0001B, P1.0P1.4口灭,其余亮

  P0=s%256;     //8位送P0 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮

}

//

#include<reg51.h>   //包含单片机寄存器的头文件

void main(void) 

{

  P1=36/5;          //求整数

  P0=((36%5)*10)/5; //求小数

  while(1)         

    ;              //无限循环防止程序“跑飞”

 }         

//

#include<reg51.h>   //包含单片机寄存器的头文件

/ ***  函数功能:延时一段时间    ********/

void delay(void)

{

   unsigned int i;  

     for(i=0;i<20000;i++)

         ;

}

/ ***  函数功能:主函数    ********/

void main(void) 

{

  unsigned char i;

  for(i=0;i<255;i++)  //注意i的值不能超过255

   {

       P0=i;    //i的值送P0

       delay(); //调用延时函数

     }

}  //

#include<reg51.h>   //包含单片机寄存器的头文件

void main(void) 

{

  P0=(4>0)&&(9>0xab);//将逻辑运算结果送P0

  while(1)

    ;    //设置无限循环,防止程序“跑飞”

}

//

#include<reg51.h>   //包含单片机寄存器的头文件

void main(void) 

{

  P0=(8>4)?8:4;//将条件运算结果送P0口,P0=8=0000 1000B

  while(1)

    ;    //设置无限循环,防止程序“跑飞”

}  //

#include<reg51.h>   //包含单片机寄存器的头文件

void main(void) 

{

  P0=0xa2^0x3c;//将条件运算结果送P0口,P0=8=0000 1000B

  while(1)

    ;    //设置无限循环,防止程序“跑飞”

}

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【单片机100列3-15 - 迟顿的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——