这是我写的程序,肯定不对啊,找找错误点吧
#include
#define keyin (P1IN & 0x0f)
typedef unsigned char uchar;
typedef unsigned int uint;
uint temp=0,m=0,flag,x;
void delay(void);
void qiangxi(void);
void ruoxi(void);
/****************主函数****************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
CCTL0 = CCIE; //使能CCR0中断
TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式,8分频
//ACLK时钟频率为32768Hz,8分频后为4096
//所以1秒时间为计数值为4096
P1DIR = 0xf0; //设置P1.0—P1.4口为输入,其余口输出
P2DIR = 0xff; //设置P2口方向为输出
P2OUT = 0x00; //设置P2口输出为低电平
_EINT(); //使能全局中断
while(1)
{
if(keyin != 0x0f) //如果有键被按下
{
delay(); //延时消抖
if(keyin != 0x0f) //再次检测按键状态
{
temp=keyin;
while(keyin != 0x0f); //等待按键被放开
switch(temp) //转换键值
{
case 0x0e: //按键1被按下,减时间
m -=m;
while(m0;m--)
{
for(x=6;x>0;x--)
{
ruoxi();
}
}
case 0x07: //按键4被按下,强洗涤
for(m=m;m>0;m--)
{
for(x=6;x>0;x--)
{
qiangxi();
}
}
default :
break;
}
}
}
}
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
if(flag==1)
P2OUT =0x00,
flag =0;
}
/*******************************************
函数名称:delay
功 能:用于按键消抖的延时
********************************************/
void delay(void)
{
uint tmp;
for(tmp = 12000;tmp > 0;tmp--);
}
/*******************************************
函数名称:qiangxi
功 能:用于控制洗衣机处于强洗涤状态
********************************************/
void qiangxi(void)
{
P2OUT =0x01;
CCR0 =16384,flag=1; //正转4s
CCR0 =4096; //暂停一秒
P2OUT =0x02;
CCR0 =16384,flag=1; //反转4s
CCR0 =4096; //暂停1s
}
/*******************************************
函数名称:ruoxi
功 能:用于控制洗衣机处于弱洗涤状态
********************************************/
void ruoxi(void)
{
P2OUT =0x01;
CCR0 =12288,flag=1; //正转3s
CCR0 =8192; //暂停2秒
P2OUT =0x02;
CCR0 =12288,flag=1; //反转3s
CCR0 =8192; //暂停2s
}