zigbee的入门日记5

zigbee的入门日记5

昨天那个果然是个辣鸡,保险公司终究还是保险公司,耽误时间……

然后还是言归正传,看一下今天的程序。

/**************************************************
功能描述  : 利用中断的方式完成按键亮灯,按下S5时,
LED2与LED3改变亮灭状态,不同于之前的查询方式
***************************************************/

#include<iocc2530.h>                    //日常定义
#define uint unsigned int
#define uchar unsigned char
#define LED2 P0_1
#define LED3 P0_4
#define S5 P0_5

void delay()                             //延时
{
  int i,j;
    for(i=0;i<1000;i++)
      for(j=0;j<20;j++);
}

void io()                               //初始化
{
  P0DIR |=0XFF;                         //选择输出
  //P0INP &=0xDF;                       // 1101 1111 开关P0_5 上下拉模式↓ 没用,等下试试!!!的确不影响……
  P2INP &=0xDF;
  LED2=1;                               //熄灭两灯
  LED3=1;
}

void sw()
{
  EA=1;                                 //总开关
  P0IE=1;                               //组开关
  P0IEN|=0X20;                          //0010 0000 设置3个中断使能标志位,让相应的中断开关合上,不配置就是0,等下试试……emmm,0是中断禁用这个会影响的(脑子抽了吧……)
  PICTL|=0x01;                          //把P0这一组配置成下降沿触发
  P0IE=1;
 }

#pragma vector=P0INT_VECTOR             //中断格式:#pragma vector = 中断向量
__interrupt void zhongduan()            //接着是中断处理程序(函数名可以任意取)
{
  if(P0IFG&0X20)                        //换成S5==0,一样的
  {
    delay();                            //延时去抖动
    if(S5==0)                           //if条件句
    {
      LED2=~LED2;                       //两灯改变状态
      LED3=~LED3;
    }
  }
  P0IFG=0;                              //清零中断标志位,中断后会变1
  P0IF=0;
}

void main()                             //主程序
{
  delay();
  io();
  sw();

  while(1);
}

这算是两天把中断这边给弄了一下吧……明天开始把时钟那边看一下,试着把动态扫描的倒计时整出来~~

2018.3.20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值