- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2019—— 2020学年 第二学期
专 业
班 级
学 号
姓 名
日 期
第一页
实验题目
CC2530之按键与LED
实验目的
通过板载按键来控制LED的亮灭
实验内容与步骤
首先,先来查看与LED及按键相关的电路图。?由图可知,当CC2530端口1的0号引脚输出低电平时,LED1将被点亮。当按键S1按下时,端口0的1号引脚将为低电平,抬起时为高电平。?
接下来,先查看与LED(P1_0)配置相关的寄存器。?1. 端口1功能选择寄存器。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。?
第二页
实验内容与步骤
端口1方向选择寄存器。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。
端口1输入模式寄存器。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为上拉/下拉模式,若设置为1,则将相关引脚设为三态模式,其中P1_0和P1_1没有上拉/下拉功能,可以不用配置,默认值都为0。?
再来看看与按键S1(P0_1)配置相关的寄存器。?1. 端口1功能选择寄存器。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为普通的I/O口,若设置为1,则将相关引脚设为外设I/O,默认值都为0。?
端口1方向选择寄存器。这是一个8位的寄存器,对应端口1的8个引脚,将相应位设为0,表示将相应引脚设置为输入引脚,若设置为1,则将相关引脚设为输出引脚,默认值都为0。?
第三页
实验内容与步骤
/**************************************/
/*描述:依次按下按键S1控制LED1的亮和灭
**************************************/
#include ioCC2530.h
#define uint unsigned int
#define uchar unsigned char
//定义控制LED灯的端口
#define LED1 P1_0 //LED1为P1.0口控制
#define KEY1 P0_0 //KEY1为P0.0口控制
//函数声明
void Delayms(uint); //延时函数
void InitLed(void); //初始化LED1
void KeyInit(); //按键初始化
uchar KeyScan(); //按键扫描程序
/****************************
延时函数
*****************************/
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i0;i--)
for(j=587;j0;j--);
}
/****************************
LED初始化函数
*****************************/
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
P1INP |= 0X01; //打开下拉
LED1 = 0; //LED1灯熄灭
}
/****************************
按键初始化函数
*****************************/
void InitKey()
{
P0SEL = ~0X01; //设置P00为普通IO口
P0DIR = ~0X01; //按键在P00 口,设置为输入模式
P0INP = ~0x01; //打开P00上拉电阻,不影响
}
/****************************
按键检测函数
*****************************/
uchar KeyScan(void)
{
if(KEY1==0)
{Delayms(10);
if(KEY1==0)
{
while(!KEY1); //松手检测
return 1;
文档评论(0)