打印

求助关于cd4094级联应用

[复制链接]
5309|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yy温控|  楼主 | 2009-12-16 12:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yy温控 于 2009-12-16 13:08 编辑

我用了两片cd4094级联,下面的是我写的程序。
不知道问什么不能实现级联,望大家指教!
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit STR=P1^2;
sbit CLK=P1^1;
sbit DATA=P1^0;
sbit key=P2^7;
void Out_4094(uchar data1);//CD4094写数据子函数;
void Out_40941(uchar data1);//CD4094写数据子函数;
void main()
{
   
while(1)
{   
     if(key==0)
  {  
  
    Out_40941(0x02);
    Out_4094(0x40);
  }
  else if (key==1)
  {
      Out_40941(0x08);
     Out_4094(0x01);
  }

}         
}
void Out_4094(uchar data1) //写CD4094子函数;
{
  uchar i;
    STR=0;
  for(i=0;i<8;i++)
   {
          if(data1&0x01)
     {
    DATA=1;

     }  
    else
    {
    DATA=0;
    }         
  CLK=0;
      _nop_();
  _nop_();
        _nop_();      //延时;   
  CLK=1;
  data1>>=1;

     }//数据送完;更新显示;
   STR=1;
}
void Out_40941(uchar data1) //写CD4094子函数;
{
  uchar i;
    STR=0 ;
  for(i=0;i<16;i++)
   {
          if(data1&0x01)
     {
    DATA=1;
         
     }  
    else
    {
    DATA=0;
    }         
  CLK=0;
      _nop_();
  _nop_();
        _nop_();      //延时;   
  CLK=1;
  data1>>=1;

     }//数据送完;更新显示;
   STR=1;  
}

4094.JPG (75.21 KB )

4094.JPG

相关帖子

沙发
hotpower| | 2009-12-16 19:34 | 只看该作者
本帖最后由 hotpower 于 2009-12-16 19:35 编辑

以前用过忘了,关键在STB。
再Keil C51时,程序要这样编写:
unsigned char i;
for(i=n;i>0;i--) 这样会产生djnz r7,xxx指令
DATA=data1&0x01;这样编译器会内部优化为rrc a

使用特权

评论回复
板凳
yy温控|  楼主 | 2009-12-19 10:17 | 只看该作者
谢谢,关键确实在STB

使用特权

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

本版积分规则

14

主题

71

帖子

0

粉丝