/****************************〃初始化程序*****************************/
voidInitial(void)
{
P1DIR|=OxOC;〃P1_2、Pl_3定义为输出
GLED=1;
}
//主函数
***************
voidmain(void)
Initial();〃调用初始化函数
wh订e⑴
{
GLED=!
GLED;
RLED=!
RLED;
Delay(50000);
}
}
P1DIR|=OxOC;该语句定义Pl口的Pl.2和Pl.3方向为输出;
RLED=0;红灯初始化低电平,程序开始运行时熄灭;
GLED=1;绿灯初始化高电平,程序开始运行时点亮;
GLED=!
GLED;RLED=!
RLED;这两个语句让LED状态翻转,即若当前LED点亮,则将它熄灭,若当前LED熄灭,则将它点亮。
实验总结
该实验完成了对CC2530芯片的LED进行控制,实际上是对CC2530芯片的GPIO的控制。
掌握芯片LED控制之后,在复杂的程序中可以用LED作为一种很好的调试手段。
实验二:
CC2530定时器实验
一、实验目的
了解并学会使用CC2530芯片的定时器。
二、实验容
'用定时器1和定时器3采用中断方式实现定时,分别控制红绿灯的状态翻转o
°定时器1自由运行模式,8分频;定时器3自由运行,128分频。
定时器1为16位定时器,在自由运行模式下,从0x0000到OxFFFF反复计数;定时器3为8位定时器,在自由运行模式下,从0x00到OxFF反复计数。
当到达计时值时,定时器会产生中断,中断函数就是处理相应定时器产生的中断。
三、实验环境
硬件:
鼎轩WSN实验箱(汇聚网关、烧录线),PC机;软件:
IAR软件。
四、实验步骤
CC2530芯片包含四个定时器(Timerl、Timer2、Timer3.Timer4)和一个休
眠定时器(SleepTimer)。
Timerl是16位的定时器,支持典型的定时/计数功能以及PWM功能,该定时
器共有三个捕捉/比较通道,每个通道使用一个单独的I/O引脚。
Timerl的时钟频率是由系统时钟分频得到,首先由寄存器中的CLKON.TICKSPD分频,系统时钟是32MHz的情况下,CLKON.TICKSPD可以将该时钟频率分频到32MHz(TICKSPD为000)、16MHz(TICKSPD为001)、8MHz(TICKSPD为010)、4MHz(TICKSPD为Oil)、2MHz(TICKSPD为100)、1MHz(TICKSPD为
101)、0.5MHz(TICKSPD为110)、0.25MHz(TICKSPD为111);分
频后的时钟频率可以被T1CTL.DIV分频,分频数为1、8、32、128。
因此,在32MHz的系统频率下,Timerl的最小时钟频率为1953.125Hz,最大时钟频率为32MHz。
Timer2主要用于为802.15.4标准中的CSMA/CA算法提供定时。
该定时器即使在节点处于低功耗状态下仍然运行。
Timer3和Timer4是两个8位的定时器,主要用于提供定时/计数功能。
SleepTimer主要将节点从超低功耗工作状态唤醒。
本实验用到定时器1和定时器3,当定时器到达计数值时,产生一处中断,在中断处理函数里面进行相应处理。
与定时器1相关的控制寄存器有:
T1CTL(0xE4)-定时器1的控制和状态
位
名称
复位
R/W
描述
7;4
-
00000
RO
3:
2
DIV[1:
0)
00
R/W
分频器划分似产生匸动的时紳边绿用來更新计数器.如下:
00:
标记频斜】
01:
沁频喲8
10:
标记頻率82
II:
标记極枷128
1:
0
MODE)1:
0)
00
R/W
览押定时出1検式。
比时審慄作槐式通过卜列方式选推
0U:
樹停运行。
01:
自山运行,从0x0000刮OxFFFF反复计数。
10:
模.M0x0000TIJT1CC0反复计数c
11:
正il牝憎讣如从0x0000到T1CC0反以1数并」丄从TlCCOfMil数到04000
T1STAT(OxAF)-定时器1状态
位
W.
Rd
描述
7:
6
-
0
K0
5
OVFIF
0
R/W0
定时器inm溢出中断标志.当计数器在自由运行或模模式卜达到最终计数值时设抚当在巧创计数模式卜达到零时倒计如写1没仃影响.
4
CH41F
0
RM
定时器1通道4中晰标击。
兰迪道4中断条件发生时畑耳1没右妙响。
3
CH31F
0
R/W0
定时器1通道3中断标晶当通逍3中断条件发生討设置.写1没有題响。
2
CII21F
0
RW0
定时器1通道2中断标忐。
为通道2中断条件发生时设直.好1没右彩响。
1
CH11F
0
RW0
定时器1通逍1中断标氐当迪道1中断条件发生时设置・51没有越响。
0
CH0IF
0
R/W0
定时器0通道4中断标•忐。
下通道0中断条件发生时设置.写1没有影响。
1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与PC机USB接口;
3)双击打开目录(/cc2530-simple-demo/TlT3interrupt)7的工程图标T1T3_interrupt,ew打开工程;
4)丘击IAR中的图标按钮编译程序;
5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;
6)实验现象为红绿灯的状态定时翻转。
7)修改实验代码,用定时器4实现红灯的状态定时翻转。
程序代码
程序员文件为/cc2530-simple-demo/TlT3interrupt/TlT3_interrupt,c.
/********************************
初始化LED灯
*********************************/
voidInitLed(void)
P1DIR|=OXOC;〃P1_2.P1_3定义为输岀
RLED=1;
GLED=1;//点亮红灯和绿灯
}
/********************************初始化定时器1
******************:
+:
*******:
+:
******/voidInitTl()
T1CTL=0x05;//8分频,自由运行,从0x0000到OxFFFF反复//计数
IEN1|=0X02;〃开定时器1中断
)
/********************************
初始化定时器3
*********************************/
voidInitT3()
{
T3CTL=0xF8;//128分频,开溢出中断,启动定时器
IEN1|=0X08;//开定时器3中断
)/***********************************************************主函数************************************************************/
voidmain(void)
{
Init_Led();//初始化LED灯InitTl();//初始化定时器1InitT3();//初始化定时器3EA=1;//使能全局中断}
/******************************定时器1中断处理函数
*******************************/
ttpragmavector二T1VECTOR
interruptvoidT1IRQ(void)
r"
EA=0;
if(TlSTAT&0x20)//判断是否是定时器1产生的中断{
if(++count>=50)count=0;
RLED=!
RLED;//RLED闪烁
}
IRCON&二"0x02;〃清中断标志
}
EA=1;
}
/******************************
定时器3中断处理函数
*******************************/
^pragmavector=T3_VECTOR
_interruptvoidT3_IRQ(void)
{
EA=0;
if(TIMIF&0x01)//判断是否是定时器3产生的中断
{
if(++count2>=1000)
{
count2=0;
GLED=!
GLED;//RLED闪烁
}
T3IF二0;//清中断标志
}
EA=1;
}
实验总结
该实验完成了对CC2530芯片的定时器的使用,通过LED来表现定时器的工作过程。
在这个实验中用的定时器的精度为毫秒。
在这个实验中只使用了定时器1和定时器3,我们可以在课后自己动手尝试使用其它的定时器。
实验三CC2530继电器实验
一、实验目的
掌握CC2530芯片GPIO引脚的控制方式,并且掌握继电器的工作方式。
二、实验容
利用timer1定时产生中断,在中断处理中翻转P2.0口的状态,实验继电器状态的翻转。
三、实验环境
硬件:
鼎轩WSN实验箱(汇聚网关、继电器模块、烧录线),PC机;软件:
IAR软件。
四、实验步骤
'继电器(英文名称:
relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。
它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。
通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”o故在电路中起着自动调节、安全保护.转换电路等作用。
继电器分很多类型,本实验使用的是信号继电器,针对我们的试验箱,继电器与P2.OGPIO口相接,P2.0口的电平变化会是继电器“开关"发生变化。
实验步骤
1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑USB接口;
3)打开(\CC2530_simple_demo\cc2530-simple-demo\Relay)T的工程图标Relay,eww打开工程;
4)点击IAR中的图标按钮编译程序;
5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;
6)点击运行程序,可以看到继电器及上面的灯每隔5秒变换一次。
程序代码
程序源文件路径为/cc2530-simple-demo/Relay/Relay.c
定旳器1申断处理函数
#pragmavector=T1_VECTOR
_interruptvoidT1_IRQ(void)
set_EA(mode_off);/f关闭全局中断1
if(T1STAT&_0x20)H判断是否是定时器'产生的丰断{
if(++count1>=200)
{
count1=0;
ledl=!
ledl;//JZ:
作状态扌盲示relay_port=(r&lay_port==0)?
1:
0;
"高低电平交替~
}
IRCON&=~0x02;
//灣中断标志
}
setEA(modeoh、;口打开全局申断
实验总结
该实验使同学们熟悉了继电器的工作方式与使用方法,为以后的综合实验打下了基础O
实验四:
CC2530串口收发数据实验
一、实验目的
熟悉并掌握CC2530芯片串口发送和接收数据的操作,为今后的综合实验打下基础。
二、实验容
J使串口将接收的数据再发送。
三、实验环境
硬件:
鼎轩WSN实验箱(汇聚网关、烧录线、平行串口线),PC机;软件:
IAR软件,串口助手。
4.实验步骤
1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑USB接口;
3)双击打开目录(/cc2530~simple-demo/USARTsendreceive)7的工程图#USART_SR.eww打开工程;
4)£击IAR中的图标按钮编译程序;
5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;
6)用串口线连接汇聚网关上的数据输出口和PC机USB接口,打开串口助手,正确选择串口号(视具体电脑而定)、波特率(9600),其他配置如下图都不更改。
7)在串口助手上字符串输入框,输入需要传输的容,点击发送按钮,可以看到字符串经串口传送给汇聚网关,然后又由串口打印输出,输岀容如下图:
广卜SSCOM3.2(惟者:
聂.牛贡Email:
fnc・・・ba«i回
dmgxuanWSNdingxuanWSNdingxuanWSNdingzuanWSN
9600
▼
厂DIR厂RTS
★大虾开发扳己推出敬请关注!
!
★建百轴⑷祥杨粧擁计们洱.
尢讲入删申子网的大虾陆!
!
数捌立
9
▼
厂定时发送[100°加次
侮止位
1
▼
厂HEX京注7发送新行
校验位
None
▼
宇符皋辎入框:
流控制
None
▼
[dirgxuanVS1F
WWW.51.COM
COM4BH7f9600bps8CTS=0DSR=ORL/
R:
60
关诃吕口|
rww.mci
打开文件1反庭串口号COM4—~
发送文件|保存窗口|活陈窗口1厂hex显示扩展I
8)修改实验代码,实现输入字符1,红灯亮,输入字符2.红灯灭。
串口接收中断处瑾函数
ffpragmavector=URXO_VECTOR
_interruptvoidUART0_ISR(void)
temp=UODBUF;
UODBUF=temp;
while(UTXOIF==0);
UTXOIF=0;
VRXOIF=0;//清中嘲标志
实验总结
该实验完成串口的基本通讯。
在串口通讯中一般有两种方式来接受数据,一种是查询法、一种是中断法。
查询法就是要串口一致处于等待状态,看串口上是不是有数据,一旦数据接收完毕,就开始对接收的数据进行相应的操作。
这个方法需要让程序一致等待串口,所以这种方法效率还是比较低的。
中断法师运用串口的中断服务子程序来完成的,如果串口上有数据的话,那么会调用中断向量,中断向量把程序指针指到相应的中断服务服务程序上。
在中断服务程序完成之后,程序只能还会跳转到中断之前的地址。
这个方法的效率比较高,但是从稳定性上面讲,这种方法不如查询法。
本实验用的是中断法。
实验五CC2530DMA实验
一、实验目的
透过本实验的学习,使使用者熟悉CC2530芯片的DMA传输功能相关暂存器的配置及其使用方法。
二、实验容
'用CC2530芯片DMA控制器将一字符串从源位址转移到目标位址。
三、实验环境
硬件:
鼎轩WSN实验箱(汇聚网关、烧录线、平行串口线),PC机;软件:
IAR软件,串口助手。
四、实验步骤
1.DMA简介
直接存取访问(DMA)控制器可以用来减轻8051CPU核传送数据操作的负担,从而实现在髙效利用电源的条件下的髙性能。
只需要CPU极少的干预,DMA控制器就可以将数据从诸如ADC或RF收发器的外设单元传送到存储器。
DMA控制器协调所有的DMA传送,确保DMA请求和CPU存储器访问之间按照优先等级协调、合理地进行。
DMA控制器含有若干可编程的DMA通道,用来实现存储器-存储器的数据传送。
DMA控制器控制整个XDATA存储空间的数据传送。
由于大多数SFR寄存器映射到DMA存储器空间,这些灵活的DMA通道的操作能够以创新的方式减轻CPU的负担,例如,从存储器传送数据到USART,或定期在ADC和存储器之间传送数据样本,等等。
使用DMA还可以保持CPU在低功耗模式下与外设单元之间传送数据,不需要唤醒,这就降低了整个系统的功耗。
DMA控制器的主要功能如下:
(1)5个独立的DMA通道;
(2)3个可以配置的DMA通道优先级;
(3)32个可以配置的传送触发事件;
(4)源地址和目标地址的独立控制;
(5)单独传送、数据块传送和重复传送模式;
(6)支持传输数据的长域域,设置可变传输长度;
(7)既可以工作在字模式,又可以工作在字节模式。
2.DMA参数配置
DMA控制器的配置需要由使用者软件来完成。
在一个DMA通道可被使用之前必须要配置一些参数。
DMA控制器的5个通道的行为都与下列配置参数有关:
3.源地址
DMA通道从该位址开始读取资料。
该位址是XDATA存储器空间中的位址,可以具体映射到下面几种存储器或暂存器:
SRAM存储器(映射位址:
0x0000~SRAM_SIZE-1),容量为8KB可选的FLASH存储器BANK(映射位址,:
XBANK(0x8000、OxFFFF)),容量为32KBXREG(映射位址:
0x6000~0x63FF),容量为1KB可被映射到XDATA存储器空间的SFR(映射位址:
0x7080~0x70FF),容量为128Byte
4.目标位址
DMA通道从该位址开始写入资料。
该位址是XDATA存储器空间中的位址,可以具体映射到下面几种存储器或暂存器:
SRAM存储器(映射位址:
0x0000~SRAM_SIZE-1),容量为8KB可选的FLASH存储器BANK(映射位址:
XBANK(0x8000、OxFFFF)),容量为32KBXREG(映射位址:
0x6000~0x63FF),容量为1