CC2530微处理器接口开发技术——信号灯的设计与实现
本问主要介绍了CC2530处理器的通用输入/输出接口(GPIO),以及GPIO的位操作,理解GPIO的基本原理和功能,最后使用C语言驱动CC2530的GPIO实现对信号灯的控制。
CC2530的GPIO引脚有3个8位端口,分别是端口0,端口1和端口2,分别表示位P0,P1,P2,其中P0和P1是8位端口,而P2只有5位可用,所有端口均可以通过SFR寄存器来进行位寻址和字节寻址。
寄存器PxSEL中的x表示端口0~2,用来设置端口的每个引脚位GPIO(0)或者外部设备输入信号(1),在默认情况下,当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚。
寄存器PxDIR用来改变一个端口引脚的方向,0设置为输入,1设置为输出。
GPIO一般是通过位操作完成寄存器设置的,而常用的位操作符有按位与“&”,按位或“|”,按位取反“~”,按位异或“^”,以及左移“<<”和右移“>>”操作。值得注意的是常使用按位或运算符将一个数据位置1,比如将P0端口方向寄存器的第一位和第二位置1(P0端口的0和1引脚置为输出模式),可以写为P0DIR |= 0x03;常使用按位与“&”将一个数据位置0,比如P0SEL &= ~0x03;,表示将将端口0和1配置位GPIO模式。
通过查看电路图,实现CC2530微处理器开发板上的红灯亮,只需使P0_1为0即可。
驱动程序如下:
#include "iocc2530.h" #define uint unsigned int
#define uchar unsigned char #define Rled P1_1
#define Gled P1_0
#define ON 0
#define OFF 1
#define Key1 P1_4 void delay(uint n){//定义延时函数
uint i, j;
for(i = ; i < n; i++)
for(j = ; j >= ; j--);
}
void key_init(){
P1SEL &= 0x10;//GPIO模式
P1DIR &= 0x10;//输出模式
}
void led_init(){
P1SEL &= ~0x03;//GPIO模式
P1DIR |= 0x03; //输出模式 Rled = OFF;
Gled = OFF;
}
void main()
{
led_init();//led初始化
key_init();//案件初始化
Rled = ON;//打开红灯 while(){
if(Key1 == ON){
delay(); //消抖
if(Key1 == ON){
while(Key1 == ON);//松手检测 Rled = ~Rled;
}
}
}
}
烧写完成后,可以看到绿灯常亮,按键被按下之后红灯改变一次状态,功能完成。
需要思考的是有时按键控制led时不太准确,后者说不太灵敏,从而引入下一节,通过中断使得按键控制led更加准确。
CC2530微处理器接口开发技术——信号灯的设计与实现的更多相关文章
- PHP接口开发加密技术实例原理与例子
下面例子简单讲解PHP接口开发加密技术:如app要请求用户列表,api是“index.php?module=user&action=list”app生成token = md5sum (‘use ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- 【CC2530入门教程-01】CC2530微控制器开发入门基础
[引言] 本系列教程就有关CC2530单片机应用入门基础的实训案例进行分析,主要包括以下6部分的内容:[1]CC2530微控制器开发入门基础.[2]通用I/O端口的输入和输出.[3]外部中断初步应用. ...
- 【接口开发】浅谈 SOAP Webserver 与 Restful Webserver 区别
接口,强大,简单,交互,跨越平台 下面简单阐述这两大接口思想 一 REST: REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性. ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- JAVA智能设备基于OpenGL的3D开发技术 之AABB碰撞检测算法论述
摘要:无论是PC机的3D还是智能设备应用上,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量3D引擎是否完善的标准.现有许多3D碰撞检测算法,其中AABB碰撞检测是一种卓有成效而又经典的检测算 ...
- 转载:.NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
随机推荐
- Linux 防火墙管理及操作
1.关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止fire ...
- 滚动公告--jq
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java 包与类的命名(util、service、tool、dao )区别
util 通用的.与业务无关的,可以独立出来,可供其他项目使用.方法通常是public static,一般无类的属性,如果有,也是public static. service 与某一个业务有关,不是通 ...
- template模板的使用方法
模板 WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用. 定义模板 使用name属性,作为模板的名字.然后在<template/>内定义代码片段 使用模 ...
- IT行业三大定律
1:摩尔定律 该定律由Inter公司创始人戈登摩尔提出,摩尔定律指出:每一年半计算机等IT产品的性能会翻一番:或者说相同性能的产品在一年半后价格会降一半. 表现为:为适应摩尔定律,IT公司必须在较 ...
- 时序扩展的UML状态图的测试用例生成研究
一.基本信息 标题:时序扩展的UML状态图的测试用例生成研究 时间:2014 出版源:西南大学 领域分类:时序扩展:UML状态图:测试用例:需求规格说明:模型 二.研究背景 问题定义:时序扩展的UML ...
- cordova 开发
这个挺好用的, 确实 把一个 Android 和 IOS 的App 给生成了. html为前端, js调用 Java 或 object -C的代码. 加快了开发的进度 在不使用插件的基础上 ,基本实现 ...
- linux和windows共享目录
常用的samba共享 1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没安装直接yum,安装命令:yum install samba 2.创建共享文件夹 mkd ...
- Codeforces Round #425 (Div. 2)
A 题意:给你n根棍子,两个人每次拿m根你,你先拿,如果该谁拿的时候棍子数<m,这人就输,对手就赢,问你第一个拿的人能赢吗 代码: #include<stdio.h>#define ...
- post推送消息时的乱码
URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求 ...