51单片机流水灯程序

刚接触单片机不懂 求程序加每句的注释 !

程序如下:

#include <reg52.h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;


void main()

{

    int i,j;

   //点亮第一个灯

    led1 = 1;

    led2 = 0;

    led3 = 0;

    led4 = 0;

    led5 = 0;

    led6 = 0;

    led7 = 0;

    led8 = 0;

    //延时1秒 

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

 {

   for(j = 0; j < 1000; ++j)

   {

     ;//什么也不做

   }

 }

    //点亮第二个灯

    led1 = 0;

    led2 = 1;

    led3 = 0;

    led4 = 0;

    led5 = 0;

    led6 = 0;

    led7 = 0;

    led8 = 0;    

    //点亮剩余的灯

    //省略……

    while(1);

}

扩展资料:

流水灯几点说明:

void:因为该延时函数不需要返回值,所以写为void

delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。

(): 不需要传入参数,所以括号中为空

至此我们可以把流水灯程序写为以下形式:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09
#include <reg52.h> //52系列单片机头文件
#include <intrins.h> //_crol_ 字符循环左移
#define uint unsigned int //宏定义
#define uchar unsigned char//宏定义
void delayms(uint); //声明子函数
uchar a; //定义uchar类型的变量a
void main() //主函数
{
a=0xfe; //赋初值11111110
while(1) //大循环
{
P1=a;
delayms(500); //延时500毫秒
a=_crol_(a,1); //将a循环左移1位后再赋给a
}
}
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
学习单片机,还需要结合实际硬件电路来编程追问

(10101010)按位或上(01010101)是多少呢是(11111111)吗
如果就是或是多少呢?

追答

是的,按位或口诀可以是有1为1,全0为0.

追问

那不是按位或呢 就是或是多少呀

追答

不论按位或者不按位,只是代表的意义不同罢了,其实质都是有1为1,全0为0。即二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。不知我说的你是否能明白?

本回答被提问者采纳
第2个回答  2020-11-19

来自理科生的浪漫,用51单片机制作心形流水灯

第3个回答  2020-12-08

花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,

第4个回答  2013-10-28
推荐你看郭天祥十天学会单片机,回讲实际程序的,讲的挺好的追问

(10101010)按位或上(01010101)是多少呢是(11111111)吗
如果就是或是多少呢?

追答

是的;我记得视屏上讲得很清楚了啊

相似回答