|
//附件为IIC通信函数,需要添加至iarew430workplace,main.c如下
#include "msp430f5529.h"
#include "IIC.h"
long int a=2019; //定义全局变量a并赋值为2019
int main()
{
WDTCTL = WDTPW+WDTHOLD; //关闭看门狗
LCD_Init(); //oled初始化
P1DIR|=BIT0; //P1.0设置为输出模式
P4DIR|=BIT7; //P4.7设置为输出模式
P2DIR&=~BIT1; //P2.1设置为输入模式
P2IFG&=~BIT1; //清除P2.1中断标志
P2IE|=BIT1; //P2.1开启中断
P2IES=0xff; //P2下降沿触发
P2OUT=0xff;
P2REN=0xff; //配置上拉电阻
P1OUT=0x01; //初始化左边LED点亮
LCD_ShowNum(1,1,a,5,16); //初始化显示2019
__enable_interrupt();
while(1)
{
LCD_ShowNum(1,1,a,5,16);
}
}
#pragma vector=PORT2_VECTOR //固定格式,声明中断向量地址
__interrupt void PORT2_ISR(void)
{ //中断子程序
unsigned int temp;
int i;
for(i=0;i<12000;i++); //延时消抖
if((P2IN&0xff)!=0xff) //如有按键按下
{
temp=P2IFG; //读取中断标志
P2IFG=0x00; //标志位清零
if(temp==0x02) //如果P2.1产生中断
{
a++; //led状态取反,试的时候按第一下灯不亮,按第二下开始才亮灭正常,我的想法是如果这里能使a的值增加1,就实现了按键控制加减
if(a%2==1)
{
P1OUT=0x01;
P4OUT=0x00; //a为奇数,P1.0点亮,P4.7熄灭
}
else if(a%2==0)
{
P1OUT=0x00;
P4OUT=0x80; //a为偶数,P4.7点亮,P1.0熄灭
}
}
}
}
|
|