天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術(shù)熱線: 4007-888-234

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

LED流水燈

更新時(shí)間: 2019-03-26

LED流水燈
 

/****************************************************************************
*                   (C) Copyright 2008,單片機(jī)初學(xué)者
*                          All Rights reserved.
* 項(xiàng) 目 名 稱(chēng) :  EDN51超級(jí)流水燈          
* 本 文件名稱(chēng) :  ledshow3.c  
* 當(dāng) 前 版 本 :  V1.0       
* 完 成 日 期 :  2008年4月7日
* 描       述 :
*                 此程序?qū)崿F(xiàn),8個(gè)燈從第一個(gè)開(kāi)始依次漸亮,直到最后一個(gè)。再?gòu)淖?br/>*   后一個(gè)起漸暗,直到第一個(gè)。如此循環(huán)往復(fù)。這才是真正的流水燈
*            
*****************************************************************************/

# include

/****************************定義一下,方便使用*******************************/

# define led P0     //led接在P0口
# define Ton 40        //基準(zhǔn)脈寬0.04ms
# define true 1


code unsigned char stop[3] _at_ 0x3B;   //Mon51用,絕對(duì)地址引用

unsigned char LEDflag = 0;    //全局變量,最大255,保存T0中斷次數(shù)
static unsigned char ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

/*****************************************************************************
** 函數(shù)名稱(chēng): timer_init()
** 入口參數(shù):無(wú)
** 出口參數(shù):無(wú)
** 功能描述: 定時(shí)器初始化,T0模式2,8為自動(dòng)載入
*****************************************************************************/
void timer_init()    //定時(shí)器初始化
{
 TMOD = 0x02;    //T0 方式2,8位自動(dòng)載入
 TH0 =  256 - Ton;   //T0初始值
 TL0 =  256 - Ton;   //重載值
 TR0 = true;     //啟動(dòng)T0
 ET0 = true;     //開(kāi)T0,T1中斷
 EA = true;     //全局中斷允許
}

/*****************************************************************************
** 函數(shù)名稱(chēng): time0_int()
** 入口參數(shù):中斷1
** 出口參數(shù):無(wú)
** 功能描述: 使用工作組3,使用工作組0的時(shí)候會(huì)出錯(cuò),根據(jù)反匯編分析,應(yīng)該是中斷和led
** show的函數(shù)用了同一組寄存器,導(dǎo)致變量被修改,程序運(yùn)行混亂
*****************************************************************************/
void time0_int() interrupt 1 using 3  //T0中斷函數(shù),中斷1,使用工作組3
{
 LEDflag++;      //修改LEDflag
}


/*****************************************************************************
** 函數(shù)名稱(chēng): led_show4()
** 入口參數(shù):無(wú)
** 出口參數(shù):無(wú)
** 功能描述: 聲明臨時(shí)變量i,j,j用來(lái)控制數(shù)組ledon的下標(biāo),點(diǎn)亮不同的led,i用來(lái)控制
**    亮度, 實(shí)現(xiàn)led亮度漸變
*****************************************************************************/

led_show4()
{
 unsigned char i = 0,j = 0;  // i初始化

 for(j = 0;j<=7;j++){
 i = 0;       // i初始化
 while(i!=255)     // 由暗變亮
 {
  if(LEDflag == 0)  // 點(diǎn)亮
  {
  led = ledon[j];
  }
  if(LEDflag == i)  // 熄滅
  {
  led = 0xff;
  }
  if(LEDflag == 255)    //修改變量
  {
   i++;      
  }
 }
 }

 for(j=7;j>=0;j--){
 i = 0;       // i初始化    
 while(i!=255)     // 由亮變暗
 {
  if(LEDflag == 0)  // 熄滅
  {
  led = 0xff;
  }
  if(LEDflag == i)  // 點(diǎn)亮
  {
  led = ledon[j];
  }
  if(LEDflag == 255)  //修改變量
  {
   i++;
  }
 }  
 }  
}

void main()
{
 timer_init();
 while(1)
 {

  led_show4();

 }
}

404
返回首頁(yè) |  返回上一頁(yè)
联系我们: 河南省| 秦安县| 肃南| 西贡区| 平昌县| 邹平县| 镇坪县| 上饶市| 满洲里市| 赣榆县| 咸阳市| 明光市| 汾阳市| 南溪县| 高要市| 衡南县| 鹤岗市| 池州市| 拜泉县| 清流县| 南阳市| 讷河市| 锡林浩特市| 商丘市| 温州市| 古田县| 监利县| 武山县| 延长县| 郸城县| 杭锦旗| 阜新市| 彭阳县| 湛江市| 亳州市| 卢湾区| 沈阳市| 句容市| 郓城县| 柘荣县| 左权县|