jianghonglei

    1. 谢谢了,真是受益匪浅,嘿嘿:)
    2. 恩 ,谢谢版主,我好好想一想该怎么弄,谢谢指点,嘿嘿:)
    3. 谢谢版主,硬件图确实有问题啊,小弟也是没经验,但是软件方面,对于一定时常的定时器A我可以一直累积吗,在整个程序中我也用的是定时器A的中断
    4. 这是我写的程序,肯定不对啊,找找错误点吧 #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     }
    5. :Cry: 高手指点一下哈,谢谢了
    6. 好心人看一看给小弟一点建议哈,谢谢
    7. 就是通过P2.0和P2.1口控制电机正反转

最近访客

< 1/1 >

统计信息

已有36人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言