您的位置:首页 > 其它

IAR环境配置、新建工程、点亮LED灯

2012-11-09 16:41 489 查看
很久以前写的,今天在硬盘中翻腾出来了,拿出来和大家分享。

今天,第一次点亮了led灯,真的好开心。

下面从基础步骤开始详细叙述

1.打开IAR,project-ànew project,(如下图),点击ok

1. File àNew File 创建一个新的文档

Save as led.c 将新创建的文档保存为led.c

此时,就可以在新创建的文档中编辑代码了。

3. 以我的模块为例,有2530RF和QAZB2V1串口转zigbee配置底板,其中QAZB2V1中带有两个LED灯,就是要点亮它们。

由图可以看到,引脚P1_0P1_1分别和LED1 LED2相连。

2. 根据以上电路图写程序如下

#include<ioCC2530.h>

#define uint unsigned int

void Delay(uint);

void Delay(uint n) //延迟函数

{ uint i;

for(i=0;i<n;i++);

for (i=0;i<n;i++);

for (i=0;i<n;i++);

for (i=0;i<n;i++);

for (i=0;i<n;i++);

}

void main()

{

P1DIR|=0X03;//P1-0 P1_1定义为输出

P1=0X00;

while(1)

{

P1=0X03;

Delay(10000);

P1=0X00;

Delay(10000);

}

}

如直接调试,会出现以下提示

(如果设置好了,出现这种情况,可以project——>add file例如led.c来解决)

做设置如下

设置一 Project à Options àGeneral Options àDevice选 CC2530.i51并且设置datamodel 为large

设置二:在GeneralOptions下选择Stack/Heap选项卡,设置XDATA为OX1FF

设置三 、选择Linker à 选configà在 Override Default前面打对勾,然后选择lnk51ew_cc2530.xcl

设置四、在Debugger栏目中,setup选项卡下,选择Driver一项选 Texas Instruments

进行了这些设置后就可以调试下载运行了。

注意:延时的长度一定要设好,不然看不到灯的闪烁。

以下是两个灯不同时闪烁的程序

#include <ioCC2530.h>

#define LOW 0

#define HIGH 1

#define uint unsigned int

#define uchar unsigned char

#define RLED P1_0 //定义LED1为P10口控制

#define YLED P1_1 //定义LED2为P11口控制

void Delay(uint); //延时函数

void InitIO(void); //初始化LED控制IO口函数

void Delay(uint n) //延时函数

{

uint i; //定义一个变量i;

for(i = 0;i<n;i++);

for(i = 0;i<n;i++);

for(i = 0;i<n;i++);

for(i = 0;i<n;i++);

for(i = 0;i<n;i++);

}

void InitIO(void) //初始化IO口程序

{

P1DIR |= 0x03; //P1_0、P1_1定义为输出

RLED = 1;

YLED = 1;

}

void main()

{

InitIO();

while(1)

{

//P1=0X03;

P1_0 = LOW;

Delay(10000);

P1_1 = LOW;

Delay(10000);

P1_0 = HIGH;

Delay(10000);

P1_1 = HIGH;

}

}

程序2

#include <ioCC2530.h>

#define uint unsigned int

#define uchar unsigned char

//定义控制灯的端口

#define RLED P1_0 //定义LED1为P10口控制

#define YLED P1_1 //定义LED2为P11口控制

//函数声明

void Delay(uint); //延时函数

void Initial(void); //初始化P0口

/****************************

//延时

*****************************/

void Delay(uint n)

{

uinttt;

for(tt= 0;tt<n;tt++);

for(tt= 0;tt<n;tt++);

for(tt= 0;tt<n;tt++);

for(tt= 0;tt<n;tt++);

for(tt= 0;tt<n;tt++);

}

/****************************

//初始化程序

*****************************/

void Initial(void)

{

P1DIR|= 0x03; //P10、P11定义为输出

RLED= 1;

YLED= 1; //LED

}

/***************************

//主函数

***************************/

void main(void)

{

Initial(); //调用初始化函数

RLED= 0; //LED1

YLED= 0; //LED2

while(1)

{

YLED = !YLED;

Delay(10000);

RLED = !RLED;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: