CC1110基础实验说明书.docx
- 文档编号:24917859
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:41
- 大小:363.46KB
CC1110基础实验说明书.docx
《CC1110基础实验说明书.docx》由会员分享,可在线阅读,更多相关《CC1110基础实验说明书.docx(41页珍藏版)》请在冰豆网上搜索。
CC1110基础实验说明书
XWWK-CC1110基础实验
实验1、CC1110-指示灯自动闪烁试验
一、试验目的
通过本试验实现指示灯的自动闪烁,学习单片机IO口编程,实现驱动指示灯。
由上图可知,高电平1时,指示灯熄灭,低电平0时,指示灯亮起。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
将模块插入底板上,连接仿真器和模块,将一条MiniUSB线也连接计算机和仿真器。
如果你还没安装仿真器驱动,请参考以下步骤安装(如果您已安装驱动,则该步骤可以省略)。
1、连接仿真器后,系统提示安装驱动,选择C:
\ProgramFiles\IARSystems\EmbeddedWorkbench5.4\8051\drivers\TexasInstruments,进行默认安装。
2、打开我的电脑-〉设备管理器-〉Cebalcontrolleddevices就可以看到已经安装了设备
3、如果系统没有提示您安装任何驱动,很可能已经安装了SmartRF04EB,这时,您需要更新驱动程序。
步骤如下:
(1)右键点击SmartRF04EB,更新驱动程序
(2)选择“浏览计算机以查找驱动程序软件”
(3)首先选择浏览C:
\ProgramFiles\IARSystems\EmbeddedWorkbench5.4\8051\drivers\TexasInstruments,安装驱动,若更新失败,则参考下图进行。
选择“从计算机的设备程序驱动列表中选择”
三、试验现象
打开工程文件,选择XWWK-CC1110Test.eww,打开工程,然后进行重新编译,如下图:
然后,点击Run,下载并运行程序(后面试验照此法,后略)。
蓝色指示灯快速闪烁。
四、代码分析
//定义控制灯的端口
#defineYLEDP1_0//定义LED1为P10口控制,本模块中YLED为蓝灯
#defineRLEDP1_1//定义LED2为P11口控制,本模块中RLED为红灯
/***************************
//主函数
***************************/
voidmain(void)
{
Initial();//调用初始化函数
YLED=0;//开LED1,参考上图
RLED=0;//开LED2,参考上图
while
(1)
{
YLED=!
YLED;//LED取反
Delay(10000);
}
}
实验2、CC1110-按键控制指示灯试验
一、试验目的
通过本试验实现按键控制指示灯,学习单片机IO口编程,实现检测按键、控制指示灯。
由图可知,端口被上拉,按键按下为低电平,抬起为高电平。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
S1控制红灯,S2控制蓝灯,按键按下,指示灯改变状态。
四、代码分析
#defineK1P0_1//按键s1为P01口
#defineK2P0_5//按键s2P05口
/***************************
//主函数
***************************/
voidmain(void)
{
Initial();//调用初始化函数
InitKey();//按键初始化
RLED=0;//LED1
YLED=1;//LED2
while
(1)
{
Keyvalue=KeyScan();
if(Keyvalue==1)
{
RLED=!
RLED;//S1控制红灯
Keyvalue=0;
}
if(Keyvalue==2)
{
YLED=!
YLED;//S2控制蓝灯
Keyvalue=0;
}
}
}
/*****************************************
//读键值
*****************************************/
ucharKeyScan(void)//采用查询方式检测按键是否被按下,后面的实验还可以通过中断检测按键。
实验3、CC1110-按键控制指示灯闪烁试验
一、试验目的
通过本试验实现按键控制指示灯连续闪烁,学习单片机IO口的控制与编程,实现通过按键、控制指示灯状态。
按键原理可以参考实验2。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
S1控制红灯闪烁,S2控制蓝灯闪烁,按键按下,指示灯连续闪烁,否则关闭。
四、代码分析
/***************************
//主函数
***************************/
voidmain(void)
{
uchari;
Initial();//调用初始化函数
InitKey();
RLED=0;//LED开
YLED=1;//LED关
while
(1)
{
Keyvalue=KeyScan();//键值扫描
if(Keyvalue>0)//按键按下
{
i=Keyvalue-1;
Keyvalue=0;
if(GlintFlag[i]==1)//判断闪烁标志
GlintFlag[i]=0;
else
GlintFlag[i]=1;
};
if(GlintFlag[0]==1)
{
RLED=!
RLED;
Delay(4000);
}
else
RLED=1;
if(GlintFlag[1]==1)
{
YLED=!
YLED;
if(GlintFlag[0]==0)
Delay(4000);
}
else
YLED=1;
}
}
实验4、CC1110-按键中断试验
一、试验目的
通过本试验实现按键中断,初步理解单片机外部中断的逻辑;学习单片机IO口的中断服务程序编写,实现通过按键、控制指示灯状态。
按键原理可以参考实验2。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
S1或者S2控制红灯、蓝灯的状态闪烁。
任意一个按键按下,两个指示灯均改变当前状态,有时候可能改变两次,是因为按键抖动造成的,实际应用中,需要进行软件去抖处理。
四、代码分析
//首先分析一下按键初始化函数,进行了中断的配置
voidInitKey()
{
P0SEL&=~0X22;//P0.1andP0.5用作一般的IO口
P0DIR&=~0X22;//P0.1andP0.5用作输入
P0INP&=~0X22;//P0的中断,有上拉、下拉
P2INP&=~0X20;//选择p0口上拉
PICTL|=0X19;//P0.5和P0.1中断使能,并选择下降沿有效,即按键抬起
P0IFG&=~0x22;//清除中断标志
IEN1|=0X20;//使能P0口中断
}
#pragmavector=P0INT_VECTOR//中断服务程序
__interruptvoidP0_ISR(void)
{
if(P0IFG>0)//检测到按键中断,则置标志位
{
P0IFG=0;//软件清除
RLED=!
RLED;
YLED=!
YLED;
}
P0IF=0;
}
实验5、CC1110-Timer1试验
一、试验目的
通过本试验实现通过Timer1来控制LED的状态,初步理解单片机计数器的工作原理。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
上电运行后,每10次中断两个LED闪烁一轮。
四、代码分析
/****************************
//初始化程序
***************************/
voidInitial(void)
{
//初始化P1
P1DIR=0x03;//P10P11为输出
YLED=1;
RLED=1;//灭LED
//用Timer1来做实验,具体寄存器设置,可参考CC1110Datasheet
T1CTL=0x3d;//通道0,中断有效,128分频;自动重装模式(0x0000->0xffff);
}
/***************************
//主函数
***************************/
voidmain()
{
Initial();//调用初始化函数
YLED=0;//亮起LED
RLED=0;
while
(1)//等待中断
{
if(IRCON>0)//检测到Timer1中断
{
IRCON=0x00;//可不清中断标志,硬件自动完成
if(counter<10)counter++;//10次中断LED闪烁一轮
else
{
counter=0;
}
if(TempFlag)
TempFlag=0;
else
TempFlag=1;
}
if(TempFlag)
{
RLED=!
RLED;
YLED=!
YLED;
Delay(6000);
}
}
}
实验6、CC1110-Timer2试验
一、试验目的
通过本试验实现通过Timer2的中断函数来控制LED的状态,学习单片机计数器中断的工作原理。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
上电运行后,每3次中断,蓝色LED状态改变一次。
四、代码分析
/****************************
//初始化程序
***************************/
voidInitial(void)
{
//初始化P1
P1DIR=0x03;//P10P11为输出
YLED=1;
RLED=1;//灭LED
//用T2来做实验
TIMER2_INIT();
EA=1;//开总中断
IEN1|=0X04;//开T2中断
TIMER2_ENABLE_INTERRUPT();//Timer2中断使能
TIMER2_SET_COUNTER(0x50);//t=T2PR*VAL(T2CTL.TIP)/Timer2的周期.
TIMER2_SET_TICK_PERIOD(0);//设置Timer2的周期
TIMER2_SET_MODE
(1);//设置Timer2的工作模式
}
//以上设置,可以参考CC1110Datasheet的寄存器设置。
/***************************
//主函数
***************************/
voidmain()
{
Initial();//调用初始化函数
YLED=0;//点这红色LED
RLED=1;
while
(1)//等待中断
{
if(TempFlag)//该标志由中断服务程序设置
{
RLED=RLED;
YLED=!
YLED;
TempFlag=0;
Delay(6000);
}
}
}
//Timer2中断服务程序
#pragmavector=T2_VECTOR
__interruptvoidT2_ISR(void)
{
TIMER2_CLEAR_EXPIRED();//清T2CTL寄存器标志位
IRCON=0x00;//可不清中断标志,硬件自动完成
if(counter<3)counter++;//3次中断LED闪烁一轮
else
{
counter=0;//计数清零
TempFlag=!
TempFlag;//改变闪烁标志
}
}
实验6、CC1110-Timer3试验
一、试验目的
通过本试验实现通过Timer3的中断函数来控制LED的状态,每中断200次,更新指示灯的控制标志,学习单片机计数器3中断的工作原理。
二、试验设备
1个CC1110模块,1个底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。
三、试验现象
上电运行后,每200次中断,蓝色LED状态改变一次,实现较快速度闪烁。
四、代码分析
/*****************************************
//T3及LED初始化
*****************************************/
voidInit_T3_AND_LED(void)
{
P1DIR=0X03;
YLED=1;
RLED=1;
TIMER34_INIT(3);//初始化T3
TIMER34_ENABLE_OVERFLOW_INT(3,1);//开T3中断
EA=1;//使能总的中断
T3IE=1;//使能Timer3中断
//T3CTL|=0XA0;//时钟32分频101
TIMER3_SET_CLOCK_DIVIDE(32);//时钟选择
TIMER3_SET_MODE(0);//自动重装00->0xff
T3CC0=0Xf0;//
TIMER3_START
(1);//启动
};
/*****************************************
//主函数
*****************************************/
voidmain(void)
{
Init_T3_AND_LED();
YLED=1;
while
(1);//永远循环,等待中断执行
}
//Timer3中断服务程序
#pragmavector=T3_VECTOR
__interruptvoidT3_ISR(void)
{
IRCON=0x00;//可不清中断标志,硬件自动完成
//RLED=0;//fortest
if(counter<200)counter++;//10次中断LED闪烁一轮
else
{
counter=0;//计数清零
YLED=!
YLED;//改变小灯的状态
}
}
实验8、CC1110-Timer4试验
Timer4与Timer3的操作完全相同,可参考实验6、Timer3实验进行。
实验9、CC1110-串口发送试验
一、试验目的
通过本试验实现单片机串口发送数据到上位机,学习单片机串口发送的设置和工作原理。
二、试验设备
1个CC1110模块,1个CC1110BB底板,1台仿真器、2条MiniUSB线,1根天线(可不用)。
将模块插入底板上,连接仿真器和模块,并将另一条MiniUSB线也连接计算机。
如果你还没安装虚拟USB串口驱动,请参考以下步骤安装。
1、运行PL2303_Prolific_DriverInstaller_v10518.exe(根据您的操作系统,选择合适的驱动程序,这个文件Win7系统安装);
2、一路默认安装;
3、打开我的电脑-〉设备管理器-〉端口,就可以看到已经安装了串口设备
4、串口配置:
串口号COM?
,波特率57600,8位数据,无校验,1位停止位。
三、试验现象
上电运行后,每间隔一段时间,发送"XWWKTestData"到上位机,同时,红色LED状态改变一次。
四、代码分析
/****************************************************************
*函数功能:
初始化串口1
*入口参数:
无
*返回值:
无
*说明:
57600-8-n-1
****************************************************************/
voidinitUARTtest(void)
{
CLKCON&=~0x40;//晶振
while(!
(SLEEP&0x40));//等待晶振稳定
CLKCON&=~0x47;//TICHSPD128分频,CLKSPD不分频
SLEEP|=0x04;//关闭不用的RC振荡器
PERCFG=0x00;//位置1P0口
P0SEL=0x3c;//P0用作串口
U0CSR|=0x80;//UART方式
U0GCR|=11;//baud_e=11;
U0BAUD|=34;//波特率设为57600
UTX0IF=1;发送标志
}
/****************************************************************
*函数功能:
串口发送字符串函数
*入口参数:
data:
数据
*len:
数据长度
*返回值:
无
*说明:
****************************************************************/
voidUartTX_Send_String(uchar*Data,intlen)
{
intj;
for(j=0;j { U0DBUF=*Data++; while(UTX0IF==0);//发送完毕 UTX0IF=0; } } /**************************************************************** *函数功能: 主函数 *入口参数: 无 *返回值: 无 *说明: 无 ****************************************************************/ voidmain(void) { uchartempstr[]="XWWKTestData";//填充数据 //P1out P1DIR=0x03;//P1控制LED YLED=1; RLED=1;//关LED initUARTtest(); while (1) { RLED=1; UartTX_Send_String(tempstr,16);//发送; Delay(50000); RLED=0; Delay(50000); Delay(50000); } } 实验10、CC1110-串口接收试验 Timer4与Timer3的操作完全相同,可参考实验6、Timer3实验进行。 实验11、CC1110-定时器中断试验 一、试验目的 通过本试验实现通过定时器4进入中断服务程序,在中断函数中设置标志位,符合条件后,在主程序中执行相应的任务。 二、试验设备 1个CC1110模块,1个CC1110BB底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。 将模块插入底板上,连接仿真器和模块。 三、试验现象 上电运行后,每间隔一定时间,两个指示灯快速闪烁。 四、代码分析 /***************************************** //T4及LED初始化 *****************************************/ voidInit_T4_AND_LED(void) { P1DIR=0X03; YLED=1; RLED=1; TIMER34_INIT(4);//初始化T4 TIMER34_ENABLE_OVERFLOW_INT(4,1);//开T4中断 EA=1; T4IE=1; //T4CTL|=0XA0;//时钟128分频101 TIMER34_SET_CLOCK_DIVIDE(4,128); TIMER34_SET_MODE(4,0);//自动重装00->0xff T4CC0=0Xf0; TIMER34_START(4,1);//启动 }; /***************************************** //主函数 *****************************************/ voidmain(void) { Init_T4_AND_LED(); while (1) { if(GlintFlag==1) { YLED=! YLED;//改变指示灯的状态 RLED=! RLED; Delay(2000); } }; } //Timer4中断服务函数 #pragmavector=T4_VECTOR __interruptvoidT4_ISR(void) { IRCON=0x00;//可不清中断标志,硬件自动完成 //led2=0;//fortest if(counter<200)counter++;//200次中断LED闪烁一轮 else { counter=0;//计数清零 GlintFlag=! GlintFlag; } } 实验12、CC1110-睡眠定时器试验 一、试验目的 通过本试验了解CC1110单片机睡眠定时器的工作原理,该定时器在低功耗设计中非常有用。 本实验通过睡眠定时器中断唤醒单片机,重新开始工作。 二、试验设备 1个CC1110模块,1个CC1110BB底板,1台仿真器、1条MiniUSB线,1根天线(可不用)。 将模块插入底板上,连接仿真器和模块。 三、试验现象 上电运行后,每间隔一定时间,蓝色指示灯快速闪烁,表示系统已经被唤醒。 四、代码分析 /******************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC1110 基础 实验 说明书