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