zigbee的入门日记5

zigbee的入门日记5

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

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

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

#include                    //日常定义
#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

你可能感兴趣的:(zigbee)