📄 led.c
字号:
/*******************************************
文件:LED.C
环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10
硬件:ATMEGA16芯片
日期:2006年12月10日
功能:驱动开发板上的LED。1. 流水灯 2.闪烁指定的LED
备注:参考《AVR系列单片机C语言编程与应用实例》(清华大学出版社)
/******************************************/
#include <iom16v.h> //包含型号头文件
#include <macros.h> //包含"位"操作头文件
#include <stdio.h> //标准输入输出头文件
/*******************************************
函数名称: One_led
功 能: 点亮或者熄灭指定的LED
参 数: number--指定的LED
light--为TRUE的时候为点亮LED,为FALSE的时候为熄灭LED
返回值 : 无
/********************************************/
void One_led(uchar number,uchar light)
{uchar i;
if(light==TRUE) //点亮操作
{
PORTB&=~BIT(number); //输出数据
PORTA|=BIT(LEDLK); //更新数据
Delayms(5); //调整时序
PORTA&=~BIT(LEDLK); //锁存数据
}
else
{
PORTB|=BIT(number); //输出数据
PORTA|=BIT(LEDLK); //更新数据
Delayms(5); //调整时序
PORTA&=~BIT(LEDLK); //锁存数据
}
}
/*******************************************
函数名称: All_led
功 能: 点亮或者熄灭全部LED
参 数: light--为TRUE的时候为点亮全部LED,为FALSE的时候为熄灭全部LED
返回值 : 无
/********************************************/
void All_led(uchar light)
{
if(light)
{
PORTB&=~ALLLED;
PORTA|=BIT(LEDLK);
Delayms(5);
PORTA&=~BIT(LEDLK);
}
else
{
PORTB|=ALLLED;
PORTA|=BIT(LEDLK);
Delayms(5);
PORTA&=~BIT(LEDLK);
}
}
/*******************************************
函数名称: Flow_led
功 能: 流水灯(循环一次)
参 数: MS--点亮相邻LED的时间间隔
返回值 : 无
/********************************************/
void Flow_LED(uchar MS)
{
uchar i;
for(i=0;i<8;i++)
{
All_led(FALSE); //全部熄灭
One_led(i,TRUE); //点亮指定的LED
Delayms(MS); //延时指定的时间
}
}
/*******************************************
函数名称: Flash_led
功 能: 闪烁指定的LED(循环一次)
参 数: number--指定的LED
MS--LED闪烁的时间间隔
返回值 : 无
/********************************************/
void Flash_LED(uchar number,uchar MS)
{
One_led(number,TRUE); //点亮指定的LED
Delayms(MS); //延时指定的时间
All_led(FALSE); //熄灭所有的LED
Delayms(MS); //延时指定的时间
One_led(number,FALSE); //熄灭指定的LED
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -