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

📄 main.c

📁 周立功PXA270教学实验箱的ARM汇编指令实验1
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: main.c
** Last modified Date: 2006-09-21
** Last Version: v1.0 
** Description: MagicARM270实验箱的基础实验---GPIO输出控制实验。
**              使用GPIO控制LED1~LED4及蜂鸣器,先蜂鸣器响一声,全部闪烁5次,然后指示0~F的16进制数值。
**
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2006-09-21
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include  "config.h"


// 定义蜂鸣器控制口       
#define  BEEP		(1<<11)				/* GP11 */

// 定义LED1--LED4控制口线
#define  LED1		(1<<(81-64))		/* GP81 */
#define  LED2		(1<<(82-64))		/* GP82 */
#define  LED3		(1<<(83-64))		/* GP83 */
#define  LED4		(1<<(84-64))		/* GP84 */
#define  LED_ALL	(LED1 | LED2 | LED3 | LED4)



/*********************************************************************************************************
** 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-09-21
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  RunBeep(void)
{  
    GPCR0 = BEEP;
    DelayNS(80);        
    GPSR0 = BEEP;
    DelayNS(20); 
}



/*********************************************************************************************************
** Function name: LED_DispAllOn
** Descriptions: 控制LED1~LED4全部点亮。   
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-09-21
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispAllOn(void)
{  
  	GPCR2 = LED_ALL;
}



/*********************************************************************************************************
** Function name: LED_DispAllOff
** Descriptions: 控制LED1~LED4全部熄灭。     
** Input: 无
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-09-21
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispAllOff(void)
{  
   	GPSR2 = LED_ALL;        
}



/*********************************************************************************************************
** Function name: LED_DispNum
** Descriptions: 控制LED1~LED4显示指定16进制数值。LED4为最高位,LED1为最低为,点亮表示该位为1。      
** Input: dat      显示数值(最低4位有效)
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-09-21
**-------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  LED_DispNum(uint32 dat)
{
    dat = dat & 0x0000000F;     // 参数过滤
    
    // 控制LED4--LED1显示(d3--d0位)
    GPSR2 = LED_ALL;    
 	GPCR2 = dat << (81-64);    
}



/*********************************************************************************************************
** Function name: main
** Descriptions: 初始化I/O,然后控制LED显示。            
** Input: 无
** Output: 系统返回值0
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by: 黄绍斌
** Modified Date: 2006-09-21
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  main(void)
{	
	uint32  i;
	
	// 初始化I/O
	GPDR0 = GPDR0 | BEEP;		// 设置BEEP控制口为输出模式
	GPDR2 = GPDR2 | LED_ALL;	// 设置LED灯控制口为输出模式
	GAFR0_L = GAFR0_L & ( ~(0x03<<22) );	// 设置BEEP控制口为GPIO功能
	GAFR2_U = GAFR2_U & ( ~(0xFF<<2) );  	// 设置LED灯控制口为GPIO功能        
    
    // LED显示控制
    while(1)
    {
        RunBeep();              // 蜂鸣器响一声
        
        // LED全闪烁5次
        for(i=0; i<5; i++)
        {   
            LED_DispAllOff();   // LED全熄灭
            DelayNS(25);
            LED_DispAllOn();    // LED全点亮
            DelayNS(25);            
        }        
        
        // 控制LED指示0~F的16进制数值
        for(i=0; i<16; i++)
        {
            LED_DispNum(i);     // 显示数值i
            DelayNS(25);
        }
    }               
    	
   	return(0);
}

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

⌨️ 快捷键说明

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