⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 实现相邻两个LED指示灯依次从左至右显示
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN Electronics Co.,LTD.
**                                      graduate school
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2006-07-08
** Last Version:		1.0
** Descriptions: DeviceARM2410A的基础实验---GPIO输出控制实验。
**               使用GPIO控制LED1~LED8及蜂鸣器,先蜂鸣器响一声,LED灯全部闪烁5次,然后控制流水灯显示。
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: 黄绍斌
** Modified date: 2006-07-08
** Version: 1.0
** Descriptions:
**
********************************************************************************************************/
#include "config.h"

// 定义LED控制口 (输出低电平时点亮LED)                                
#define  LED1_CON           (1<<1)      /* GPG1口  */
#define  LED2_CON           (1<<3)      /* GPG3口  */
#define  LED3_CON           (1<<5)      /* GPG5口  */
#define  LED4_CON           (1<<6)      /* GPG6口  */
#define  LED5_CON           (1<<7)      /* GPG7口  */
#define  LED6_CON           (1<<1)      /* GPB1口  */
#define  LED7_CON           (1<<2)      /* GPB2口  */
#define  LED8_CON           (1<<3)      /* GPB3口  */


// 定义蜂鸣器控制口
#define  BEEP		        (1<<10)     /* GPH10口 */	
#define  BEEP_MASK	        (~BEEP)



/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
**              延时时间与系统时钟有关。
** Input: dly	延时参数,值越大,延时越久
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  
	uint32  i;

   	for(; dly>0; dly--) 
       for(i=0; i<50000; i++);
}



/*********************************************************************************************************
** Function name: RunBeep
** Descriptions: 控制蜂鸣器Be一声音。  
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-07-08
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  RunBeep(void)
{  
    rGPHDAT = rGPHDAT & BEEP_MASK;	    // BEEP = 0
    DelayNS(5);
    rGPHDAT = rGPHDAT | BEEP;		    // BEEP = 1 
    DelayNS(5);
}




/*********************************************************************************************************
** Function name: LED_DispAllOn
** Descriptions: 控制LED1~LED8全部点亮。   
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-07-08
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispAllOn(void)
{  
    rGPGDAT = rGPGDAT & (~(0x000000EA));    // GPG1、GPG3、GPG5、GPG6、GPG7均输出0
    rGPBDAT = rGPBDAT & (~(0x0000000E));    // GPB1、GPB2、GPB3均输出0
}



/*********************************************************************************************************
** Function name: LED_DispAllOff
** Descriptions: 控制LED1~LED8全部熄灭。     
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-07-08
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispAllOff(void)
{  
    rGPGDAT = rGPGDAT | 0x000000EA;     // GPG1、GPG3、GPG5、GPG6、GPG7均输出1
    rGPBDAT = rGPBDAT | 0x0000000E;     // GPB1、GPB2、GPB3均输出1
}



/*********************************************************************************************************
** Function name: LED_DispNum
** Descriptions: 控制LED1~LED8显示指定16进制数值。LED8为最高位,LED1为最低为,点亮表示该位为1。      
** Input: dat      显示数值(低8位有效)
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-07-08
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispNum(uint32 dat)
{
    dat = dat & 0x000000FF;     // 参数过滤
          
    if(dat & 0x80) rGPBDAT = rGPBDAT & (~LED8_CON); 
      else rGPBDAT = rGPBDAT | LED8_CON;       
    if(dat & 0x40) rGPBDAT = rGPBDAT & (~LED7_CON); 
      else  rGPBDAT = rGPBDAT | LED7_CON; 
    if(dat & 0x20) rGPBDAT = rGPBDAT & (~LED6_CON); 
      else  rGPBDAT = rGPBDAT | LED6_CON;
    if(dat & 0x10) rGPGDAT = rGPGDAT & (~LED5_CON); 
      else  rGPGDAT = rGPGDAT | LED5_CON;   
    if(dat & 0x08) rGPGDAT = rGPGDAT & (~LED4_CON); 
      else  rGPGDAT = rGPGDAT | LED4_CON;   
    if(dat & 0x04) rGPGDAT = rGPGDAT & (~LED3_CON); 
      else  rGPGDAT = rGPGDAT | LED3_CON;
    if(dat & 0x02) rGPGDAT = rGPGDAT & (~LED2_CON); 
      else  rGPGDAT = rGPGDAT | LED2_CON;
    if(dat & 0x01) rGPGDAT = rGPGDAT & (~LED1_CON); 
      else  rGPGDAT = rGPGDAT | LED1_CON; 
}
// 定义流水灯控制数据
const uint8  LED_DISP[] = 
{   0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
    0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00
};

/*********************************************************************************************************
** Function name: main
** Descriptions: 初始化I/O,然后控制LED显示。          
** Input: 无
** Output: 系统返回值0
** Created by: 黄绍斌
** Created Date: 2006-07-08
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  main(void)
{		
    int  i;
    
    // 初始化I/O
    rGPBCON = (rGPBCON & (~0x000000FC)) | 0x00000054;       // 设置GPB1--GPB3为GPIO输出模式                    
    rGPGCON = (rGPGCON & (~0x0000FCCC)) | 0x00005444;       // 设置GPG1、GPG3、GPG5、GPG6和GPG7为GPIO输出模式                                                       
    rGPHCON = (rGPHCON & (~(0x03<<20))) | (0x01<<20);       // 设置GPH10为GPIO输出模式
    
    while(1)
    {
        RunBeep();              // 蜂鸣器响一声
        
        // LED全闪烁5次
        for(i=0; i<5; i++)
        {   
            LED_DispAllOff();   // LED全熄灭
            DelayNS(5);
            LED_DispAllOn();    // LED全点亮
            DelayNS(50);            
        }        
        
        // 控制LED流水灯显示
        LED_DispAllOff();   // LED全熄灭
        for(i=0; i<16; i++)
        {
            LED_DispNum(LED_DISP[i]);  
            DelayNS(5);
        }
       
    }  
    
   	return(0);
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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