led8.c

来自「mega8L上点亮LED的小程序」· C语言 代码 · 共 33 行

C
33
字号
#include<avr/io.h>  
#include<stdio.h>
 /*1.2行预编译语句,它们告诉编译器一些重要信息。如单片机的寄存器名称对应的向量等等DDRB、PORTB就在io.h内定 
 /*义的(其实它在本例中是在iom16.h中定义的,io.h是所有AVR单片机)公共定义它 从 makefile中提取单片机类型,
 /*来从include\avr下取出对应的实际 io*.h文件)*/
void delay02s(void)               //延时0.2秒子程序
         {
			unsigned char i,j,k;  
			for(i=20;i>0;i--)     
			for(j=20;j>0;j--)
			for(k=248;k>0;k--);
          }
int main(void)    //avr-gcc的主函数类型必须为int类型。否则warning:return type of 'main' is not 'int'. 
{
	unsigned char i,j,k;
	DDRB=0xFF;    //让PORTB全部为输出口
	PORTB=0xFF;		//在端口PORTB中输出高电平
	for(;;)
	{
		for(k=0;k<8;k++)
		{
			PORTB=~(1<<k);		
			delay02s();		//两个FOR循环构成的延时部分,它可以使LED移动的速度放慢
			delay02s();
			PORTB=0xFF;
		}			//9-21是一个循环。目的是将端口PORTB的某一位置低,让LED点亮
		
	}				//无限循环语句
	
}

/*向端口的某一位(由变量K指定),其中十分重要的是~(1<<K)部分,前面的~是取反,其中的1<<K在C语言中的意思
是将1左移变量K指定的位数*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?