第一个单片机程序-----流水灯

#include <reg52.h>

#define SIZE 8

void delay(void);	 				/*function prototype of delay*/
void light_on_led(int num);		    /*function prototype of light_led*/
void flow_water_led(void);	  		/*function prototype of flow_water_led*/

int main (void)
{
	flow_water_led();

  	return 0;
}


/*the function of delay*/
void delay(void)
{
	unsigned int  num = 3000;
	while (num--);
}

/*the function of light_led*/
void light_on_led(int num)
{
	unsigned char led  = 0x00;
	unsigned char temp = 0x01;
	
	temp <<= num-1;		  		/*move the 1*/

	led ^= temp;


	P1 = ~led;		  
}	


/*the function of flow_water_led()*/
void flow_water_led(void)
{
	int i = 0;
	
	while (1){

		while (i < SIZE) {

			light_on_led(i+1);
			delay();
			P1 = 0xff;
			delay();
			i++;
		}

		i--;

		while (i > -1){
			light_on_led(i+1);
			delay();
			P1 = 0xff;
			delay();
			i--;
		}

	}


}
	

说明:

1.程序分为三个主要部分,点亮任意一个num的灯,延迟,生成流水线。

2.点亮用的移位位取反,总线操作

3.延迟用的while()循环

4.流水线设计为顺序下去,倒序上来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值