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

📄 main.c

📁 深入浅出ARM7_LPC213x/214x EasyARM2131开发板 LPC2131工程模板 演示程序(C)
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:		第二章的例子-在开发板上运行第一个程序。
**
********************************************************************************************************/
#include "config.h"

/* 定义蜂鸣器和KEY1所使用的I/O(操作值),P0.7和P0.16。
   1<<7结果为0x00000080,当把此值写入到GPIO的控制寄存器时,即可控制相应端口的位7的口线,
   比如写入IO0DIR寄存器,P0.7即设置为输出模式;写入IO0SET寄存器,P0.7即可输出高电平1。
*/
#define   BEEP		(1<<7)			// P0.7控制蜂鸣器,低电平鸣叫
#define   KEY1		(1<<16)			// P0.16
/*
******************************************************************************************
** 函数名称 : WaitKey()
** 函数功能 : 等待KEY1按键,当有按键时才退出此函数。
**      	   具有按键去抖功能。
** 入口参数 : 无
** 出口参数 : 无
******************************************************************************************
*/
void  WaitKey(void)
{  	uint32  i;

   	while(1)
   	{  	// 等待KEY1按下(即等待KEY1对应的口线为低电平,若为高电平则一直循环等待)
   		// 通过IO0PIN读取P0.0~P0.31口的电平值,屏蔽其它位后判断P0.7是否为低电平。
   		while( (IO0PIN&KEY1)!=0 );
   	
      	for(i=0; i<50000; i++);				// 软件延时,去抖动(根据系统时钟调整)
      	
      	// 判断KEY1是否仍为低电平,若是表明按键有效,否则表明是假按键
      	if((IO0PIN&KEY1) == 0) break;	
   	}
   
    // 等待KEY1放开(即等待KEY1对应的口线为高电平,若为低电平则一直循环等待)
   	while((IO0PIN&KEY1) == 0); 
}

/*
******************************************************************************************
** 函数名称 : DelayNS()
** 函数功能 : 长软件延时。
** 入口参数 : dly		延时控制值,值越大延时越长
** 出口参数 : 无
******************************************************************************************
*/
void  DelayNS(uint32  dly)
{  uint32  i;

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

/*
******************************************************************************************
** 名称 : main()
** 功能 : 初始化GPIO,然后等待KEY1按键,若有按键则控制蜂鸣器响两声。
******************************************************************************************
*/
int main (void)
{	// 由于LPC2131的P0口的I/O与其它功能复用,比如P0.7与PWM2、SSEL0、EINT2复用,
   	// 所以要先设置管脚连接。把口线设置为GPIO功能时,才能进行I/O控制。
	PINSEL0 = 0x00000000;	// 设置P0.0~P0.15为GPIO功能
	PINSEL1 = 0x00000000;	// 设置P0.16~P0.31为GPIO功能
	
	IO0DIR  = BEEP;			// 设置BEEP控制口P0.7为输出模式,(P0的)其它I/O为输入模式
	IO0SET  = BEEP;			// 控制BEEP(P0.7)输出高电平1
	
	while(1)
	{	WaitKey();			// 等待KEY1按键
	
	    // 控制蜂鸣器响第一声
		IO0CLR =  BEEP;		// 控制BEEP(P0.7)输出低电平0,蜂鸣器响
		DelayNS(20);		// 延时
		IO0SET =  BEEP;		// 控制BEEP(P0.7)输出高电平1,蜂鸣器不响
		DelayNS(30);		// 延时
		
		// 控制蜂鸣器响第二声
		IO0CLR =  BEEP;
		DelayNS(20);
		IO0SET =  BEEP;
		DelayNS(20);
	}
    return 0;
}

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

⌨️ 快捷键说明

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