单片机
返回首页

C51 keil v4 流水灯简单代码的编写

2020-05-16 来源:eefocus

#include

#include'intrins.h'

typedef unsigned char u8;/*char 为1字节,8位  */

typedef unsigned int u16;

/*一般情况下用int,因为unsigned char取值范围为0~255;而int为65535;

用u16,u8使代码的可移植性高   */

#define led P0

//sbit led=P0^0;

//两种表示方式

void delay(u16 i)

{

while(i--);

}//运用延时函数达到使led灯闪烁的目的

void main()

{

/*

while(1)

{

led=1;

delay(50000);//i=1时,约等于是10us,所以50000是500ms

led=0;

delay(50000);

}

//这段代码实现一个led灯的闪烁。即亮了0.5秒后,暗0.5秒。但是由于delay函数是不精确的,所以时间不是准确的0.5s

*/

 

 

        /*u8 i;

        led=0x01;//表示16进制,第一个led灯   0000  0001

        delay(50000);  

while(1)

{

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

        {

        led=(0x01<        delay(50000);

        }

}

        //这段代码实现了八个led灯的依次点亮,实现了流水灯的功能

*/

 

         u8 i;

led=0x01;

delay(50000);

while(1)

{

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

                {

                led=_crol_(led,1);

        delay(50000);

        }

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

        {

        led=_cror_(led,1);

        delay(50000);

        }

}

        

 

         /*这段代码实现了走马灯的功能1~8依次亮,接着8~1亮

        因为运用了_cror_(a,b)函数,所以需要引用头文件instrins.h

        至于为什么上一段代码是i<8,这一段是i<7;

        其实是根据具体操作来的,亲故可以自行体验下他的用法

        第二段代码是led=(0x01<        最后一段代码是led=_crol_(led,1);是运用了左移函数,且赋值给了led,所以led每次循环的起始源是不同的。

        值在i=0循环的时候就变成了0010起始,而上一段还是0001起始。    */

}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 非常简单的150W功放电路图

  • 优化电路板布局的简单方法

  • 一个简单的立体声平衡指示器电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章