打印

430主循环只执行一次

[复制链接]
1394|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
568581185|  楼主 | 2013-4-19 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很奇怪的一个问题。主循环内的语句只执行了一次。相同情况下,51单片机能一直循环执行,求大神指点!!是驱动74HC164芯片的一个小程序
#include <msp430x14x.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#define CLK_SET P1OUT |= BIT0;//串行时钟
#define CLK_CLR P1OUT &= ~BIT0;

#define INPUT_SET P1OUT |= BIT1; //串行数据,接B或者A,这里我们接B
#define INPUT_CLR P1OUT &= ~BIT1;

#define A_SET P1OUT |= BIT2;//悬空的令一端(A或B),这里是A
#define A_CLR P1OUT &= ~BIT2;


/*------------------------------------------------
                   延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main(void)
{
     unsigned char temp;        //作为测试数据
     unsigned char i;
     
     WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT;
     P1DIR = 0XFF;
     P1OUT = 0XFF;
     A_SET;//悬空的一端要置高电平
     for(;;)
     {   
        temp=0x00;            //初始值0
        for(i=0;i<8;i++)
         {
           CLK_CLR;          //上升沿作用
           if(temp&0x01==1)//取最后一位赋值
             INPUT_SET;
           if(temp&0x01==0)
             INPUT_CLR;
           temp>>=1;       //右移
           delay(300);
           CLK_SET;
           delay(30000);
           delay(30000);  //演示有助于观察效果
         }  
      }
}

相关帖子

沙发
gaoyang9992006| | 2013-4-19 17:38 | 只看该作者
恭喜楼主解决问题。俩if在temp==0情况下,只能执行一个

使用特权

评论回复
板凳
568581185|  楼主 | 2013-4-19 18:12 | 只看该作者
gaoyang9992006 发表于 2013-4-19 17:38
恭喜楼主解决问题。俩if在temp==0情况下,只能执行一个

:L:L看来你没有明白啊?本来就只需要执行一个啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:个人淘宝小店:http://shop70915068.taobao.com 邮件:785606460@qq.com

20

主题

955

帖子

4

粉丝