此程序用到了CC2530的串口,定时器中断,外部中断。

此程序实现功能:

  1. ZigBee模块上电后LED1亮,LED2灯灭。
  2. 第一次按下SW1按键并放开,经过5秒后,LED1灭,再经过1秒后LED2亮,然后LED1和LED2能以流水灯的方式进行亮灭:LED1亮—>LED1灭 LED2亮—> LED2灭 LED1亮。
  3. 第二次按下SW1后LED1和LED2全亮。
  4. 再一次按下SW1时能重复(2)和(3)的要求。
  5. SW1按键采用中断的方式进行编程,上拉输入模式。
  6. 定时时间采用定时器1来控制,自由模式,8分频。。
  7. 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编程基础相关推荐

  1. 关于介绍编程前景的html文档,HTML编程基础稿件(32页)-原创力文档

    * * 第2章 HTML编程基础 优选文档 * 内容提要 本章首先介绍HTML的发展历史,然后介绍HTML的基本框架 详细介绍了HTML的各种常用标记:文字标记.图片标记和超级链接标记,等等. 介绍C ...

  2. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

  3. 编程基础 垃圾回收_为什么我回收编程问题

    编程基础 垃圾回收 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 为什么我回收编程问题 (Why I Recycle Programming Problems) M ...

  4. Python要了解哪些编程基础 如何学Python比较好

    Python要了解哪些编程基础?如何学Python比较好?不管怎么说,Python都是大家进军IT行业值得选择的语言.毕竟它不但使用,而且还好用.更值得一提的是,它非常容易入门.而且在人工智能.传统编 ...

  5. (2)神经网络编程基础

    文章目录 神经网络编程基础 2.1 二分分类 2.2 logistic 回归(logistic Regression) 2.3 logistic 回归损失函数 损失函数 (Loss (Error)Fu ...

  6. python 舍去小数_零基础小白Python入门必看——编程基础概念

    1. 程序的构成 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py 模块由语句构成 语句是python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 2. 对象 ...

  7. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf

    Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...

  8. [.net 面向对象编程基础] (18) 泛型

    [.net 面向对象编程基础] (18) 泛型 上一节我们说到了两种数据类型数组和集合,数组是指包含同一类型的多个元素,集合是指.net中提供数据存储和检索的专用类. 数组使用前需要先指定大小,并且检 ...

  9. python编程基础知识体系_最新版 17 幅思维导图:Python 编程之核心知识体系

    原标题:最新版 17 幅思维导图:Python 编程之核心知识体系 导读:本文主要涵盖了 Python 编程的核心知识,展示了一系列思维导图,主要就 Python 核心基础知识进行了细致梳理.无论你是 ...

最新文章

  1. 开源MongoDB管理工具MongoCola1.20 发布 离开IBM GDC的最后一个版本
  2. 笨办法学Python——学习笔记1
  3. GPU高效通信算法-Ring Allreduce
  4. 计算机导航 骨科 ppt模板,(医学PPT课件)术中即时三维导航在脊柱侧弯矫形的应用...
  5. 用最简单话概括SSH三框架
  6. 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结
  7. 转:程序员每天该做的事
  8. 刚公布完价格就被骂?这款新机有点惨...
  9. 6个面的骰子 标上1 2 3 4 5 6 投掷8次 求出现和的概率最大的数 ,就是这8次的和最有可能是多少...
  10. el-input输入值无法在输入框显示
  11. 区块链项目开发区块链应用场景需满足3个
  12. 什么是OFD格式文档?一文教你读懂OFD格式文档
  13. 最简单易懂的ios p12证书 和描述文件的创建,IPA上传,最完整的ios上架苹果商店教程
  14. Affinity笔记:渐变工具
  15. 近代物理实验 核磁共振的稳态吸收(含数据及参考题)
  16. web支付开发报错:无效的AppID参数
  17. 每日一题---摔手机
  18. 低功耗蓝牙开发权威指南--第三部分 主机 (第9-12章)
  19. 2018年deepin-wine QQ最完美解决方案
  20. python爬取京东商品代码_Python简单爬取京东商品列表

热门文章

  1. 笑傲江湖之精忠报国,终于做完了
  2. 微信支付报出 商户订单号重复 错误问题
  3. 使用Python破解维吉尼亚密码
  4. 硬盘无法格式化该怎么办?
  5. 基于Python点餐外卖系统设计与实现 开题报告
  6. ios键盘通知和自定义键盘
  7. selenium之chromedriver与chrome版本映射表(最新版!)
  8. python 拼音汉字和识字,python-pinyin
  9. tradingView--K线图 使用
  10. 国密算法标准官方文档在哪里