CC2530编程基础
此程序用到了CC2530的串口,定时器中断,外部中断。
此程序实现功能:
- ZigBee模块上电后LED1亮,LED2灯灭。
- 第一次按下SW1按键并放开,经过5秒后,LED1灭,再经过1秒后LED2亮,然后LED1和LED2能以流水灯的方式进行亮灭:LED1亮—>LED1灭 LED2亮—> LED2灭 LED1亮。
- 第二次按下SW1后LED1和LED2全亮。
- 再一次按下SW1时能重复(2)和(3)的要求。
- SW1按键采用中断的方式进行编程,上拉输入模式。
- 定时时间采用定时器1来控制,自由模式,8分频。。
- ZigBee模块上连接的人体传感器,每隔2秒把人体传感数据通过串口发送出去,格式为:“有人” 或 “无人”,串口波特率为19200。
#include <ioCC2530.h> #define LED1 P1_0 #define LED2 P1_1 #define SW1 P1_2 unsigned char Key_Count;//按键次数 unsigned char LED_Mode; unsigned int Timer1_Count1;//定时器计时1 unsigned int Timer1_Count2;//定时器计时2 void initial_gpio()//初始化GPIO {P1SEL&=~0x07;//设置P1_0,P1_1,P1_2通用I/O功能P1DIR|=0x03;//设置P1_0,P1_1输出P1DIR&=~0x04;//设置P1_2输入P1=0x00;//关闭LED灯P1INP&=~0x04;//设置P1_2"上拉/下拉"模式P2INP&=~0x40;//设置P1"上拉"输入 } void initial_interrupt()//初始化外部中断 {IEN2|=0x10;//使能P1中断源P1IEN|=0x04;//使能P1_2中断PICTL|=0x02;//P1_2中断下降沿触发EA=1;//使能总中断 } #pragma vector=P1INT_VECTOR//P1外部中断入口地址 __interrupt void P1_ISR(void)//P1外部中断服务函数 {if(P1IFG&0x04)//判断来自P1_2的外部中断{Key_Count++;//按键次数自加if(Key_Count>2)Key_Count=1;if(Key_Count==1)//按键第一次按下LED_Mode=1;if(Key_Count==2)//按键第二次按下{LED_Mode=0;//LED灯流水灯模式Timer1_Count1=0;//定时器计时1清零Timer1_Count2=0;//定时器计时2清零LED1=1;LED2=1;} }P1IFG=0x00;//清除P1_2中断标志P1IF=0x00;//清除P1外部中断标志 } void initial_t1()//初始化定时器1 {CLKCONCMD&=~0x7F;//设置晶振32MHzwhile(CLKCONSTA&0x40);//等待晶振稳定T1CTL=0x05;//启动定时器1,自由运行模式,8分频;0.016s中断一次TIMIF|=0x40;//使能T1溢出中断T1IE=1;//使能T1中断EA=1;//使能总中断 } #pragma vector=T1_VECTOR//定时器1中断入口地址 __interrupt void T1_ISR(void)//T1中断服务函数 {//IRCON=0x00;//清中断标志位,硬件自动清零,可省略if(LED_Mode==1){Timer1_Count1++;if(Timer1_Count1>312)//计时5s到{Timer1_Count1=0;//定时器计时1清零LED1=0;LED_Mode=2;} }if(LED_Mode==2){Timer1_Count2++;if(Timer1_Count2==62)//计时1s到{LED1=1;LED2=0;}if(Timer1_Count2==124)//计时2s到{Timer1_Count2=0;//定时器计时2清零LED1=0;LED2=1;} } } void initial_usart_tx()//初始化UART0 {CLKCONCMD&=~0x7F;//设置晶振32MHzwhile(CLKCONSTA&0x40);//等待晶振稳定CLKCONCMD&=~0x47;//设置系统主时钟频率32MHzPERCFG=0x00;//USART0 使用备用位置1 TX-P0_3 RX-P0_2P0SEL|=0x3c;//设置P0_2,P0_3;P0_4,P0_5用于外设功能P2DIR&=~0xC0;//P0优先作为UART方式U0CSR=0x80;//设置UART模式U0GCR=9;U0BAUD=59;//波特率19200UTX0IF=0;//清除UART0 TXz中断标志 } void uart_tx_string(char *data_tx,int len)//串口发送字符串函数 {unsigned int j;for(j=0;j<len;j++){U0DBUF=*data_tx++;while(UTX0IF==0);//等待发送完成UTX0IF=0;} } void delay(unsigned int time)//MS级延时函数 {unsigned int i,j;for(i=0;i<time*2;i++){for(j=0;j<480;j++){asm("NOP");asm("NOP");asm("NOP");}} } int main() {CLKCONCMD&=~0x7F;while(CLKCONSTA&=0x40);initial_gpio();initial_interrupt();initial_t1();initial_usart_tx();LED1=1;LED2=0;while(1){delay(2000);if(!P0_1)//人体传感器检测到人会输出低电平uart_tx_string("有人!\n",sizeof("有人!\n"));else uart_tx_string("没有人!\n",sizeof("没有人!\n"));} }
CC2530编程基础相关推荐
- 关于介绍编程前景的html文档,HTML编程基础稿件(32页)-原创力文档
* * 第2章 HTML编程基础 优选文档 * 内容提要 本章首先介绍HTML的发展历史,然后介绍HTML的基本框架 详细介绍了HTML的各种常用标记:文字标记.图片标记和超级链接标记,等等. 介绍C ...
- QT开发(五十)——QT串口编程基础
QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...
- 编程基础 垃圾回收_为什么我回收编程问题
编程基础 垃圾回收 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 为什么我回收编程问题 (Why I Recycle Programming Problems) M ...
- Python要了解哪些编程基础 如何学Python比较好
Python要了解哪些编程基础?如何学Python比较好?不管怎么说,Python都是大家进军IT行业值得选择的语言.毕竟它不但使用,而且还好用.更值得一提的是,它非常容易入门.而且在人工智能.传统编 ...
- (2)神经网络编程基础
文章目录 神经网络编程基础 2.1 二分分类 2.2 logistic 回归(logistic Regression) 2.3 logistic 回归损失函数 损失函数 (Loss (Error)Fu ...
- python 舍去小数_零基础小白Python入门必看——编程基础概念
1. 程序的构成 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py 模块由语句构成 语句是python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 2. 对象 ...
- linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...
- [.net 面向对象编程基础] (18) 泛型
[.net 面向对象编程基础] (18) 泛型 上一节我们说到了两种数据类型数组和集合,数组是指包含同一类型的多个元素,集合是指.net中提供数据存储和检索的专用类. 数组使用前需要先指定大小,并且检 ...
- python编程基础知识体系_最新版 17 幅思维导图:Python 编程之核心知识体系
原标题:最新版 17 幅思维导图:Python 编程之核心知识体系 导读:本文主要涵盖了 Python 编程的核心知识,展示了一系列思维导图,主要就 Python 核心基础知识进行了细致梳理.无论你是 ...
最新文章
- 开源MongoDB管理工具MongoCola1.20 发布 离开IBM GDC的最后一个版本
- 笨办法学Python——学习笔记1
- GPU高效通信算法-Ring Allreduce
- 计算机导航 骨科 ppt模板,(医学PPT课件)术中即时三维导航在脊柱侧弯矫形的应用...
- 用最简单话概括SSH三框架
- 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结
- 转:程序员每天该做的事
- 刚公布完价格就被骂?这款新机有点惨...
- 6个面的骰子 标上1 2 3 4 5 6 投掷8次 求出现和的概率最大的数 ,就是这8次的和最有可能是多少...
- el-input输入值无法在输入框显示
- 区块链项目开发区块链应用场景需满足3个
- 什么是OFD格式文档?一文教你读懂OFD格式文档
- 最简单易懂的ios p12证书 和描述文件的创建,IPA上传,最完整的ios上架苹果商店教程
- Affinity笔记:渐变工具
- 近代物理实验 核磁共振的稳态吸收(含数据及参考题)
- web支付开发报错:无效的AppID参数
- 每日一题---摔手机
- 低功耗蓝牙开发权威指南--第三部分 主机 (第9-12章)
- 2018年deepin-wine QQ最完美解决方案
- python爬取京东商品代码_Python简单爬取京东商品列表