?? lesson1.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> //標準輸入輸出頭文件
#include <AVR_PQ1A.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; //ALLLED=0xFF,使全部LED都亮
PORTA|=BIT(LEDLK); //輸出數據
Delayms(5); //調整時序
PORTA&=~BIT(LEDLK); //鎖存數據
}
else
{
PORTB|=ALLLED; //ALLLED=0xFF,使全部LED都滅
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++) //循環8次,8個LED依次點亮
{
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
}
/*******************************************
函數名稱: main
功 能: 1. 流水燈 2.閃爍指定的LED
參 數: 無
返回值 : 無
/********************************************/
void main(void)
{
uchar i,bit;
i=0; //i=0時為流水燈,i=1時為閃爍燈
bit=0; //bit指定閃爍的LED
Board_init( ); //初始化開發板
while(1)
{
switch(i)
{
case 0:
Flow_LED(200); //i=0,以流水燈的方式顯示
break;
case 1:
Flash_LED(bit,100); //i=1,以閃爍燈的方式顯示
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -