打印
[MSP430]

MSP430驱动74HC595

[复制链接]
1875|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jing880311|  楼主 | 2014-2-21 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用MSP430驱动74HC595,下面是主程序,P2.0是串行数据输入,P2.1是RCK,P2.2是SCK,假设的串行输入为01010101,为什么在HC595的并行输出几个脚上测不到电压呢,是串行数据没进去还是并行数据没出来呢?
void main()
{
  WDTCTL=WDTPW+WDTHOLD;
  Clock_Init();
  unsigned int i = 8;
  P2SEL &= ~ (BIT0+BIT1+BIT2);
  P2DIR |= BIT0+BIT1+BIT2;
  P2OUT &= ~(BIT1+BIT2);
  for (i=0;i<8;i++)
  {

    P2OUT &= ~BIT2;
    if((DATA & BIT0) == BIT0)
      P2OUT |= BIT0;
    else
      P2OUT &= ~BIT0;
    DATA >>= 1;
    P2OUT |= BIT2; // 移位寄存器上升沿脉冲

  }
  P2OUT &= ~ BIT1;     //存储上升沿脉冲
  _NOP();
  P2OUT |=   BIT1;
}



相关帖子

沙发
ningling_21| | 2014-2-21 15:13 | 只看该作者
时序明显不对,参考一下51的程序
void shift_out(uchar g) //移位输出
{
        uchar i;
        uchar dly=5;
        uchar tmp=g;
        for(i=0;i<8;i++)
        {
                if((tmp&0x80)==0x80)
                {
                        DS_out=1;
                }
                else
                {
                        DS_out=0;
                }
                SHCLK=0;                        //移位
                dly=2;
                while(dly--);
                SHCLK=1;
                dly=2;
                while(dly--);
                tmp=tmp<<1;
        }

        STCLK=0;                        //锁存
        dly=5;
        while(dly--);
        STCLK=1;   
}

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
jing880311 + 3
板凳
airwill| | 2014-2-21 19:41 | 只看该作者
RCK(12) 引脚上没有给上升触发信号吧

使用特权

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

本版积分规则

39

主题

73

帖子

0

粉丝